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