1 /* This file is part of the KDE project
2 Copyright (C) 1999 Simon Hausmann <hausmann@kde.org>
3 (C) 1999 David Faure <faure@kde.org>
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
21 #include "mainwindow.h"
22 #include <kedittoolbar.h>
23 #include <kparts/event.h>
24 #include <kparts/part.h>
25 #include <kparts/plugin.h>
26 #include <kcomponentdata.h>
27 #include <kstatusbar.h>
28 #include <khelpmenu.h>
29 #include <kstandarddirs.h>
30 #include <QtGui/QApplication>
31 #include <kxmlguifactory.h>
32 #include <kconfiggroup.h>
38 using namespace KParts
;
42 class MainWindowPrivate
47 m_bShellGUIActivated(false),
55 QPointer
<Part
> m_activePart
;
56 bool m_bShellGUIActivated
;
57 KHelpMenu
*m_helpMenu
;
61 MainWindow::MainWindow( QWidget
* parent
, Qt::WindowFlags f
)
62 : KXmlGuiWindow( parent
, f
), d(new MainWindowPrivate())
64 PartBase::setPartObject( this );
67 MainWindow::MainWindow( QWidget
* parent
, const char *name
, Qt::WindowFlags f
)
68 : KXmlGuiWindow( parent
, f
),d(new MainWindowPrivate())
70 setObjectName( name
);
71 PartBase::setPartObject( this );
74 MainWindow::~MainWindow()
79 void MainWindow::createGUI( Part
* part
)
82 kDebug(1000) << "part=" << part
83 << ( part
? part
->metaObject()->className() : "" )
84 << ( part
? part
->objectName() : "" );
86 KXMLGUIFactory
*factory
= guiFactory();
90 if ( d
->m_activePart
)
93 kDebug(1000) << "deactivating GUI for" << d
->m_activePart
94 << d
->m_activePart
->metaObject()->className()
95 << d
->m_activePart
->objectName();
98 GUIActivateEvent
ev( false );
99 QApplication::sendEvent( d
->m_activePart
, &ev
);
101 factory
->removeClient( d
->m_activePart
);
103 disconnect( d
->m_activePart
, SIGNAL( setWindowCaption( const QString
& ) ),
104 this, SLOT( setCaption( const QString
& ) ) );
105 disconnect( d
->m_activePart
, SIGNAL( setStatusBarText( const QString
& ) ),
106 this, SLOT( slotSetStatusBarText( const QString
& ) ) );
109 if ( !d
->m_bShellGUIActivated
)
111 loadPlugins( this, this, KGlobal::mainComponent() );
113 d
->m_bShellGUIActivated
= true;
118 // do this before sending the activate event
119 connect( part
, SIGNAL( setWindowCaption( const QString
& ) ),
120 this, SLOT( setCaption( const QString
& ) ) );
121 connect( part
, SIGNAL( setStatusBarText( const QString
& ) ),
122 this, SLOT( slotSetStatusBarText( const QString
& ) ) );
124 factory
->addClient( part
);
126 GUIActivateEvent
ev( true );
127 QApplication::sendEvent( part
, &ev
);
130 d
->m_activePart
= part
;
133 void MainWindow::slotSetStatusBarText( const QString
& text
)
135 statusBar()->showMessage( text
);
138 void MainWindow::createShellGUI( bool create
)
140 assert( d
->m_bShellGUIActivated
!= create
);
141 d
->m_bShellGUIActivated
= create
;
144 if ( isHelpMenuEnabled() && !d
->m_helpMenu
)
145 d
->m_helpMenu
= new KHelpMenu( this, componentData().aboutData(), true, actionCollection() );
147 QString f
= xmlFile();
148 setXMLFile( KStandardDirs::locate( "config", "ui/ui_standards.rc", componentData() ) );
150 setXMLFile( f
, true );
153 QString
auto_file( componentData().componentName() + "ui.rc" );
154 setXMLFile( auto_file
, true );
157 GUIActivateEvent
ev( true );
158 QApplication::sendEvent( this, &ev
);
160 guiFactory()->addClient( this );
164 GUIActivateEvent
ev( false );
165 QApplication::sendEvent( this, &ev
);
167 guiFactory()->removeClient( this );
171 void KParts::MainWindow::saveNewToolbarConfig()
173 createGUI(d
->m_activePart
);
174 KConfigGroup
cg(KGlobal::config(), QString());
175 applyMainWindowSettings(cg
);
178 void KParts::MainWindow::configureToolbars()
180 // No difference with base class anymore.
181 KXmlGuiWindow::configureToolbars();
184 #include "mainwindow.moc"