summaryrefslogtreecommitdiffstats
path: root/tdevdesigner/designer/formwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdevdesigner/designer/formwindow.h')
-rw-r--r--tdevdesigner/designer/formwindow.h323
1 files changed, 323 insertions, 0 deletions
diff --git a/tdevdesigner/designer/formwindow.h b/tdevdesigner/designer/formwindow.h
new file mode 100644
index 00000000..d4295e7e
--- /dev/null
+++ b/tdevdesigner/designer/formwindow.h
@@ -0,0 +1,323 @@
+/**********************************************************************
+** 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 FORMWINDOW_H
+#define FORMWINDOW_H
+
+#include "command.h"
+#include "metadatabase.h"
+#include "sizehandle.h"
+#include "actiondnd.h"
+
+#include <tqwidget.h>
+#include <tqptrdict.h>
+#include <tqpixmap.h>
+#include <tqwidgetlist.h>
+#include <tqmap.h>
+
+class TQPaintEvent;
+class TQMouseEvent;
+class TQKeyEvent;
+class TQPainter;
+class TQLabel;
+class MainWindow;
+class TQTimer;
+class TQFocusEvent;
+class TQCloseEvent;
+class Resource;
+class TQResizeEvent;
+class BreakLayoutCommand;
+class TQPixmap;
+class TQSizeGrip;
+class Project;
+struct DesignerFormWindow;
+class FormFile;
+
+#if defined(TQ_CC_MSVC) || defined(TQ_FULL_TEMPLATE_INSTANTIATION)
+#include "orderindicator.h"
+#else
+class OrderIndicator;
+#endif
+
+class FormWindow : public TQWidget
+{
+ Q_OBJECT
+
+ TQ_PROPERTY( TQString fileName READ fileName WRITE setFileName )
+
+public:
+ FormWindow( FormFile *f, MainWindow *mw, TQWidget *parent, const char *name = 0 );
+ FormWindow( FormFile *f, TQWidget *parent, const char *name = 0 );
+ ~FormWindow();
+
+ void init();
+ virtual void setMainWindow( MainWindow *w );
+
+ virtual TQString fileName() const;
+ virtual void setFileName( const TQString &fn );
+
+ virtual TQPoint grid() const;
+ virtual TQPoint gridPoint( const TQPoint &p );
+
+ virtual CommandHistory *commandHistory();
+
+ virtual void undo();
+ virtual void redo();
+ virtual TQString copy();
+ virtual void paste( const TQString &cb, TQWidget *parent );
+ virtual void lowerWidgets();
+ virtual void raiseWidgets();
+ virtual void checkAccels();
+
+ virtual void layoutHorizontal();
+ virtual void layoutVertical();
+ virtual void layoutHorizontalSplit();
+ virtual void layoutVerticalSplit();
+ virtual void layoutGrid();
+
+ virtual void layoutHorizontalContainer( TQWidget *w );
+ virtual void layoutVerticalContainer( TQWidget *w );
+ virtual void layoutGridContainer( TQWidget *w );
+
+ virtual void breakLayout( TQWidget *w );
+
+ virtual void selectWidget( TQObject *w, bool select = TRUE );
+ virtual void selectAll();
+ virtual void updateSelection( TQWidget *w );
+ virtual void raiseSelection( TQWidget *w );
+ virtual void repaintSelection( TQWidget *w );
+ virtual void clearSelection( bool changePropertyDisplay = TRUE );
+ virtual void selectWidgets();
+ bool isWidgetSelected( TQObject *w );
+ virtual void updateChildSelections( TQWidget *w );
+ virtual void raiseChildSelections( TQWidget *w );
+
+ virtual void emitUpdateProperties( TQObject *w );
+ virtual void emitShowProperties( TQObject *w = 0 );
+ virtual void emitSelectionChanged();
+
+ virtual void setPropertyShowingBlocked( bool b );
+ bool isPropertyShowingBlocked() const;
+
+ virtual TQLabel *sizePreview() const;
+ virtual void checkPreviewGeometry( TQRect &r );
+
+ virtual TQPtrDict<TQWidget> *widgets();
+ virtual TQWidgetList selectedWidgets() const;
+
+ virtual TQWidget *designerWidget( TQObject *o ) const;
+
+ virtual void handleContextMenu( TQContextMenuEvent *e, TQWidget *w );
+ virtual void handleMousePress( TQMouseEvent *e, TQWidget *w );
+ virtual void handleMouseRelease( TQMouseEvent *e, TQWidget *w );
+ virtual void handleMouseDblClick( TQMouseEvent *e, TQWidget *w );
+ virtual void handleMouseMove( TQMouseEvent *e, TQWidget *w );
+ virtual void handleKeyPress( TQKeyEvent *e, TQWidget *w );
+ virtual void handleKeyRelease( TQKeyEvent *e, TQWidget *w );
+
+ virtual void updateUndoInfo();
+
+ virtual MainWindow *mainWindow() const { return mainwindow; }
+
+ bool checkCustomWidgets();
+ virtual void insertWidget( TQWidget *w, bool checkName = FALSE );
+ virtual void removeWidget( TQWidget *w );
+ virtual void deleteWidgets();
+ virtual void editAdjustSize();
+ virtual void editConnections();
+
+ virtual int numSelectedWidgets() const;
+ virtual int numVisibleWidgets() const;
+
+ virtual bool hasInsertedChildren( TQWidget *w ) const;
+
+ virtual TQWidget *currentWidget() const { return propertyWidget && propertyWidget->isWidgetType() ? (TQWidget*)propertyWidget : 0; } // #####
+ virtual bool unify( TQObject *w, TQString &s, bool changeIt );
+
+ virtual bool isCustomWidgetUsed( MetaDataBase::CustomWidget *w );
+ virtual bool isDatabaseWidgetUsed() const;
+ virtual bool isDatabaseAware() const;
+
+ virtual TQPoint mapToForm( const TQWidget* w, const TQPoint& ) const;
+
+ bool isMainContainer( TQObject *w ) const;
+ bool isCentralWidget( TQObject *w ) const;
+ TQWidget *mainContainer() const { return mContainer; }
+ void setMainContainer( TQWidget *w );
+
+ void paintGrid( TQWidget *w, TQPaintEvent *e );
+
+ bool savePixmapInline() const;
+ TQString pixmapLoaderFunction() const;
+ void setSavePixmapInline( bool b );
+ void setPixmapLoaderFunction( const TQString &func );
+
+ bool savePixmapInProject() const;
+ void setSavePixmapInProject( bool b );
+
+ void setToolFixed() { toolFixed = TRUE; }
+
+ void setActiveObject( TQObject *o );
+
+ TQPtrList<TQAction> &actionList() { return actions; }
+ TQAction *findAction( const TQString &name );
+
+ void setProject( Project *pro );
+ Project *project() const;
+
+ void killAccels( TQObject *top );
+
+ DesignerFormWindow *iFace();
+
+ int layoutDefaultSpacing() const;
+ int layoutDefaultMargin() const;
+ void setLayoutDefaultSpacing( int s );
+ void setLayoutDefaultMargin( int s );
+ TQString spacingFunction() const;
+ TQString marginFunction() const;
+ void setSpacingFunction( const TQString &func );
+ void setMarginFunction( const TQString &func );
+ bool hasLayoutFunctions() const;
+ void hasLayoutFunctions( bool b );
+
+ void initSlots();
+ FormFile *formFile() const;
+ void setFormFile( FormFile *f );
+
+ bool isFake() const { return fake; }
+ bool canBeBuddy( const TQWidget* ) const;
+
+public slots:
+ virtual void widgetChanged( TQObject *w );
+ virtual void currentToolChanged();
+ virtual void visibilityChanged();
+ virtual void modificationChanged( bool m );
+
+signals:
+ void showProperties( TQObject *w );
+ void updateProperties( TQObject *w );
+ void undoRedoChanged( bool undoAvailable, bool redoAvailable,
+ const TQString &undoCmd, const TQString &redoCmd );
+ void selectionChanged();
+ void modificationChanged( bool m, FormWindow *fw );
+ void modificationChanged( bool m, const TQString &s );
+ void fileNameChanged( const TQString &s, FormWindow *fw );
+
+protected:
+ virtual void closeEvent( TQCloseEvent *e );
+ virtual void focusInEvent( TQFocusEvent *e );
+ virtual void focusOutEvent( TQFocusEvent *e );
+ virtual void resizeEvent( TQResizeEvent *e );
+ void mouseDoubleClickEvent( TQMouseEvent *e ) { handleMouseDblClick( e, mainContainer() ); }
+ virtual bool event( TQEvent *e );
+
+private:
+ enum RectType { Insert, Rubber };
+
+ void beginUnclippedPainter( bool doNot );
+ void endUnclippedPainter();
+ void drawConnectionLine();
+ void drawSizePreview( const TQPoint &pos, const TQString& text );
+
+ void insertWidget();
+ void moveSelectedWidgets( int dx, int dy );
+
+ void startRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *w, RectType t );
+ void continueRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *w, RectType t );
+ void endRectDraw();
+
+ void checkSelectionsForMove( TQWidget *w );
+ BreakLayoutCommand *breakLayoutCommand( TQWidget *w );
+
+ bool allowMove( TQWidget *w );
+
+ void saveBackground();
+ void restoreConnectionLine();
+ void restoreRect( const TQRect &rect ) ;
+
+ void showOrderIndicators();
+ void updateOrderIndicators();
+ void repositionOrderIndicators();
+ void hideOrderIndicators();
+
+ TQWidget *containerAt( const TQPoint &pos, TQWidget *notParentOf );
+
+private slots:
+ void invalidCheckedSelections();
+ void updatePropertiesTimerDone();
+ void showPropertiesTimerDone();
+ void selectionChangedTimerDone();
+ void windowsRepaintWorkaroundTimerTimeout();
+
+private:
+ int currTool;
+ bool oldRectValid, widgetPressed, drawRubber, checkedSelectionsForMove;
+ bool validForBuddy;
+ TQRect currRect;
+ TQPoint rectAnchor;
+ TQPainter *unclippedPainter;
+ TQPoint sizePreviewPos;
+ TQPixmap sizePreviewPixmap;
+ MainWindow *mainwindow;
+ TQPtrList<WidgetSelection> selections;
+ TQPtrDict<WidgetSelection> usedSelections;
+ TQRect widgetGeom, rubber;
+ TQPoint oldPressPos, origPressPos;
+ CommandHistory commands;
+ TQMap<TQWidget*, TQPoint> moving;
+ TQWidget *insertParent;
+ TQObject *propertyWidget;
+ TQLabel *sizePreviewLabel;
+ TQTimer *checkSelectionsTimer;
+ TQPtrDict<TQWidget> insertedWidgets;
+ bool propShowBlocked;
+ TQTimer* updatePropertiesTimer, *showPropertiesTimer, *selectionChangedTimer,
+ *windowsRepaintWorkaroundTimer;
+ TQPoint startPos, currentPos;
+ TQWidget *startWidget, *endWidget;
+ TQPixmap *buffer;
+ TQPtrList<OrderIndicator> orderIndicators;
+ TQWidgetList orderedWidgets;
+ TQWidgetList stackedWidgets;
+ TQWidget *mContainer;
+ bool pixInline, pixProject;
+ TQString pixLoader;
+ bool toolFixed;
+ TQPtrList<TQAction> actions;
+ Project *proj;
+ DesignerFormWindow *iface;
+ TQWidget* targetContainer;
+ TQPalette restorePalette;
+ bool hadOwnPalette;
+ int defSpacing, defMargin;
+ TQString spacFunction, margFunction;
+ bool hasLayoutFunc;
+ FormFile *ff;
+ bool fake;
+
+};
+
+#endif