--Boundary_(ID_yLrokGFc/5kiHgVtl40QiQ) Content-type: Text/Plain; charset=utf-8 Content-transfer-encoding: 7BIT Content-disposition: inline -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Monday 07 June 2004 5:18 pm, David Faure wrote: > On Monday 07 June 2004 23:07, Benjamin Meyer wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > > > On Monday 07 June 2004 2:48 pm, David Faure wrote: > > > On Monday 07 June 2004 20:38, Benjamin Meyer wrote: > > > > Much better and smaller name :) Those changes and I moved the new > > > > functions into KMainWindow in this new patch. > > > > > > You can remove the "TODO modal" ... KEditToolbar _is_ modal (default > > > value true for modal argument to KDialogBase constructor). > > > Ah. But you should use exec() instead of show(). > > > > yes it is modal, but it shouldn't be. Why should it block the > > application? > > Because otherwise you need to take care that it won't pop up twice, so you > need a pointer somewhere and "bring to front" code in case the action > is activated twice. And worse problem: what if the guiFactory is updated > meanwhile, due to plugging/unplugging kparts? Then the open kedittoolbar > will have pointers to deleted actions... This is really a huge nest of > worms, for very little gain (why would you want to keep the dialog open > while using the app? it's not like configuring toolbars is something you do > every 5 minutes). Even "being able to see the changes in the app" is > possible with the Apply button, so there's really no reason why this dialog > should not be modal. Ah, didn't realize there was other ties. Changed to exec() Also Added All to the enum. Other then KNotify (which will be a separate patch) I think this is all done, missing anything? - -Benjamin Meyer - -- Public Key: http://www.csh.rit.edu/~benjamin/public_key.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAxQM21rZ3LTw38vIRAiwvAJ9ppt09C3wzwS/9HHzjtT6Z6htdMgCbB3/m G+7HCGH0NIaGAP7wjru9lUA= =IVJ7 -----END PGP SIGNATURE----- --Boundary_(ID_yLrokGFc/5kiHgVtl40QiQ) Content-type: text/x-diff; charset=utf-8; name=diff Content-transfer-encoding: 7BIT Content-disposition: attachment; filename=diff ? .keditlistbox.h.swp ? .kmainwindow.cpp.swp ? .kmainwindow.h.swp ? diff Index: kmainwindow.cpp =================================================================== RCS file: /home/kde/kdelibs/kdeui/kmainwindow.cpp,v retrieving revision 1.128 diff -u -3 -p -r1.128 kmainwindow.cpp --- kmainwindow.cpp 2 Jun 2004 23:30:56 -0000 1.128 +++ kmainwindow.cpp 8 Jun 2004 00:01:49 -0000 @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include #include @@ -421,6 +423,45 @@ KXMLGUIFactory *KMainWindow::guiFactory( return factory_; } +int KMainWindow::configureToolbars() +{ + saveMainWindowSettings(KGlobal::config()); + KEditToolbar dlg(guiFactory(), this, "KEditToolbar"); + connect(&dlg, SIGNAL(newToolbarConfig()), SLOT(saveNewToolbarConfig())); + dlg.exec(); +} + +void KMainWindow::saveNewToolbarConfig() +{ + createGUI(); + applyMainWindowSettings( KGlobal::config() ); +} + +void KMainWindow::setupGUI( int options ) { + if( options & Keys ){ + KStdAction::keyBindings(guiFactory(), + SLOT(configureShortcuts()), actionCollection()); + } + + if( (options & StatusBar) && internalStatusBar() ){ + createStandardStatusBarAction(); + } + + if( options & ToolBar ){ + setStandardToolBarMenuEnabled( true ); + KStdAction::configureToolbars(this, + SLOT(configureToolbars() ), actionCollection()); + } + + if( options & Save ){ + setAutoSaveSettings(); + } + + if( options & Create ){ + createGUI(); + } +} + void KMainWindow::createGUI( const QString &xmlfile, bool _conserveMemory ) { // disabling the updates prevents unnecessary redraws Index: kmainwindow.h =================================================================== RCS file: /home/kde/kdelibs/kdeui/kmainwindow.h,v retrieving revision 1.101 diff -u -3 -p -r1.101 kmainwindow.h --- kmainwindow.h 1 Jun 2004 16:44:57 -0000 1.101 +++ kmainwindow.h 8 Jun 2004 00:01:50 -0000 @@ -514,6 +514,60 @@ public: */ void createStandardStatusBarAction(); + /** + * @see createStandardWindow() + */ + enum StandardWindowOptions + { + /** + * adds action to show/hide the toolbar(s) and adds + * action to configure the toolbar(s). + * @see setStandardToolBarMenuEnabled + */ + ToolBar = 1, + + /** + * adds action to show the key configure action. + */ + Keys = 2, + + /** + * adds action to show/hide the statusbar if the + * statusbar exists. @see createStandardStatusBarAction + */ + StatusBar = 4, + + /** + * auto-saves the toolbar/menubar/statusbar settings and + * window size using the default name. @see setAutoSaveSettings + */ + Save = 8, + + /** + * calls createGUI() once all of the other options have been + * taken care of. @see createGUI + */ + Create = 16, + + /** + * All of the options, usefull for disabling one item + * KMainWindow::All ^ KMainWindow::ToolBar + */ + All = ToolBar | Keys | StatusBar | Save | Create + }; + + /** + * Configures the current windows and its actions in the typical KDE + * fashion. The options are all enabled by default but can be turned + * off if desired through the params or if the prereqs don't exists. + * + * Typically this function replaces createGUI(). + * + * @see StandardWindowOptions + * + * @since 3.3 + */ + void setupGUI( int options = All ); /** * Returns a pointer to the mainwindows action responsible for the toolbars menu @@ -562,6 +616,20 @@ public: public slots: /** + * Show a standard configure toolbar dialog. + * + * This slot can be connected dirrectly to the action to configure shortcuts. + * This is very simple to do that by adding a single line + * \code + * KStdAction::configureToolbars( guiFactory(), SLOT( configureToolbars() ), + * actionCollection() ); + * \endcode + * + * @since 3.3 + */ + int configureToolbars(); + + /** * Makes a KDE compliant caption. * * @param caption Your caption. @em Do @em not include the application name @@ -810,8 +878,13 @@ protected: void parseGeometry(bool parsewidth); protected slots: - /** + * Stores the new toolbar + * @see configureToolbars() + */ + void saveNewToolbarConfig(); + + /** * This slot does nothing. * * It must be reimplemented if you want --Boundary_(ID_yLrokGFc/5kiHgVtl40QiQ)--