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-2007 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             const QValueList<KexiProjectData::ObjectInfo>& autoopenObjects = QValueList<KexiProjectData::ObjectInfo>());
00182 
00189         tristate openProject(const QString& aFileName, 
00190             const QString& fileNameForConnectionData, const QString& dbName = QString::null);
00191 
00196         tristate createProjectFromTemplate(const KexiProjectData& projectData);
00197 
00202         tristate closeProject();
00203 
00206         virtual tristate printItem(KexiPart::Item* item);
00207 
00210         virtual tristate printPreviewForItem(KexiPart::Item* item);
00211 
00214         virtual tristate showPageSetupForItem(KexiPart::Item* item);
00215 
00218         virtual tristate executeCustomActionForObject(KexiPart::Item* item, const QString& actionName);
00219 
00220     signals:
00222         void projectOpened();
00223 
00224     protected:
00229         bool initUserMode(KexiProjectData *projectData);
00230 
00235         void initNavigator();
00236 
00237         void initContextHelp();
00238 
00239         void initPropertyEditor();
00240 
00242 //      virtual void    closeEvent(QCloseEvent *);
00243 
00245         void initActions();
00246 
00248         void initUserActions();
00249 
00251         void restoreSettings();
00252 
00254         void storeSettings();
00255 
00257         void invalidateActions();
00258 
00261         virtual void invalidateSharedActions(QObject *o);
00262 
00265         void invalidateProjectWideActions();
00266 
00270         void invalidateViewModeActions();
00271 
00278         tristate createBlankProject();
00279 
00285         KexiProjectData* createBlankProjectData(bool &cancelled, bool confirmOverwrites = true, 
00286             QString *shortcutFileName = 0);
00287 
00288         void setWindowMenu(QPopupMenu *menu);
00289 
00291 //      QWidget* focusWindow() const;
00292 
00295         virtual bool acceptsSharedActions(QObject *w);
00296 
00300         QWidget* findWindow(QWidget *w);
00301 
00303         void updateAppCaption();
00304 
00305         void restoreWindowConfiguration(KConfig *config);
00306         void storeWindowConfiguration(KConfig *config);
00307 
00308         virtual bool queryClose();
00309         virtual bool queryExit();
00310 
00312         bool switchToViewMode(int viewMode);
00313 
00317         void updateDialogViewGUIClient(KXMLGUIClient *viewClient);
00318 
00321         void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode);
00322 
00324         void updateCustomPropertyPanelTabs(
00325             KexiPart::Part *prevDialogPart, int prevViewMode, KexiPart::Part *curDialogPart, int curViewMode );
00326 
00328         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00329             KexiDB::ConnectionData *cdata, const QString& dbName);
00330 
00332         tristate openProjectInExternalKexiInstance(const QString& aFileName, 
00333             const QString& fileNameForConnectionData, const QString& dbName);
00334 
00335     protected slots:
00336 
00338         void slotAutoOpenObjectsLater();
00339 
00341         void activeWindowChanged(KMdiChildView *dlg);
00342 
00344         void childClosed(KMdiChildView *dlg);
00345 
00346         void slotPartLoaded(KexiPart::Part* p);
00347 
00348         void slotCaptionForCurrentMDIChild(bool childrenMaximized);
00349         void slotNoMaximizedChildFrmLeft(KMdiChildFrm*);
00350         void slotLastChildViewClosed();
00351         void slotChildViewIsDetachedNow(QWidget*);
00352 
00354         void createKexiProject(KexiProjectData* new_data);
00355 
00361         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode, 
00362             bool &openingCancelled);
00363 
00365         KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode);
00366 
00370         virtual bool newObject( KexiPart::Info *info, bool& openingCancelled );
00371 
00373         bool newObject( KexiPart::Info *info ) {
00374             bool openingCancelled;
00375             return newObject(info, openingCancelled);
00376         }
00377 
00379         KexiDialogBase* openObject(KexiPart::Item *item, int viewMode, 
00380             QMap<QString,QString>* staticObjectArgs = 0)
00381         {
00382             bool openingCancelled;
00383             return openObject(item, viewMode, openingCancelled, staticObjectArgs);
00384         }
00385 
00389         tristate removeObject( KexiPart::Item *item, bool dontAsk = false );
00390 
00394         void renameObject( KexiPart::Item *item, const QString& _newName, bool &succes );
00395 
00399         virtual void slotObjectRenamed(const KexiPart::Item &item, const QCString& oldName);
00400 
00401         virtual void fillWindowMenu();
00402 
00403         void invalidateSharedActions();
00404         void invalidateSharedActionsLater();
00405 
00408         void updateReadOnlyState();
00409 
00410         void slotProjectNew();
00411         void slotProjectOpen();
00412         void slotProjectOpenRecentAboutToShow();
00413         void slotProjectOpenRecent(int id);
00414         void slotProjectOpenRecentMore();
00415         void slotProjectSave();
00416         void slotProjectSaveAs();
00417         void slotProjectPrint();
00418         void slotProjectPrintPreview();
00419         void slotProjectPageSetup();
00420         void slotProjectProperties();
00421         void slotProjectClose();
00422         void slotProjectRelations();
00423         void slotProjectImportDataTable();
00424         void slotProjectExportDataTable();
00425         void slotProjectQuit();
00426         void slotEditPasteSpecialDataTable();
00427         void slotEditCopySpecialDataTable();
00428         void slotEditFind();
00429         void slotEditFind(bool next); 
00430         void slotEditFindNext();
00431         void slotEditFindPrevious();
00432         void slotEditReplace(bool all); 
00433         void slotEditReplace();
00434         void slotEditReplaceNext();
00435         void slotEditReplaceAll();
00436         void slotViewNavigator();
00437         void slotViewMainArea();
00438         void slotViewPropertyEditor();
00439         void slotViewDataMode();
00440         void slotViewDesignMode();
00441         void slotViewTextMode(); 
00442         void slotShowSettings();
00443         void slotConfigureKeys();
00444         void slotConfigureToolbars();
00445         void slotToolsProjectMigration();
00446         void slotToolsCompactDatabase();
00447 
00449         void slotGetNewStuff();
00450 
00451         void slotTipOfTheDay();
00452 
00454         void importantInfo(bool onStartup);
00455         void slotImportantInfo(); 
00456         void slotStartFeedbackAgent();
00457 
00458         void slotOptionsEnableForms(bool show, bool noMessage = false); //temp.
00459 
00460         void slotImportFile();
00461         void slotImportServer();
00462 
00464         void slotLastActions();
00465 
00466         virtual void acceptPropertySetEditing();
00467 
00468         virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false,
00469             bool preservePrevSelection = true, const QCString& propertyToSelect = QCString());
00470 
00472         void slotDirtyFlagChanged(KexiDialogBase*);
00473 
00474         void slotMdiModeHasBeenChangedTo(KMdi::MdiMode);
00475 
00477         virtual void switchToIDEAlMode();
00478         void switchToIDEAlMode(bool showMessage);
00479         virtual void switchToChildframeMode();
00480         void switchToChildframeMode(bool showMessage);
00481 
00487         tristate showProjectMigrationWizard(const QString& mimeType, const QString& databaseName,
00488             const KexiDB::ConnectionData *cdata = 0);
00489 
00491         void slotPartItemSelectedInNavigator(KexiPart::Item* item);
00492 
00495         tristate executeItem(KexiPart::Item* item);
00496 
00498         tristate exportItemAsDataTable(KexiPart::Item* item);
00499 
00501         tristate copyItemToClipboardAsDataTable(KexiPart::Item* item);
00502 
00505         bool printItem(KexiPart::Item* item, const QString& titleText);
00506 
00509         bool printItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
00510             const QString& titleText = QString::null);
00511         
00516         bool printPreviewForItem(KexiPart::Item* item, const QString& titleText, 
00517             bool reload);
00518 
00521         bool printPreviewForItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings, 
00522             const QString& titleText = QString::null, bool reload = false);
00523 
00527         tristate printActionForItem(KexiPart::Item* item, PrintActionType action);
00528 
00529     private:
00530         class MessageHandler;
00531         class Private;
00532         Private *d;
00533 
00534     friend class KexiDialogBase;
00535 };
00536 
00537 #endif
00538 
KDE Home | KDE Accessibility Home | Description of Access Keys