21 #include "guiclient.h"
22 #include "guiclient.moc"
24 #include <tqpopupmenu.h>
25 #include <tdeapplication.h>
26 #include <tdeconfig.h>
27 #include <tdetoolbar.h>
28 #include <tdelocale.h>
29 #include <tdeaction.h>
32 #include <kdockwidget.h>
34 #include "mainwindow.h"
35 #include "toolviewaccessor.h"
36 #include "toolviewaccessor_p.h"
38 static const char *actionListName =
"show_tdemdi_document_tool_view_actions";
40 static const char *guiDescription =
""
41 "<!DOCTYPE kpartgui><kpartgui name=\"KMDIViewActions\">"
43 " <Menu name=\"window\">"
44 " <ActionList name=\"%1\" />"
49 static const char *resourceFileName =
"tdemdiviewactions.rc";
54 GUIClient::GUIClient (KMDI::MainWindow* mdiMainFrm,
const char* name)
55 : TQObject ( mdiMainFrm,name )
56 , KXMLGUIClient ( mdiMainFrm )
58 m_mdiMainFrm=mdiMainFrm;
60 connect( mdiMainFrm->guiFactory(), TQ_SIGNAL( clientAdded( KXMLGUIClient * ) ),
61 this, TQ_SLOT( clientAdded( KXMLGUIClient * ) ) );
69 if ( domDocument().documentElement().isNull() )
71 TQString completeDescription = TQString::fromLatin1( guiDescription ).arg( actionListName );
73 setXML( completeDescription,
false );
76 if (actionCollection()->tdeaccel()==0)
77 actionCollection()->setWidget(mdiMainFrm);
79 m_toolMenu=
new TDEActionMenu(i18n(
"Tool &Views"),actionCollection(),
"tdemdi_toolview_menu");
81 m_gotoToolDockMenu=
new TDEActionMenu(i18n(
"Tool &Docks"),actionCollection(),
"tdemdi_tooldock_menu");
82 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Switch Top Dock"),ALT+CTRL+SHIFT+Key_T,
this,TQ_SIGNAL(toggleTop()),
83 actionCollection(),
"tdemdi_activate_top"));
84 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Switch Left Dock"),ALT+CTRL+SHIFT+Key_L,
this,TQ_SIGNAL(toggleLeft()),
85 actionCollection(),
"tdemdi_activate_left"));
86 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Switch Right Dock"),ALT+CTRL+SHIFT+Key_R,
this,TQ_SIGNAL(toggleRight()),
87 actionCollection(),
"tdemdi_activate_right"));
88 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Switch Bottom Dock"),ALT+CTRL+SHIFT+Key_B,
this,TQ_SIGNAL(toggleBottom()),
89 actionCollection(),
"tdemdi_activate_bottom"));
90 m_gotoToolDockMenu->insert(
new TDEActionSeparator(actionCollection(),
"tdemdi_goto_menu_separator"));
91 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Previous Tool View"),ALT+CTRL+Key_Left,m_mdiMainFrm,TQ_SLOT(prevToolViewInDock()),
92 actionCollection(),
"tdemdi_prev_toolview"));
93 m_gotoToolDockMenu->insert(
new TDEAction(i18n(
"Next Tool View"),ALT+CTRL+Key_Right,m_mdiMainFrm,TQ_SLOT(nextToolViewInDock()),
94 actionCollection(),
"tdemdi_next_toolview"));
96 actionCollection()->readShortcutSettings(
"Shortcuts", kapp->config() );
99 GUIClient::~GUIClient()
102 for (uint i=0;i<m_toolViewActions.count();i++)
103 disconnect(m_toolViewActions.at(i),0,
this,0);
105 m_toolViewActions.setAutoDelete(
false );
106 m_toolViewActions.clear();
107 m_documentViewActions.setAutoDelete(
false );
108 m_documentViewActions.clear();
111 void GUIClient::setupActions()
113 if ( !factory() || !m_mdiMainFrm )
116 unplugActionList( actionListName );
118 TQPtrList<TDEAction> addList;
119 if (m_toolViewActions.count()<3)
121 for (uint i=0;i<m_toolViewActions.count();i++)
122 addList.append(m_toolViewActions.at(i));
125 addList.append(m_toolMenu);
127 addList.append(m_gotoToolDockMenu);
129 kdDebug(760)<<
"GUIClient::setupActions: plugActionList"<<endl;
131 plugActionList( actionListName, addList );
134 void GUIClient::addToolView(KMDI::ToolViewAccessor* mtva)
136 kdDebug(760)<<
"*****void GUIClient::addToolView(KMDI::ToolViewAccessor* mtva)*****"<<endl;
138 TQString aname = TQString(
"tdemdi_toolview_") + mtva->wrappedWidget()->name();
142 TDEConfig *cfg = kapp->config();
143 TQString _grp = cfg->group();
144 cfg->setGroup(
"Shortcuts");
145 sc = TDEShortcut( cfg->readEntry( aname,
"" ) );
146 cfg->setGroup( _grp );
148 TDEAction *a=
new ToggleToolViewAction(i18n(
"Show %1").arg(mtva->wrappedWidget()->caption()),
149 sc,
dynamic_cast<KDockWidget*
>(mtva->wrapperWidget()),
150 m_mdiMainFrm,actionCollection(), aname.latin1() );
152 ((ToggleToolViewAction*)a)->setCheckedState(TQString(i18n(
"Hide %1").arg(mtva->wrappedWidget()->caption())));
154 connect(a,TQ_SIGNAL(destroyed(TQObject*)),
this,TQ_SLOT(actionDeleted(TQObject*)));
156 m_toolViewActions.append(a);
157 m_toolMenu->insert(a);
163 void GUIClient::actionDeleted(TQObject* a)
165 m_toolViewActions.remove(
static_cast<TDEAction*
>(a));
170 void GUIClient::clientAdded( KXMLGUIClient *client )
172 if ( client ==
this )
176 ToggleToolViewAction::ToggleToolViewAction (
const TQString& text,
const TDEShortcut& cut,KDockWidget *dw, KMDI::MainWindow *mdiMainFrm,
177 TQObject* parent,
const char* name )
178 : TDEToggleAction(text,cut,parent,name)
180 , m_mdiMainFrm(mdiMainFrm)
184 connect(
this,TQ_SIGNAL(toggled(
bool)),
this,TQ_SLOT(slotToggled(
bool)));
185 connect(m_dw->dockManager(),TQ_SIGNAL(change()),
this,TQ_SLOT(anDWChanged()));
186 connect(m_dw,TQ_SIGNAL(destroyed()),
this,TQ_SLOT(slotWidgetDestroyed()));
188 setChecked(m_dw->mayBeHide());
192 ToggleToolViewAction::~ToggleToolViewAction()
197 void ToggleToolViewAction::anDWChanged()
199 if (isChecked() && m_dw->mayBeShow())
201 else if ((!isChecked()) && m_dw->mayBeHide())
203 else if (isChecked() && (m_dw->parentDockTabGroup() &&
204 ((::tqt_cast<KDockWidget*>(m_dw->parentDockTabGroup()->
205 parent()))->mayBeShow())))
210 void ToggleToolViewAction::slotToggled(
bool t)
212 if ((!t) && m_dw->mayBeHide() )
215 if ( t && m_dw->mayBeShow() )
216 m_mdiMainFrm->makeDockVisible(m_dw);
219 void ToggleToolViewAction::slotWidgetDestroyed()
221 disconnect(m_dw->dockManager(),TQ_SIGNAL(change()),
this,TQ_SLOT(anDWChanged()));
222 disconnect(
this,TQ_SIGNAL(toggled(
bool)),0,0);