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 
00045 class KEXIMAIN_EXPORT KexiMainWindowImpl : public KexiMainWindow, public KexiGUIMessageHandler
00046 {
00047     Q_OBJECT
00048 
00049     public:
00051         KexiMainWindowImpl();
00052         virtual ~KexiMainWindowImpl();
00053 
00057         static int create(int argc, char *argv[], KAboutData* aboutdata = 0);
00058 
00060         static KexiMainWindowImpl* self() { return dynamic_cast<KexiMainWindowImpl*>(qApp->mainWidget()); }
00061 
00063         virtual KexiProject *project();
00064 
00066         virtual void registerChild(KexiDialogBase *dlg);
00067 
00070         bool activateWindow(int id);
00071 
00073         bool activateWindow(KexiDialogBase *dlg);
00074 
00077         tristate startup();
00078 
00080         virtual bool userMode() const;
00081 
00085         bool openingAllowed(KexiPart::Item* item, int viewMode);
00086 
00087         virtual bool eventFilter( QObject *obj, QEvent * e );
00088 
00090         virtual QPopupMenu* findPopupMenu(const char *popupName);
00091 
00093         virtual KActionPtrList allActions() const;
00094 
00097         virtual KexiDialogBase* currentDialog() const;
00098 
00100 
00105         virtual int generatePrivateID();
00106 
00108         virtual void readProperties(KConfig *config);
00109         virtual void saveProperties(KConfig *config);
00110         virtual void saveGlobalProperties( KConfig* sessionConfig );
00111 
00112     public slots:
00115         virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
00116 
00118         virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd );
00119 
00121         virtual tristate closeDialog(KexiDialogBase *dlg);
00122 
00127         tristate closeDialog(KexiDialogBase *dlg, bool layoutTaskBar, bool doNotSaveChanges = false);
00128 
00129         virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
00130         virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
00131 
00133 
00139         virtual KexiDialogBase* openObject(KexiPart::Item *item, int viewMode, 
00140             bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0,
00141             QString* errorMessage = 0);
00142 
00144         virtual KexiDialogBase* openObject(const QCString& mime, const QString& name, 
00145             int viewMode, bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0);
00146 
00150         virtual tristate closeObject(KexiPart::Item* item);
00151 
00153         virtual tristate saveObject( KexiDialogBase *dlg,
00154             const QString& messageWhenAskingForName = QString::null, bool dontAsk = false );
00155 
00157         virtual tristate getNewObjectInfo( KexiPart::Item *partItem, KexiPart::Part *part, 
00158             bool& allowOverwriting, const QString& messageWhenAskingForName = QString::null );
00159 
00161         virtual void highlightObject(const QCString& mime, const QCString& name);
00162 
00167         tristate openProject(const KexiProjectData& projectData);
00168 
00179         tristate openProject(const QString& aFileName, KexiDB::ConnectionData *cdata, 
00180             const QString& dbName = QString::null);
00181 
00188         tristate openProject(const QString& aFileName, 
00189             const QString& fileNameForConnectionData, const QString& dbName = QString::null);
00190 
00195         tristate closeProject();
00196 
00199         virtual tristate printItem(KexiPart::Item* item);
00200 
00203         virtual tristate printPreviewForItem(KexiPart::Item* item);
00204 
00207         virtual tristate showPageSetupForItem(KexiPart::Item* item);
00208 
00211         virtual tristate executeCustomActionForObject(KexiPart::Item* item, const QString& actionName);
00212 
00213     signals:
00215         void projectOpened();
00216 
00217     protected:
00222         bool initUserMode(KexiProjectData *projectData);
00223 
00228         void initNavigator();
00229 
00230         void initContextHelp();
00231 
00232         void initPropertyEditor();
00233 
00235 //      virtual void    closeEvent(QCloseEvent *);
00236 
00238         void initActions();
00239 
00241         void initUserActions();
00242 
00244         void restoreSettings();
00245 
00247         void storeSettings();
00248 
00250         void invalidateActions();
00251 
00254         virtual void invalidateSharedActions(QObject *o);
00255 
00258         void invalidateProjectWideActions();
00259 
00263         void invalidateViewModeActions();
00264 
00271         tristate createBlankProject();
00272 
00278         KexiProjectData* createBlankProjectData(bool &cancelled, bool confirmOverwrites = true, 
00279             QString *shortcutFileName = 0);
00280 
00281         void setWindowMenu(QPopupMenu *menu);
00282 
00284 //      QWidget* focusWindow() const;
00285 
00288         virtual bool acceptsSharedActions(QObject *w);
00289 
00293         QWidget* findWindow(QWidget *w);
00294 
00296         void updateAppCaption();
00297 
00298         void restoreWindowConfiguration(KConfig *config);
00299         void storeWindowConfiguration(KConfig *config);
00300 
00301         virtual bool queryClose();
00302         virtual bool queryExit();
00303 
00305         bool switchToViewMode(int viewMode);
00306 
00310         void updateDialogViewGUIClient(KXMLGUIClient *viewClient);
00311 
00314         void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode);
00315 
00317         void updateCustomPropertyPanelTabs(
00318             KexiPart::Part *prevDialogPart, int prevViewMode, KexiPart::Part *curDialogPart, int curViewMode );
00319 
00321         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00322             KexiDB::ConnectionData *cdata, const QString& dbName);
00323 
00325         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00326             const QString& fileNameForConnectionData, const QString& dbName);
00327 
00328     protected slots:
00329 
00331         void slotAutoOpenObjectsLater();
00332 
00334         void activeWindowChanged(KMdiChildView *dlg);
00335 
00337         void childClosed(KMdiChildView *dlg);
00338 
00339         void slotPartLoaded(KexiPart::Part* p);
00340 
00341         void slotCaptionForCurrentMDIChild(bool childrenMaximized);
00342         void slotNoMaximizedChildFrmLeft(KMdiChildFrm*);
00343         void slotLastChildViewClosed();
00344         void slotChildViewIsDetachedNow(QWidget*);
00345 
00347         void createKexiProject(KexiProjectData* new_data);
00348 
00354         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode, 
00355             bool &openingCancelled);
00356 
00358         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode);
00359 
00363         virtual bool newObject( KexiPart::Info *info, bool& openingCancelled );
00364 
00366         bool newObject( KexiPart::Info *info ) {
00367             bool openingCancelled;
00368             return newObject(info, openingCancelled);
00369         }
00370 
00372         KexiDialogBase* openObject(KexiPart::Item *item, int viewMode, 
00373             QMap<QString,QString>* staticObjectArgs = 0)
00374         {
00375             bool openingCancelled;
00376             return openObject(item, viewMode, openingCancelled, staticObjectArgs);
00377         }
00378 
00382         tristate removeObject( KexiPart::Item *item, bool dontAsk = false );
00383 
00387         void renameObject( KexiPart::Item *item, const QString& _newName, bool &succes );
00388 
00392         virtual void slotObjectRenamed(const KexiPart::Item &item, const QCString& oldName);
00393 
00394         virtual void fillWindowMenu();
00395 
00396         void invalidateSharedActions();
00397         void invalidateSharedActionsLater();
00398 
00401         void updateReadOnlyState();
00402 
00403         void slotProjectNew();
00404         void slotProjectOpen();
00405         void slotProjectOpenRecentAboutToShow();
00406         void slotProjectOpenRecent(int id);
00407         void slotProjectOpenRecentMore();
00408         void slotProjectSave();
00409         void slotProjectSaveAs();
00410         void slotProjectPrint();
00411         void slotProjectPrintPreview();
00412         void slotProjectPageSetup();
00413         void slotProjectProperties();
00414         void slotProjectClose();
00415         void slotProjectRelations();
00416         void slotProjectImportDataTable();
00417         void slotProjectExportDataTable();
00418         void slotProjectQuit();
00419         void slotEditPasteSpecialDataTable();
00420         void slotEditCopySpecialDataTable();
00421         void slotViewNavigator();
00422         void slotViewMainArea();
00423         void slotViewPropertyEditor();
00424         void slotViewDataMode();
00425         void slotViewDesignMode();
00426         void slotViewTextMode(); 
00427         void slotShowSettings();
00428         void slotConfigureKeys();
00429         void slotConfigureToolbars();
00430         void slotToolsProjectMigration();
00431         void slotToolsCompactDatabase();
00432 
00434         void slotGetNewStuff();
00435 
00436         void slotTipOfTheDay();
00437 
00439         void importantInfo(bool onStartup);
00440         void slotImportantInfo(); 
00441         void slotStartFeedbackAgent();
00442 
00443         void slotOptionsEnableForms(bool show, bool noMessage = false); //temp.
00444 
00445         void slotImportFile();
00446         void slotImportServer();
00447 
00449         void slotLastActions();
00450 
00451         virtual void acceptPropertySetEditing();
00452 
00453         virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false,
00454             bool preservePrevSelection = true, const QCString& propertyToSelect = QCString());
00455 
00457         void slotDirtyFlagChanged(KexiDialogBase*);
00458 
00459         void slotMdiModeHasBeenChangedTo(KMdi::MdiMode);
00460 
00462         virtual void switchToIDEAlMode();
00463         void switchToIDEAlMode(bool showMessage);
00464         virtual void switchToChildframeMode();
00465         void switchToChildframeMode(bool showMessage);
00466 
00472         tristate showProjectMigrationWizard(const QString& mimeType, const QString& databaseName,
00473             const KexiDB::ConnectionData *cdata = 0);
00474 
00476         void slotPartItemSelectedInNavigator(KexiPart::Item* item);
00477 
00480         tristate executeItem(KexiPart::Item* item);
00481 
00483         tristate exportItemAsDataTable(KexiPart::Item* item);
00484 
00486         tristate copyItemToClipboardAsDataTable(KexiPart::Item* item);
00487 
00490         bool printItem(KexiPart::Item* item, const QString& titleText);
00491 
00494         bool printItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
00495             const QString& titleText = QString::null);
00496         
00501         bool printPreviewForItem(KexiPart::Item* item, const QString& titleText, 
00502             bool reload);
00503 
00506         bool printPreviewForItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings, 
00507             const QString& titleText = QString::null, bool reload = false);
00508 
00512         tristate printActionForItem(KexiPart::Item* item, PrintActionType action);
00513 
00514     private:
00515         class MessageHandler;
00516         class Private;
00517         Private *d;
00518 
00519     friend class KexiDialogBase;
00520 };
00521 
00522 #endif
00523 
KDE Home | KDE Accessibility Home | Description of Access Keys