00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
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
00093
00094
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
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
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);
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