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
00064 static int create(int argc, char *argv[], KAboutData* aboutdata = 0);
00065
00067 static KexiMainWindowImpl* self() { return dynamic_cast<KexiMainWindowImpl*>(qApp->mainWidget()); }
00068
00070 virtual KexiProject *project();
00071
00073 virtual void registerChild(KexiDialogBase *dlg);
00074
00077 bool activateWindow(int id);
00078
00080 bool activateWindow(KexiDialogBase *dlg);
00081
00082
00085 tristate startup();
00086
00088 bool inFinalMode() const;
00089
00090 virtual bool eventFilter( QObject *obj, QEvent * e );
00091
00092 virtual QPopupMenu* findPopupMenu(const char *popupName);
00093
00095 virtual KActionPtrList allActions() const;
00096
00099 virtual KexiDialogBase* currentDialog() const;
00100
00104
00105
00106
00112 virtual int generatePrivateID();
00113
00115 virtual void readProperties(KConfig *config);
00116 virtual void saveProperties(KConfig *config);
00117 virtual void saveGlobalProperties( KConfig* sessionConfig );
00118
00119 public slots:
00122 virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
00123
00125 virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd );
00126
00128 virtual tristate closeDialog(KexiDialogBase *dlg);
00129
00134 tristate closeDialog(KexiDialogBase *dlg, bool layoutTaskBar, bool doNotSaveChanges = false);
00135
00136 virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
00137 virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
00138
00143 virtual KexiDialogBase* openObject(KexiPart::Item *item, int viewMode,
00144 bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0);
00145
00147 virtual KexiDialogBase* openObject(const QCString& mime, const QString& name,
00148 int viewMode, bool &openingCancelled, QMap<QString,QString>* staticObjectArgs = 0);
00149
00151 virtual tristate saveObject( KexiDialogBase *dlg,
00152 const QString& messageWhenAskingForName = QString::null, bool dontAsk = false );
00153
00155 virtual tristate getNewObjectInfo( KexiPart::Item *partItem, KexiPart::Part *part,
00156 bool& allowOverwriting, const QString& messageWhenAskingForName = QString::null );
00157
00159 virtual void highlightObject(const QCString& mime, const QCString& name);
00160
00165 tristate openProject(const KexiProjectData& projectData);
00166
00177 tristate openProject(const QString& aFileName, KexiDB::ConnectionData *cdata,
00178 const QString& dbName = QString::null);
00179
00186 tristate openProject(const QString& aFileName,
00187 const QString& fileNameForConnectionData, const QString& dbName = QString::null);
00188
00193 tristate closeProject();
00194
00195 signals:
00197 void projectOpened();
00198
00199 protected:
00204 bool initFinalMode(KexiProjectData *projectData);
00205
00210 void initNavigator();
00211
00212 void initContextHelp();
00213
00214 void initPropertyEditor();
00215
00217
00218
00220 void initActions();
00221
00223 void initUserActions();
00224
00226 void restoreSettings();
00227
00229 void storeSettings();
00230
00232 void invalidateActions();
00233
00236 virtual void invalidateSharedActions(QObject *o);
00237
00240 void invalidateProjectWideActions();
00241
00245 void invalidateViewModeActions();
00246
00253 tristate createBlankProject();
00254
00260 KexiProjectData* createBlankProjectData(bool &cancelled, bool confirmOverwrites = true,
00261 QString *shortcutFileName = 0);
00262
00263 void setWindowMenu(QPopupMenu *menu);
00264
00266
00267
00270 virtual bool acceptsSharedActions(QObject *w);
00271
00275 QWidget* findWindow(QWidget *w);
00276
00278 void updateAppCaption();
00279
00280 void restoreWindowConfiguration(KConfig *config);
00281 void storeWindowConfiguration(KConfig *config);
00282
00283 virtual bool queryClose();
00284 virtual bool queryExit();
00285
00287 bool switchToViewMode(int viewMode);
00288
00292 void updateDialogViewGUIClient(KXMLGUIClient *viewClient);
00293
00296 void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode);
00297
00299 void updateCustomPropertyPanelTabs(
00300 KexiPart::Part *prevDialogPart, int prevViewMode, KexiPart::Part *curDialogPart, int curViewMode );
00301
00303 tristate openProjectInExternalKexiInstance(const QString& aFileName,
00304 KexiDB::ConnectionData *cdata, const QString& dbName);
00305
00307 tristate openProjectInExternalKexiInstance(const QString& aFileName,
00308 const QString& fileNameForConnectionData, const QString& dbName);
00309
00310 protected slots:
00311
00313 void slotAutoOpenObjectsLater();
00314
00316 void activeWindowChanged(KMdiChildView *dlg);
00317
00319 void childClosed(KMdiChildView *dlg);
00320
00321 void slotPartLoaded(KexiPart::Part* p);
00322
00323 void slotCaptionForCurrentMDIChild(bool childrenMaximized);
00324 void slotNoMaximizedChildFrmLeft(KMdiChildFrm*);
00325 void slotLastChildViewClosed();
00326 void slotChildViewIsDetachedNow(QWidget*);
00327
00329 void createKexiProject(KexiProjectData* new_data);
00330
00336 KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode,
00337 bool &openingCancelled);
00338
00340 KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode);
00341
00342 bool newObject( KexiPart::Info *info );
00343
00345 KexiDialogBase* openObject(KexiPart::Item *item, int viewMode,
00346 QMap<QString,QString>* staticObjectArgs = 0)
00347 {
00348 bool openingCancelled;
00349 return openObject(item, viewMode, openingCancelled, staticObjectArgs);
00350 }
00351
00355 tristate removeObject( KexiPart::Item *item, bool dontAsk = false );
00356
00360 void renameObject( KexiPart::Item *item, const QString& _newName, bool &succes );
00361
00365 virtual void slotObjectRenamed(const KexiPart::Item &item, const QCString& oldName);
00366
00367 virtual void fillWindowMenu();
00368
00369 void invalidateSharedActions();
00370 void invalidateSharedActionsLater();
00371
00374 void updateReadOnlyState();
00375
00376 void slotProjectNew();
00377 void slotProjectOpen();
00378 void slotProjectOpenRecentAboutToShow();
00379 void slotProjectOpenRecent(int id);
00380 void slotProjectOpenRecentMore();
00381 void slotProjectSave();
00382 void slotProjectSaveAs();
00383 void slotProjectPrint();
00384 void slotProjectPrintPreview();
00385 void slotProjectPageSetup();
00386 void slotProjectProperties();
00387 void slotProjectClose();
00388 void slotProjectRelations();
00389 void slotProjectImportDataTable();
00390 void slotProjectExportDataTable();
00391 void slotProjectQuit();
00392 void slotEditPasteSpecialDataTable();
00393 void slotEditCopySpecialDataTable();
00394 void slotViewNavigator();
00395 void slotViewMainArea();
00396 void slotViewPropertyEditor();
00397 void slotViewDataMode();
00398 void slotViewDesignMode();
00399 void slotViewTextMode();
00400 void slotShowSettings();
00401 void slotConfigureKeys();
00402 void slotConfigureToolbars();
00403 void slotToolsProjectMigration();
00404 void slotToolsCompactDatabase();
00405
00407 void slotGetNewStuff();
00408
00409 void slotTipOfTheDay();
00410
00412 void importantInfo(bool onStartup);
00413 void slotImportantInfo();
00414 void slotStartFeedbackAgent();
00415
00416 void slotOptionsEnableForms(bool show, bool noMessage = false);
00417
00418 void slotImportFile();
00419 void slotImportServer();
00420
00422 void slotLastActions();
00423
00424 virtual void acceptPropertySetEditing();
00425
00426 virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false,
00427 bool preservePrevSelection = true, const QCString& propertyToSelect = QCString());
00428
00430 void slotDirtyFlagChanged(KexiDialogBase*);
00431
00432 void slotMdiModeHasBeenChangedTo(KMdi::MdiMode);
00433
00435 virtual void switchToIDEAlMode();
00436 void switchToIDEAlMode(bool showMessage);
00437 virtual void switchToChildframeMode();
00438 void switchToChildframeMode(bool showMessage);
00439
00445 tristate showProjectMigrationWizard(const QString& mimeType, const QString& databaseName,
00446 const KexiDB::ConnectionData *cdata = 0);
00447
00449 void slotPartItemSelectedInNavigator(KexiPart::Item* item);
00450
00453 tristate executeItem(KexiPart::Item* item);
00454
00456 void exportItemAsDataTable(KexiPart::Item* item);
00457
00460 bool printItem(KexiPart::Item* item, const QString& titleText = QString::null);
00461
00464 bool printItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
00465 const QString& titleText = QString::null);
00466
00471 bool printPreviewForItem(KexiPart::Item* item, const QString& titleText = QString::null,
00472 bool reload = false);
00473
00476 bool printPreviewForItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
00477 const QString& titleText = QString::null, bool reload = false);
00478
00481 tristate pageSetupForItem(KexiPart::Item* item);
00482
00485 tristate printActionForItem(KexiPart::Item* item, PrintActionType action);
00486
00487 private:
00488
00489 class MessageHandler;
00490 class Private;
00491 Private *d;
00492
00493 friend class KexiDialogBase;
00494 };
00495
00496 #endif
00497