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
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
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
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);
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