20#include "tdemdiguiclient.h"
21#include "tdemdiguiclient.moc"
23#include <tqpopupmenu.h>
24#include <tdeapplication.h>
26#include <tdetoolbar.h>
27#include <tdemainwindow.h>
33#include <kdockwidget.h>
34#include "tdemdimainfrm.h"
35#include "tdemditoolviewaccessor.h"
36#include "tdemditoolviewaccessor_p.h"
39const char *actionListName =
"show_tdemdi_document_tool_view_actions";
41const char *guiDescription =
""
42 "<!DOCTYPE kpartgui><kpartgui name=\"KMDIViewActions\">"
44 " <Menu name=\"view\">"
45 " <ActionList name=\"%1\" />"
50const char *resourceFileName =
"tdemdiviewactions.rc";
55using namespace KMDIPrivate;
59ToggleToolViewAction::ToggleToolViewAction(
const TQString& text,
const TDEShortcut& cut, KDockWidget *dw,
KMdiMainFrm *mdiMainFrm,
60 TQObject* parent,
const char* name )
61 : TDEToggleAction( text, cut, parent, name ), m_dw( dw ), m_mdiMainFrm( mdiMainFrm )
65 connect(
this, TQ_SIGNAL( toggled(
bool ) ),
this, TQ_SLOT( slotToggled(
bool ) ) );
66 connect( m_dw->dockManager(), TQ_SIGNAL( change() ),
this, TQ_SLOT( anDWChanged() ) );
67 connect( m_dw, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotWidgetDestroyed() ) );
68 setChecked( m_dw->mayBeHide() );
73ToggleToolViewAction::~ToggleToolViewAction()
78void ToggleToolViewAction::anDWChanged()
80 if ( isChecked() && m_dw->mayBeShow() )
82 else if ( ( !isChecked() ) && m_dw->mayBeHide() )
84 else if ( isChecked() && ( m_dw->parentDockTabGroup() &&
85 ( ( ::tqt_cast<KDockWidget*>( m_dw->parentDockTabGroup() ->
86 parent() ) ) ->mayBeShow() ) ) )
91void ToggleToolViewAction::slotToggled(
bool t )
95 if ( ( !t ) && m_dw->mayBeHide() )
98 if ( t && m_dw->mayBeShow() )
99 m_mdiMainFrm->makeDockVisible( m_dw );
104void ToggleToolViewAction::slotWidgetDestroyed()
106 disconnect( m_dw->dockManager(), TQ_SIGNAL( change() ),
this, TQ_SLOT( anDWChanged() ) );
107 disconnect(
this, TQ_SIGNAL( toggled(
bool ) ), 0, 0 );
113KMDIGUIClient::KMDIGUIClient(
KMdiMainFrm* mdiMainFrm,
bool showMDIModeAction,
const char* name ) : TQObject( mdiMainFrm, name ),
114 KXMLGUIClient( mdiMainFrm )
116 m_mdiMode = KMdi::ChildframeMode;
117 m_mdiMainFrm = mdiMainFrm;
118 connect( mdiMainFrm->guiFactory(), TQ_SIGNAL( clientAdded( KXMLGUIClient * ) ),
119 this, TQ_SLOT( clientAdded( KXMLGUIClient * ) ) );
127 if ( domDocument().documentElement().isNull() )
130 TQString completeDescription = TQString::fromLatin1( guiDescription )
131 .arg( actionListName );
133 setXML( completeDescription,
false );
136 if ( actionCollection() ->tdeaccel() == 0 )
137 actionCollection() ->setWidget( mdiMainFrm );
138 m_toolMenu =
new TDEActionMenu( i18n(
"Tool &Views" ), actionCollection(),
"tdemdi_toolview_menu" );
139 if ( showMDIModeAction )
141 m_mdiModeAction =
new TDESelectAction( i18n(
"MDI Mode" ), 0, actionCollection() );
143 modes << i18n(
"&Toplevel Mode" ) << i18n(
"C&hildframe Mode" ) << i18n(
"Ta&b Page Mode" ) << i18n(
"I&DEAl Mode" );
144 m_mdiModeAction->setItems( modes );
145 connect( m_mdiModeAction, TQ_SIGNAL( activated(
int ) ),
this, TQ_SLOT( changeViewMode(
int ) ) );
150 connect( m_mdiMainFrm, TQ_SIGNAL( mdiModeHasBeenChangedTo( KMdi::MdiMode ) ),
151 this, TQ_SLOT( mdiModeHasBeenChangedTo( KMdi::MdiMode ) ) );
153 m_gotoToolDockMenu =
new TDEActionMenu( i18n(
"Tool &Docks" ), actionCollection(),
"tdemdi_tooldock_menu" );
154 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Switch Top Dock" ), ALT + CTRL + SHIFT + Key_T,
this, TQ_SIGNAL( toggleTop() ),
155 actionCollection(),
"tdemdi_activate_top" ) );
156 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Switch Left Dock" ), ALT + CTRL + SHIFT + Key_L,
this, TQ_SIGNAL( toggleLeft() ),
157 actionCollection(),
"tdemdi_activate_left" ) );
158 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Switch Right Dock" ), ALT + CTRL + SHIFT + Key_R,
this, TQ_SIGNAL( toggleRight() ),
159 actionCollection(),
"tdemdi_activate_right" ) );
160 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Switch Bottom Dock" ), ALT + CTRL + SHIFT + Key_B,
this, TQ_SIGNAL( toggleBottom() ),
161 actionCollection(),
"tdemdi_activate_bottom" ) );
162 m_gotoToolDockMenu->insert(
new TDEActionSeparator( actionCollection(),
"tdemdi_goto_menu_separator" ) );
163 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Previous Tool View" ), ALT + CTRL + Key_Left, m_mdiMainFrm, TQ_SLOT( prevToolViewInDock() ),
164 actionCollection(),
"tdemdi_prev_toolview" ) );
165 m_gotoToolDockMenu->insert(
new TDEAction( i18n(
"Next Tool View" ), ALT + CTRL + Key_Right, m_mdiMainFrm, TQ_SLOT( nextToolViewInDock() ),
166 actionCollection(),
"tdemdi_next_toolview" ) );
168 actionCollection() ->readShortcutSettings(
"Shortcuts", tdeApp->config() );
171KMDIGUIClient::~KMDIGUIClient()
175 for ( uint i = 0;i < m_toolViewActions.count();i++ )
176 disconnect( m_toolViewActions.at( i ), 0,
this, 0 );
178 m_toolViewActions.setAutoDelete(
false );
179 m_toolViewActions.clear();
180 m_documentViewActions.setAutoDelete(
false );
181 m_documentViewActions.clear();
184void KMDIGUIClient::changeViewMode(
int id )
189 m_mdiMainFrm->switchToToplevelMode();
192 m_mdiMainFrm->switchToChildframeMode();
195 m_mdiMainFrm->switchToTabPageMode();
198 m_mdiMainFrm->switchToIDEAlMode();
205void KMDIGUIClient::setupActions()
207 if ( !factory() || !m_mdiMainFrm )
216 unplugActionList( actionListName );
229 TQPtrList<TDEAction> addList;
230 if ( m_toolViewActions.count() < 3 )
231 for ( uint i = 0;i < m_toolViewActions.count();i++ )
232 addList.append( m_toolViewActions.at( i ) );
234 addList.append( m_toolMenu );
235 if ( m_mdiMode == KMdi::IDEAlMode )
236 addList.append( m_gotoToolDockMenu );
237 if ( m_mdiModeAction )
238 addList.append( m_mdiModeAction );
239 kdDebug( 760 ) <<
"KMDIGUIClient::setupActions: plugActionList" << endl;
240 plugActionList( actionListName, addList );
247 kdDebug( 760 ) <<
"*****void KMDIGUIClient::addToolView(KMdiToolViewAccessor* mtva)*****" << endl;
249 TQString aname = TQString(
"tdemdi_toolview_" ) + mtva->wrappedWidget() ->name();
253 TDEConfig *cfg = tdeApp->config();
254 TQString _grp = cfg->group();
255 cfg->setGroup(
"Shortcuts" );
257 sc = TDEShortcut( cfg->readEntry( aname,
"" ) );
258 cfg->setGroup( _grp );
259 TDEAction *a =
new ToggleToolViewAction( i18n(
"Show %1" ).arg( mtva->wrappedWidget() ->caption() ),
260 sc,
dynamic_cast<KDockWidget*
>( mtva->wrapperWidget() ),
261 m_mdiMainFrm, actionCollection(), aname.latin1() );
262 ( (
ToggleToolViewAction* ) a ) ->setCheckedState( TQString(i18n(
"Hide %1" ).arg( mtva->wrappedWidget() ->caption() )) );
263 connect( a, TQ_SIGNAL( destroyed( TQObject* ) ),
this, TQ_SLOT( actionDeleted( TQObject* ) ) );
264 m_toolViewActions.append( a );
265 m_toolMenu->insert( a );
271void KMDIGUIClient::actionDeleted( TQObject* a )
273 m_toolViewActions.remove(
static_cast<TDEAction*
>( a ) );
279void KMDIGUIClient::clientAdded( KXMLGUIClient *client )
281 if ( client ==
this )
286void KMDIGUIClient::mdiModeHasBeenChangedTo( KMdi::MdiMode mode )
288 kdDebug( 760 ) <<
"KMDIGUIClient::mdiModeHasBennChangeTo" << endl;
290 if ( m_mdiModeAction )
294 case KMdi::ToplevelMode:
295 m_mdiModeAction->setCurrentItem( 0 );
297 case KMdi::ChildframeMode:
298 m_mdiModeAction->setCurrentItem( 1 );
300 case KMdi::TabPageMode:
301 m_mdiModeAction->setCurrentItem( 2 );
303 case KMdi::IDEAlMode:
304 m_mdiModeAction->setCurrentItem( 3 );
void addToolView(KMdiToolViewAccessor *)
Add a new tool view to this KMDIGUIClient.
Base class for all your special main frames.