kexi

keximainwindowimpl.h
1/* This file is part of the KDE project
2 Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
3 Copyright (C) 2003-2007 Jaroslaw Staniek <js@iidea.pl>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19*/
20
21#ifndef KEXIMAINWINDOWIMPL_H
22#define KEXIMAINWINDOWIMPL_H
23
24#include <tdemessagebox.h>
25#include "core/keximainwindow.h"
26#include "core/kexiguimsghandler.h"
27
28class KexiProjectData;
29class KexiActionProxy;
30class KMdiChildView;
32
33namespace KexiDB {
34 class Object;
35 class ConnectionData;
36}
37namespace KexiPart {
38 class Info;
39 class Part;
40}
41
45class KEXIMAIN_EXPORT KexiMainWindowImpl : public KexiMainWindow, public KexiGUIMessageHandler
46{
47 TQ_OBJECT
48
49
50 public:
53 virtual ~KexiMainWindowImpl();
54
58 static int create(int argc, char *argv[], TDEAboutData* aboutdata = 0);
59
61 static KexiMainWindowImpl* self() { return dynamic_cast<KexiMainWindowImpl*>(tqApp->mainWidget()); }
62
64 virtual KexiProject *project();
65
67 virtual void registerChild(KexiDialogBase *dlg);
68
71 bool activateWindow(int id);
72
74 bool activateWindow(KexiDialogBase *dlg);
75
78 tristate startup();
79
81 virtual bool userMode() const;
82
86 bool openingAllowed(KexiPart::Item* item, int viewMode);
87
88 virtual bool eventFilter( TQObject *obj, TQEvent * e );
89
91 virtual TQPopupMenu* findPopupMenu(const char *popupName);
92
94 virtual TDEActionPtrList allActions() const;
95
98 virtual KexiDialogBase* currentDialog() const;
99
101
106 virtual int generatePrivateID();
107
109 virtual void readProperties(TDEConfig *config);
110 virtual void saveProperties(TDEConfig *config);
111 virtual void saveGlobalProperties( TDEConfig* sessionConfig );
112
113 public slots:
116 virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
117
119 virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd );
120
122 virtual tristate closeDialog(KexiDialogBase *dlg);
123
128 tristate closeDialog(KexiDialogBase *dlg, bool layoutTaskBar, bool doNotSaveChanges = false);
129
130 virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
131 virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
132
134
140 virtual KexiDialogBase* openObject(KexiPart::Item *item, int viewMode,
141 bool &openingCancelled, TQMap<TQString,TQString>* staticObjectArgs = 0,
142 TQString* errorMessage = 0);
143
145 virtual KexiDialogBase* openObject(const TQCString& mime, const TQString& name,
146 int viewMode, bool &openingCancelled, TQMap<TQString,TQString>* staticObjectArgs = 0);
147
151 virtual tristate closeObject(KexiPart::Item* item);
152
154 virtual tristate saveObject( KexiDialogBase *dlg,
155 const TQString& messageWhenAskingForName = TQString(), bool dontAsk = false );
156
158 virtual tristate getNewObjectInfo( KexiPart::Item *partItem, KexiPart::Part *part,
159 bool& allowOverwriting, const TQString& messageWhenAskingForName = TQString() );
160
162 virtual void highlightObject(const TQCString& mime, const TQCString& name);
163
168 tristate openProject(const KexiProjectData& projectData);
169
180 tristate openProject(const TQString& aFileName, KexiDB::ConnectionData *cdata,
181 const TQString& dbName = TQString(),
182 const TQValueList<KexiProjectData::ObjectInfo>& autoopenObjects = TQValueList<KexiProjectData::ObjectInfo>());
183
190 tristate openProject(const TQString& aFileName,
191 const TQString& fileNameForConnectionData, const TQString& dbName = TQString());
192
197 tristate createProjectFromTemplate(const KexiProjectData& projectData);
198
203 tristate closeProject();
204
207 virtual tristate printItem(KexiPart::Item* item);
208
212
216
219 virtual tristate executeCustomActionForObject(KexiPart::Item* item, const TQString& actionName);
220
221 signals:
224
225 protected:
230 bool initUserMode(KexiProjectData *projectData);
231
236 void initNavigator();
237
238 void initContextHelp();
239
240 void initPropertyEditor();
241
243// virtual void closeEvent(TQCloseEvent *);
244
246 void initActions();
247
249 void initUserActions();
250
252 void restoreSettings();
253
255 void storeSettings();
256
258 void invalidateActions();
259
262 virtual void invalidateSharedActions(TQObject *o);
263
267
272
280
286 KexiProjectData* createBlankProjectData(bool &cancelled, bool confirmOverwrites = true,
287 TQString *shortcutFileName = 0);
288
289 void setWindowMenu(TQPopupMenu *menu);
290
292// TQWidget* focusWindow() const;
293
296 virtual bool acceptsSharedActions(TQObject *w);
297
301 TQWidget* findWindow(TQWidget *w);
302
304 void updateAppCaption();
305
306 void restoreWindowConfiguration(TDEConfig *config);
307 void storeWindowConfiguration(TDEConfig *config);
308
309 virtual bool queryClose();
310 virtual bool queryExit();
311
313 bool switchToViewMode(int viewMode);
314
318 void updateDialogViewGUIClient(KXMLGUIClient *viewClient);
319
322 void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode);
323
326 KexiPart::Part *prevDialogPart, int prevViewMode, KexiPart::Part *curDialogPart, int curViewMode );
327
329 tristate openProjectInExternalKexiInstance(const TQString& aFileName,
330 KexiDB::ConnectionData *cdata, const TQString& dbName);
331
333 tristate openProjectInExternalKexiInstance(const TQString& aFileName,
334 const TQString& fileNameForConnectionData, const TQString& dbName);
335
336 protected slots:
337
340
342 void activeWindowChanged(KMdiChildView *dlg);
343
345 void childClosed(KMdiChildView *dlg);
346
347 void slotPartLoaded(KexiPart::Part* p);
348
349 void slotCaptionForCurrentMDIChild(bool childrenMaximized);
350 void slotNoMaximizedChildFrmLeft(KMdiChildFrm*);
351 void slotLastChildViewClosed();
352 void slotChildViewIsDetachedNow(TQWidget*);
353
355 void createKexiProject(KexiProjectData* new_data);
356
362 KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode,
363 bool &openingCancelled);
364
366 KexiDialogBase* openObjectFromNavigator(KexiPart::Item* item, int viewMode);
367
371 virtual bool newObject( KexiPart::Info *info, bool& openingCancelled );
372
374 bool newObject( KexiPart::Info *info ) {
375 bool openingCancelled;
376 return newObject(info, openingCancelled);
377 }
378
380 KexiDialogBase* openObject(KexiPart::Item *item, int viewMode,
381 TQMap<TQString,TQString>* staticObjectArgs = 0)
382 {
383 bool openingCancelled;
384 return openObject(item, viewMode, openingCancelled, staticObjectArgs);
385 }
386
390 tristate removeObject( KexiPart::Item *item, bool dontAsk = false );
391
395 void renameObject( KexiPart::Item *item, const TQString& _newName, bool &succes );
396
400 virtual void slotObjectRenamed(const KexiPart::Item &item, const TQCString& oldName);
401
402 virtual void fillWindowMenu();
403
405 void invalidateSharedActionsLater();
406
409 void updateReadOnlyState();
410
411 void slotProjectNew();
412 void slotProjectOpen();
413 void slotProjectOpenRecentAboutToShow();
414 void slotProjectOpenRecent(int id);
415 void slotProjectOpenRecentMore();
416 void slotProjectSave();
417 void slotProjectSaveAs();
418 void slotProjectPrint();
419 void slotProjectPrintPreview();
420 void slotProjectPageSetup();
421 void slotProjectProperties();
422 void slotProjectClose();
423 void slotProjectRelations();
424 void slotProjectImportDataTable();
425 void slotProjectExportDataTable();
426 void slotProjectQuit();
427 void slotEditPasteSpecialDataTable();
428 void slotEditCopySpecialDataTable();
429 void slotEditFind();
430 void slotEditFind(bool next);
431 void slotEditFindNext();
432 void slotEditFindPrevious();
433 void slotEditReplace(bool all);
434 void slotEditReplace();
435 void slotEditReplaceNext();
436 void slotEditReplaceAll();
437 void slotViewNavigator();
438 void slotViewMainArea();
439 void slotViewPropertyEditor();
440 void slotViewDataMode();
441 void slotViewDesignMode();
442 void slotViewTextMode();
443 void slotShowSettings();
444 void slotConfigureKeys();
445 void slotConfigureToolbars();
446 void slotToolsProjectMigration();
447 void slotToolsCompactDatabase();
448
450 void slotGetNewStuff();
451
452 void slotTipOfTheDay();
453
455 void importantInfo(bool onStartup);
456 void slotImportantInfo();
457 void slotStartFeedbackAgent();
458
459 void slotOptionsEnableForms(bool show, bool noMessage = false); //temp.
460
461 void slotImportFile();
462 void slotImportServer();
463
465 void slotLastActions();
466
467 virtual void acceptPropertySetEditing();
468
469 virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false,
470 bool preservePrevSelection = true, const TQCString& propertyToSelect = TQCString());
471
473 void slotDirtyFlagChanged(KexiDialogBase*);
474
475 void slotMdiModeHasBeenChangedTo(KMdi::MdiMode);
476
478 virtual void switchToIDEAlMode();
479 void switchToIDEAlMode(bool showMessage);
480 virtual void switchToChildframeMode();
481 void switchToChildframeMode(bool showMessage);
482
488 tristate showProjectMigrationWizard(const TQString& mimeType, const TQString& databaseName,
489 const KexiDB::ConnectionData *cdata = 0);
490
492 void slotPartItemSelectedInNavigator(KexiPart::Item* item);
493
496 tristate executeItem(KexiPart::Item* item);
497
499 tristate exportItemAsDataTable(KexiPart::Item* item);
500
502 tristate copyItemToClipboardAsDataTable(KexiPart::Item* item);
503
506 bool printItem(KexiPart::Item* item, const TQString& titleText);
507
510 bool printItem(KexiPart::Item* item, const KexiSimplePrintingSettings& settings,
511 const TQString& titleText = TQString());
512
517 bool printPreviewForItem(KexiPart::Item* item, const TQString& titleText,
518 bool reload);
519
523 const TQString& titleText = TQString(), bool reload = false);
524
528 tristate printActionForItem(KexiPart::Item* item, PrintActionType action);
529
530 private:
531 class MessageHandler;
532 class Private;
533 Private *d;
534
535 friend class KexiDialogBase;
536};
537
538#endif
539
An interface that acts as proxy for shared actions within the application.
Database specific connection data, e.g. host, port.
Base class for child window of Kexi's main application window.
bool switchToViewMode(int viewMode)
static KexiMainWindowImpl * self()
void createKexiProject(KexiProjectData *new_data)
internal - creates and initializes kexi project
static int create(int argc, char *argv[], TDEAboutData *aboutdata=0)
void initActions()
reimplementation of events
KexiDialogBase * openObjectFromNavigator(KexiPart::Item *item, int viewMode, bool &openingCancelled)
void projectOpened()
Emitted after opening a project, even after slotAutoOpenObjectsLater().
bool initUserMode(KexiProjectData *projectData)
KexiDialogBase * openObject(KexiPart::Item *item, int viewMode, TQMap< TQString, TQString > *staticObjectArgs=0)
For convenience.
void activeWindowChanged(KMdiChildView *dlg)
void childClosed(KMdiChildView *dlg)
void updateCustomPropertyPanelTabs(KexiDialogBase *prevDialog, int prevViewMode)
void updateDialogViewGUIClient(KXMLGUIClient *viewClient)
TQWidget * findWindow(TQWidget *w)
tristate openProjectInExternalKexiInstance(const TQString &aFileName, KexiDB::ConnectionData *cdata, const TQString &dbName)
void slotCaptionForCurrentMDIChild(bool childrenMaximized)
internal
bool newObject(KexiPart::Info *info)
For convenience.
KexiProjectData * createBlankProjectData(bool &cancelled, bool confirmOverwrites=true, TQString *shortcutFileName=0)
virtual tristate closeObject(KexiPart::Item *item)=0
virtual int generatePrivateID()=0
virtual tristate closeDialog(KexiDialogBase *dlg)=0
virtual void propertySetSwitched(KexiDialogBase *dlg, bool force=false, bool preservePrevSelection=true, const TQCString &propertyToSelect=TQCString())=0
virtual void acceptPropertySetEditing()=0
virtual void highlightObject(const TQCString &mime, const TQCString &name)=0
virtual tristate saveObject(KexiDialogBase *dlg, const TQString &messageWhenAskingForName=TQString(), bool dontAsk=false)=0
virtual KexiProject * project()=0
Project data of currently opened project or NULL if no project here yet.
virtual tristate getNewObjectInfo(KexiPart::Item *partItem, KexiPart::Part *part, bool &allowOverwriting, const TQString &messageWhenAskingForName=TQString())=0
virtual tristate printItem(KexiPart::Item *item)=0
virtual bool userMode() const =0
virtual KexiDialogBase * currentDialog() const =0
virtual bool newObject(KexiPart::Info *info, bool &openingCancelled)=0
virtual KexiDialogBase * openObject(KexiPart::Item *item, int viewMode, bool &openingCancelled, TQMap< TQString, TQString > *staticObjectArgs=0, TQString *errorMessage=0)=0
Opens object pointed by item in a view viewMode.
virtual tristate showPageSetupForItem(KexiPart::Item *item)=0
virtual tristate printPreviewForItem(KexiPart::Item *item)=0
virtual tristate executeCustomActionForObject(KexiPart::Item *item, const TQString &actionName)=0
virtual TDEActionPtrList allActions() const =0
virtual void registerChild(KexiDialogBase *dlg)=0
Information about a Kexi Part (plugin).
Information about a single object that can be instantiated using Kexi Part.
The main class for kexi frontend parts like tables, queries, forms and reports.
Definition kexipart.h:66
Kexi project core data member.
A project's main controller.
Definition kexiproject.h:68
virtual bool acceptsSharedActions(TQObject *o)
virtual void invalidateSharedActions(TQObject *o)
Settings data for simple printing engine.
3-state logical type with three values: true, false and cancelled and convenient operators.
Definition tristate.h:100
High-level database connectivity library with database backend drivers.