diff options
Diffstat (limited to 'kdevdesigner/designer/mainwindow.h')
-rw-r--r-- | kdevdesigner/designer/mainwindow.h | 513 |
1 files changed, 513 insertions, 0 deletions
diff --git a/kdevdesigner/designer/mainwindow.h b/kdevdesigner/designer/mainwindow.h new file mode 100644 index 00000000..1b68c14d --- /dev/null +++ b/kdevdesigner/designer/mainwindow.h @@ -0,0 +1,513 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition +** licenses may use this file in accordance with the TQt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about TQt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include "metadatabase.h" +#include "../interfaces/actioninterface.h" // for GCC 2.7.* compatibility +#include "../interfaces/editorinterface.h" +#include "../interfaces/templatewizardiface.h" +#include "../interfaces/languageinterface.h" +#include "../interfaces/filterinterface.h" +#include "../interfaces/interpreterinterface.h" +#include "../interfaces/preferenceinterface.h" +#include "../interfaces/projectsettingsiface.h" +#include "../interfaces/sourcetemplateiface.h" +#include "sourceeditor.h" + +#include <tqaction.h> +#include <tqmainwindow.h> +#include <tqmap.h> +#include <tqguardedptr.h> +#include <tqpluginmanager_p.h> +#include <tqobjectlist.h> + +class TQToolBox; +class PropertyEditor; +class TQWorkspace; +class TQMenuBar; +class FormWindow; +class TQPopupMenu; +class HierarchyView; +class TQCloseEvent; +class Workspace; +class ActionEditor; +class Project; +class OutputWindow; +class TQTimer; +class FindDialog; +struct DesignerProject; +class ReplaceDialog; +class GotoLineDialog; +class SourceFile; +class FormFile; +class TQAssistantClient; +class DesignerAction; + +#if defined(TQ_FULL_TEMPLATE_INSTANTIATION) +#include <tqtoolbar.h> +#else +class TQToolBar; +#endif +class Preferences; + +class KDevDesignerPart; + +class MainWindow : public TQMainWindow +{ + Q_OBJECT + + +public: + enum LineMode { Error, Step, StackFrame }; + + MainWindow( KDevDesignerPart *part, bool asClient, bool single = FALSE, const TQString &plgDir = "/designer" ); + ~MainWindow(); + + HierarchyView *objectHierarchy() const; + Workspace *workspace() const; + PropertyEditor *propertyeditor() const; + ActionEditor *actioneditor() const; + + void resetTool(); + int currentTool() const; + + FormWindow *formWindow(); + + bool unregisterClient( FormWindow *w ); + void editorClosed( SourceEditor *e ); + TQWidget *isAFormWindowChild( TQObject *o ) const; + TQWidget *isAToolBarChild( TQObject *o ) const; + + void insertFormWindow( FormWindow *fw ); + TQWorkspace *qWorkspace() const; + + void popupFormWindowMenu( const TQPoint &gp, FormWindow *fw ); + void popupWidgetMenu( const TQPoint &gp, FormWindow *fw, TQWidget *w ); + + TQPopupMenu *setupNormalHierarchyMenu( TQWidget *parent ); + TQPopupMenu *setupTabWidgetHierarchyMenu( TQWidget *parent, const char *addSlot, const char *removeSlot ); + + FormWindow *openFormWindow( const TQString &fn, bool validFileName = TRUE, FormFile *ff = 0 ); + bool isCustomWidgetUsed( MetaDataBase::CustomWidget *w ); + + void setGrid( const TQPoint &p ); + void setShowGrid( bool b ); + void setSnapGrid( bool b ); + TQPoint grid() const { return grd; } + bool showGrid() const { return sGrid; } + bool snapGrid() const { return snGrid && sGrid; } + + TQString documentationPath() const; + + static MainWindow *self; + + TQString templatePath() const { return templPath; } + + void editFunction( const TQString &func, bool rereadSource = FALSE ); + + bool isPreviewing() const { return previewing; } + + Project *currProject() const { return currentProject; } + + FormWindow *activeForm() const { return lastActiveFormWindow; } + + TemplateWizardInterface* templateWizardInterface( const TQString& className ); + TQStringList sourceTemplates() const; + SourceTemplateInterface* sourceTemplateInterface( const TQString& templ ); + TQUnknownInterface* designerInterface() const { return desInterface; } + TQPtrList<DesignerProject> projectList() const; + TQStringList projectNames() const; + TQStringList projectFileNames() const; + Project *findProject( const TQString &projectName ) const; + void setCurrentProject( Project *pro ); + void setCurrentProjectByFilename( const TQString& proFilename ); + OutputWindow *outputWindow() const { return oWindow; } + void addPreferencesTab( TQWidget *tab, const TQString &title, TQObject *receiver, const char *init_slot, const char *accept_slot ); + void addProjectTab( TQWidget *tab, const TQString &title, TQObject *receiver, const char *init_slot, const char *accept_slot ); + void setModified( bool b, TQWidget *window ); + void functionsChanged(); + void updateFunctionList(); + void updateWorkspace(); + void runProjectPrecondition(); + void runProjectPostcondition( TQObjectList *l ); + + void formNameChanged( FormWindow *fw ); + + int currentLayoutDefaultSpacing() const; + int currentLayoutDefaultMargin() const; + + void saveAllBreakPoints(); + void resetBreakPoints(); + + SourceFile *sourceFile(); + void createNewProject( const TQString &lang ); + + void popupProjectMenu( const TQPoint &pos ); + TQObject *findRealObject( TQObject *o ); + + void setSingleProject( Project *pro ); + bool singleProjectMode() const { return singleProject; } + + void showSourceLine( TQObject *o, int line, LineMode lm ); + + void shuttingDown(); + void showGUIStuff( bool b ); + void setEditorsReadOnly( bool b ); + bool areEditorsReadOnly() const { return editorsReadOnly; } + void toggleSignalHandlers( bool show ); + bool showSignalHandlers() const { return sSignalHandlers; } + void writeConfig(); + + void openProject( const TQString &fn ); + void setPluginDirectory( const TQString &pd ); + TQString pluginDirectory() const { return pluginDir; } + + TQAssistantClient* assistantClient() const { return assistant; } + + void addRecentlyOpenedFile( const TQString &fn ) { addRecentlyOpened( fn, recentlyFiles ); } + + void statusMessage(const TQString &msg); + + //integration + KDevDesignerPart *part() const { return m_part; } + +public slots: + void showProperties( TQObject *w ); + void updateProperties( TQObject *w ); + void showDialogHelp(); + void showDebugStep( TQObject *o, int line ); + void showStackFrame( TQObject *o, int line ); + void showErrorMessage( TQObject *o, int line, const TQString &errorMessage ); + void finishedRun(); + void breakPointsChanged(); + +signals: + void currentToolChanged(); + void hasActiveForm( bool ); + void hasActiveWindow( bool ); + void hasActiveWindowOrProject( bool ); + void hasNonDummyProject( bool ); + void formModified( bool ); + void formWindowsChanged(); + void formWindowChanged(); + void projectChanged(); + void editorChanged(); + +protected: + bool eventFilter( TQObject *o, TQEvent *e ); + void closeEvent( TQCloseEvent *e ); + +public slots: + void fileNew(); + void fileNewDialog(); + void fileNewFile(); + void fileClose(); + void fileQuit(); + void fileCloseProject(); // not visible in menu, called from fileClose + void fileOpen(); + void fileOpen( const TQString &filter, const TQString &extension, const TQString &filename = "" , bool inProject = TRUE ); + bool fileSave(); + bool fileSaveForm(); // not visible in menu, called from fileSave + bool fileSaveProject(); // not visible in menu, called from fileSaveProject + bool fileSaveAs(); + void fileSaveAll(); + void fileCreateTemplate(); + +public slots: + void editUndo(); + void editRedo(); + void editCut(); + void editCopy(); + void editPaste(); + void editDelete(); + void editSelectAll(); + void editLower(); + void editRaise(); + void editAdjustSize(); + void editLayoutHorizontal(); + void editLayoutVertical(); + void editLayoutHorizontalSplit(); + void editLayoutVerticalSplit(); + void editLayoutGrid(); + void editLayoutContainerHorizontal(); + void editLayoutContainerVertical(); + void editLayoutContainerGrid(); + void editBreakLayout(); + void editAccels(); + void editFunctions(); + void editConnections(); + SourceEditor *editSource(); + SourceEditor *editSource( SourceFile *f ); + SourceEditor *openSourceEditor(); + SourceEditor *createSourceEditor( TQObject *object, Project *project, + const TQString &lang = TQString(), + const TQString &func = TQString(), + bool rereadSource = FALSE ); + void editFormSettings(); + void editProjectSettings(); + void editPixmapCollection(); + void editDatabaseConnections(); + void editPreferences(); + + void projectInsertFile(); + + void searchFind(); + void searchIncremetalFindMenu(); + void searchIncremetalFind(); + void searchIncremetalFindNext(); + void searchReplace(); + void searchGotoLine(); + + void previewForm(); + void previewForm( const TQString& ); + + void toolsCustomWidget(); + void toolsConfigure(); + + void helpContents(); + void helpManual(); + void helpAbout(); + void helpAboutQt(); + void helpRegister(); + +private slots: + void activeWindowChanged( TQWidget *w ); + void updateUndoRedo( bool, bool, const TQString &, const TQString & ); + void updateEditorUndoRedo(); + + void toolSelected( TQAction* ); + + void clipboardChanged(); + void selectionChanged(); + + void windowsMenuActivated( int id ); + void setupWindowActions(); + + void createNewTemplate(); + void projectSelected( TQAction *a ); + + void setupRecentlyFilesMenu(); + void setupRecentlyProjectsMenu(); + void recentlyFilesMenuActivated( int id ); + void recentlyProjectsMenuActivated( int id ); + + void emitProjectSignals(); + + void showStartDialog(); + +private: + void setupMDI(); + void setupMenuBar(); + void setupEditActions(); + void setupProjectActions(); + void setupSearchActions(); + void setupToolActions(); + void setupLayoutActions(); + void setupFileActions(); + void setupPreviewActions(); + void setupHelpActions(); + void setupRMBMenus(); + + void setupPropertyEditor(); + void setupHierarchyView(); + void setupWorkspace(); + void setupActionEditor(); + void setupOutputWindow(); + void setupToolbox(); + + void setupActionManager(); + void setupPluginManagers(); + + void enableAll( bool enable ); + + TQWidget* previewFormInternal( TQStyle* style = 0, TQPalette* pal = 0 ); + + void readConfig(); + + void setupRMBProperties( TQValueList<uint> &ids, TQMap<TQString, int> &props, TQWidget *w ); + void handleRMBProperties( int id, TQMap<TQString, int> &props, TQWidget *w ); + void setupRMBSpecialCommands( TQValueList<uint> &ids, TQMap<TQString, int> &commands, TQWidget *w ); + void handleRMBSpecialCommands( int id, TQMap<TQString, int> &commands, TQWidget *w ); + void setupRMBSpecialCommands( TQValueList<uint> &ids, TQMap<TQString, int> &commands, FormWindow *w ); + void handleRMBSpecialCommands( int id, TQMap<TQString, int> &commands, FormWindow *w ); + bool openEditor( TQWidget *w, FormWindow *fw ); + void rebuildCustomWidgetGUI(); + void rebuildCommonWidgetsToolBoxPage(); + void checkTempFiles(); + + void addRecentlyOpened( const TQString &fn, TQStringList &lst ); + + TQString whatsThisFrom( const TQString &key ); + +private slots: + void doFunctionsChanged(); + bool openProjectSettings( Project *pro ); + +private: + struct Tab + { + TQWidget *w; + TQString title; + TQObject *receiver; + const char *init_slot, *accept_slot; + TQ_DUMMY_COMPARISON_OPERATOR( Tab ) + }; + +private: + PropertyEditor *propertyEditor; + HierarchyView *hierarchyView; + Workspace *wspace; + TQWidget *lastPressWidget; + TQWorkspace *qworkspace; + TQMenuBar *menubar; + TQGuardedPtr<FormWindow> lastActiveFormWindow; + bool breakLayout, layoutChilds, layoutSelected; + TQPoint grd; + bool sGrid, snGrid; + bool restoreConfig; + bool backPix; + bool splashScreen; + TQString fileFilter; + + TQMap<TQAction*, Project*> projects; + DesignerAction *actionEditUndo, *actionEditRedo, *actionEditCut, *actionEditCopy, + *actionEditPaste, *actionEditDelete, + *actionEditAdjustSize, + *actionEditHLayout, *actionEditVLayout, *actionEditGridLayout, + *actionEditSplitHorizontal, *actionEditSplitVertical, + *actionEditSelectAll, *actionEditBreakLayout, *actionEditFunctions, *actionEditConnections, + *actionEditLower, *actionEditRaise; + TQAction *actionInsertSpacer; + TQActionGroup *actionGroupTools, *actionGroupProjects; + TQAction* actionPointerTool, *actionConnectTool, *actionOrderTool, *actionBuddyTool; + TQAction* actionCurrentTool; + DesignerAction *actionHelpContents, *actionHelpAbout, *actionHelpAboutTQt, *actionHelpWhatsThis; + DesignerAction *actionHelpManual; +#if defined(TQT_NON_COMMERCIAL) + DesignerAction *actionHelpRegister; +#endif + DesignerAction *actionToolsCustomWidget, *actionEditPreferences; + DesignerAction *actionWindowTile, *actionWindowCascade, *actionWindowClose, *actionWindowCloseAll; + DesignerAction *actionWindowNext, *actionWindowPrevious; + DesignerAction *actionEditFormSettings, *actionEditAccels; + DesignerAction *actionEditSource, *actionNewFile, *actionFileSave, *actionFileExit; + DesignerAction *actionFileClose, *actionFileSaveAs, *actionFileSaveAll; + DesignerAction *actionSearchFind, *actionSearchIncremetal, *actionSearchReplace, *actionSearchGotoLine; + DesignerAction *actionProjectAddFile, *actionEditPixmapCollection, *actionEditDatabaseConnections, + *actionEditProjectSettings, *actionPreview; + TQActionGroup *actionGroupNew; + + TQPopupMenu *rmbWidgets; + TQPopupMenu *rmbFormWindow; + TQPopupMenu *customWidgetMenu, *windowMenu, *fileMenu, *recentlyFilesMenu, *recentlyProjectsMenu; + TQPopupMenu *toolsMenu, *layoutMenu, *previewMenu; + TQToolBar *customWidgetToolBar, *layoutToolBar, *projectToolBar, *customWidgetToolBar2, *toolsToolBar; + TQToolBar *commonWidgetsToolBar; + TQPtrList<TQToolBar> widgetToolBars; + + Preferences *prefDia; + TQMap<TQString,TQString> propertyDocumentation; + bool client; + TQString templPath; + ActionEditor *actionEditor; + Project *currentProject; + TQPluginManager<ActionInterface> *actionPluginManager; + TQPluginManager<EditorInterface> *editorPluginManager; + TQPluginManager<TemplateWizardInterface> *templateWizardPluginManager; + TQPluginManager<InterpreterInterface> *interpreterPluginManager; + TQPluginManager<PreferenceInterface> *preferencePluginManager; + TQPluginManager<ProjectSettingsInterface> *projectSettingsPluginManager; + TQPluginManager<SourceTemplateInterface> *sourceTemplatePluginManager; + TQPtrList<SourceEditor> sourceEditors; + bool previewing; + TQUnknownInterface *desInterface; + TQStringList recentlyFiles; + TQStringList recentlyProjects; + OutputWindow *oWindow; + TQValueList<Tab> preferenceTabs; + TQValueList<Tab> projectTabs; + bool databaseAutoEdit; + TQTimer *updateFunctionsTimer; + TQTimer *autoSaveTimer; + bool autoSaveEnabled; + int autoSaveInterval; + TQLineEdit *incrementalSearch; + TQGuardedPtr<FindDialog> findDialog; + TQGuardedPtr<ReplaceDialog> replaceDialog; + TQGuardedPtr<GotoLineDialog> gotoLineDialog; + Project *eProject; + bool inDebugMode; + TQObjectList debuggingForms; + TQString lastOpenFilter; + TQGuardedPtr<TQWidget> previewedForm; + TQPopupMenu *projectMenu; + TQString menuHelpFile; + bool singleProject; + TQToolBox *toolBox; + int toolsMenuId, toolsMenuIndex; + uint guiStuffVisible : 1; + uint editorsReadOnly : 1; + uint savePluginPaths : 1; + TQAssistantClient *assistant; + bool shStartDialog; + TQString pluginDir; + bool sSignalHandlers; + + KDevDesignerPart *m_part; + +public: + TQString lastSaveFilter; + TQPtrList<TQAction> toolActions; + TQPtrList<TQAction> commonWidgetsPage; + +friend class KDevDesignerPart; +}; + +class SenderObject : public TQObject +{ + Q_OBJECT + + +public: + SenderObject( TQUnknownInterface *i ) : iface( i ) { iface->addRef(); } + ~SenderObject() { iface->release(); } + +public slots: + void emitInitSignal() { emit initSignal( iface ); } + void emitAcceptSignal() { emit acceptSignal( iface ); } + +signals: + void initSignal( TQUnknownInterface * ); + void acceptSignal( TQUnknownInterface * ); + +private: + TQUnknownInterface *iface; + +}; + +#endif |