kexi

keximainwindowimpl.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
00003    Copyright (C) 2003-2006 Jaroslaw Staniek <js@iidea.pl>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public License
00016    along with this library; see the file COPYING.LIB.  If not, write to
00017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
00019 */
00020 
00021 #ifndef KEXIMAINWINDOWIMPL_H
00022 #define KEXIMAINWINDOWIMPL_H
00023 
00024 #include <kmessagebox.h>
00025 #include "core/keximainwindow.h"
00026 #include "core/kexiguimsghandler.h"
00027 
00028 class KexiProjectData;
00029 class KexiActionProxy;
00030 class KMdiChildView;
00031 class KexiSimplePrintingSettings;
00032 
00033 namespace KexiDB {
00034     class Object;
00035     class ConnectionData;
00036 }
00037 namespace KexiPart {
00038     class Info;
00039     class Part;
00040 }
00041 
00043 enum PrintActionType {
00044     PrintItem,
00045     PreviewItem,
00046     PageSetupForItem
00047 };
00048 
00052 class KEXIMAIN_EXPORT KexiMainWindowImpl : public KexiMainWindow, public KexiGUIMessageHandler
00053 {
00054     Q_OBJECT
00055 
00056     public:
00058         KexiMainWindowImpl();
00059         virtual ~KexiMainWindowImpl();
00060 
00062         virtual KexiProject *project();
00063 
00065         virtual void registerChild(KexiDialogBase *dlg);
00066 
00069         bool activateWindow(int id);
00070 
00072         bool activateWindow(KexiDialogBase *dlg);
00073 
00074 //      void startup(KexiProjectData* pdata);
00077         tristate startup();
00078 
00080         bool inFinalMode() const;
00081 
00082         virtual bool eventFilter( QObject *obj, QEvent * e );
00083 
00084         virtual QPopupMenu* findPopupMenu(const char *popupName);
00085 
00087         virtual KActionPtrList allActions() const;
00088 
00092 //      KexiRelationPart    *relationPart();
00093 
00094 //TODO: move to kexiproject
00100         virtual int generatePrivateID();
00101 
00103         virtual void readProperties(KConfig *config);
00104         virtual void saveProperties(KConfig *config);
00105         virtual void saveGlobalProperties( KConfig* sessionConfig );
00106 
00107     public slots:
00110         virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
00111 
00113         virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd );
00114 
00116         virtual tristate closeDialog(KexiDialogBase *dlg);
00117 
00119         tristate closeDialog(KexiDialogBase *dlg, bool layoutTaskBar);
00120 
00121         virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
00122         virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
00123 
00128         virtual KexiDialogBase* openObject(KexiPart::Item *item, int viewMode, 
00129             bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0);
00130 
00132         virtual KexiDialogBase* openObject(const QCString& mime, const QString& name, 
00133             int viewMode, bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0);
00134 
00136         virtual tristate saveObject( KexiDialogBase *dlg,
00137             const QString& messageWhenAskingForName = QString::null, bool dontAsk = false );
00138 
00140         virtual tristate getNewObjectInfo( KexiPart::Item *partItem, KexiPart::Part *part, 
00141             bool& allowOverwriting, const QString& messageWhenAskingForName = QString::null );
00142 
00144         virtual void highlightObject(const QCString& mime, const QCString& name);
00145 
00146     protected:
00151         bool initFinalMode(KexiProjectData *projectData);
00152 
00157         void initNavigator();
00158 
00159         void initContextHelp();
00160 
00161         void initPropertyEditor();
00162 
00164 //      virtual void    closeEvent(QCloseEvent *);
00165 
00167         void initActions();
00168 
00170         void initUserActions();
00171 
00173         void restoreSettings();
00174 
00176         void storeSettings();
00177 
00179         void invalidateActions();
00180 
00183         virtual void invalidateSharedActions(QObject *o);
00184 
00187         void invalidateProjectWideActions();
00188 
00192         void invalidateViewModeActions();
00193 
00198         tristate openProject(const KexiProjectData& projectData);
00199 
00210         tristate openProject(const QString& aFileName, KexiDB::ConnectionData *cdata, 
00211             const QString& dbName = QString::null);
00212 
00219         tristate openProject(const QString& aFileName, 
00220             const QString& fileNameForConnectionData, const QString& dbName = QString::null);
00221 
00226         tristate closeProject();
00227 
00234         tristate createBlankProject();
00235 
00241         KexiProjectData* createBlankProjectData(bool &cancelled, bool confirmOverwrites = true, 
00242             QString *shortcutFileName = 0);
00243 
00244         void setWindowMenu(QPopupMenu *menu);
00245 
00247 //      QWidget* focusWindow() const;
00248 
00251         virtual bool acceptsSharedActions(QObject *w);
00252 
00256         QWidget* findWindow(QWidget *w);
00257 
00259         void updateAppCaption();
00260 
00261         void restoreWindowConfiguration(KConfig *config);
00262         void storeWindowConfiguration(KConfig *config);
00263 
00264         virtual bool queryClose();
00265         virtual bool queryExit();
00266 
00268         bool switchToViewMode(int viewMode);
00269 
00273         void updateDialogViewGUIClient(KXMLGUIClient *viewClient);
00274 
00277         void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode);
00278 
00280         void updateCustomPropertyPanelTabs(
00281             KexiPart::Part *prevDialogPart, int prevViewMode, KexiPart::Part *curDialogPart, int curViewMode );
00282 
00284         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00285             KexiDB::ConnectionData *cdata, const QString& dbName);
00286 
00288         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00289             const QString& fileNameForConnectionData, const QString& dbName);
00290 
00291     protected slots:
00292 
00294         void slotAutoOpenObjectsLater();
00295 
00297         void activeWindowChanged(KMdiChildView *dlg);
00298 
00300         void childClosed(KMdiChildView *dlg);
00301 
00302         void slotPartLoaded(KexiPart::Part* p);
00303 
00304         void slotCaptionForCurrentMDIChild(bool childrenMaximized);
00305         void slotNoMaximizedChildFrmLeft(KMdiChildFrm*);
00306         void slotLastChildViewClosed();
00307         void slotChildViewIsDetachedNow(QWidget*);
00308 
00310         void createKexiProject(KexiProjectData* new_data);
00311 
00317         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode, 
00318             bool &openingCancelled);
00319 
00321         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode);
00322 
00323         bool newObject( KexiPart::Info *info );
00324 
00326         KexiDialogBase* openObject(KexiPart::Item *item, int viewMode, 
00327             QMap<QString,QString>* staticObjectArgs = 0)
00328         {
00329             bool openingCancelled;
00330             return openObject(item, viewMode, openingCancelled, staticObjectArgs);
00331         }
00332 
00336         tristate removeObject( KexiPart::Item *item, bool dontAsk = false );
00337 
00341         void renameObject( KexiPart::Item *item, const QString& _newName, bool &succes );
00342 
00346         virtual void slotObjectRenamed(const KexiPart::Item &item, const QCString& oldName);
00347 
00348         virtual void fillWindowMenu();
00349 
00350         void invalidateSharedActions();
00351         void invalidateSharedActionsLater();
00352 
00355         void updateReadOnlyState();
00356 
00357         void slotProjectNew();
00358         void slotProjectOpen();
00359         void slotProjectOpenRecentAboutToShow();
00360         void slotProjectOpenRecent(int id);
00361         void slotProjectOpenRecentMore();
00362         void slotProjectSave();
00363         void slotProjectSaveAs();
00364         void slotProjectPrint();
00365         void slotProjectPrintPreview();
00366         void slotProjectPageSetup();
00367         void slotProjectProperties();
00368         void slotProjectClose();
00369         void slotProjectRelations();
00370         void slotProjectImportDataTable();
00371         void slotProjectExportDataTable();
00372         void slotProjectQuit();
00373         void slotEditPasteSpecialDataTable();
00374         void slotEditCopySpecialDataTable();
00375         void slotViewNavigator();
00376         void slotViewPropertyEditor();
00377         void slotViewDataMode();
00378         void slotViewDesignMode();
00379         void slotViewTextMode(); 
00380         void slotShowSettings();
00381         void slotConfigureKeys();
00382         void slotConfigureToolbars();
00383         void slotToolsProjectMigration();
00384 
00386         void slotGetNewStuff();
00387 
00388         void slotTipOfTheDay();
00389 
00391         void importantInfo(bool onStartup);
00392         void slotImportantInfo(); 
00393         void slotStartFeedbackAgent();
00394 
00395         void slotOptionsEnableForms(bool show, bool noMessage = false); //temp.
00396 
00397         void slotImportFile();
00398         void slotImportServer();
00399 
00401         void slotLastActions();
00402 
00403         virtual void acceptPropertySetEditing();
00404 
00405         virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false,
00406             bool preservePrevSelection = true);
00407 
00409         void slotDirtyFlagChanged(KexiDialogBase*);
00410 
00411         void slotMdiModeHasBeenChangedTo(KMdi::MdiMode);
00412 
00414         virtual void switchToIDEAlMode();
00415         void switchToIDEAlMode(bool showMessage);
00416         virtual void switchToChildframeMode();
00417         void switchToChildframeMode(bool showMessage);
00418 
00424         tristate showProjectMigrationWizard(const QString& mimeType, const QString& databaseName,
00425             const KexiDB::ConnectionData *cdata = 0);
00426 
00428         void slotPartItemSelectedInNavigator(KexiPart::Item* item);
00429 
00431         void exportItemAsDataTable(KexiPart::Item* item);
00432 
00435         bool printItem(KexiPart::Item* item, const QString& titleText = QString::null);
00436 
00439         bool printItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
00440             const QString& titleText = QString::null);
00441         
00446         bool printPreviewForItem(KexiPart::Item* item, const QString& titleText = QString::null, 
00447             bool reload = false);
00448 
00451         bool printPreviewForItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings, 
00452             const QString& titleText = QString::null, bool reload = false);
00453 
00456         tristate pageSetupForItem(KexiPart::Item* item);
00457 
00460         tristate printActionForItem(KexiPart::Item* item, PrintActionType action);
00461 
00462     private:
00463 
00464         class MessageHandler;
00465         class Private;
00466         Private *d;
00467 
00468     friend class KexiDialogBase;
00469     friend class Private;
00470 };
00471 
00472 #endif
00473 
KDE Home | KDE Accessibility Home | Description of Access Keys