|
|
|
|
/**********************************************************************
|
|
|
|
|
This file is based on TQt Designer, Copyright (C) 2000 Trolltech AS. <EFBFBD>All rights reserved.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Modified for Kommander:
|
|
|
|
|
(C) 2002-2003 Marc Britton <consume@optusnet.com.au>
|
|
|
|
|
(C) 2004 Michal Rudolf <mrudolf@kdewebdev.org>
|
|
|
|
|
|
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef FORMWINDOW_H
|
|
|
|
|
#define FORMWINDOW_H
|
|
|
|
|
|
|
|
|
|
#include "command.h"
|
|
|
|
|
#include "metadatabase.h"
|
|
|
|
|
#include "sizehandle.h"
|
|
|
|
|
#include "actiondnd.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <tqwidget.h>
|
|
|
|
|
#include <tqmap.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 FormFile;
|
|
|
|
|
|
|
|
|
|
#if defined(TQ_FULL_TEMPLATE_INSTANTIATION)
|
|
|
|
|
#include "orderindicator.h"
|
|
|
|
|
#else
|
|
|
|
|
class OrderIndicator;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
class FormWindow : public TQWidget
|
|
|
|
|
{
|
|
|
|
|
TQ_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 );
|
|
|
|
|
|
|
|
|
|
void setToolFixed() { toolFixed = TRUE; }
|
|
|
|
|
|
|
|
|
|
void setActiveObject( TQObject *o );
|
|
|
|
|
|
|
|
|
|
TQPtrList<TQAction> &actionList() { return actions; }
|
|
|
|
|
TQAction *findAction( const TQString &name );
|
|
|
|
|
|
|
|
|
|
void killAccels( TQObject *top );
|
|
|
|
|
|
|
|
|
|
int layoutDefaultSpacing() const;
|
|
|
|
|
int layoutDefaultMargin() const;
|
|
|
|
|
void setLayoutDefaultSpacing( int s );
|
|
|
|
|
void setLayoutDefaultMargin( int s );
|
|
|
|
|
|
|
|
|
|
void initSlots();
|
|
|
|
|
FormFile *formFile() const;
|
|
|
|
|
void setFormFile( FormFile *f );
|
|
|
|
|
|
|
|
|
|
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() ); }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
enum RectType { Insert, Rubber };
|
|
|
|
|
|
|
|
|
|
virtual void beginUnclippedPainter( bool doNot );
|
|
|
|
|
virtual void endUnclippedPainter();
|
|
|
|
|
virtual void drawConnectLine();
|
|
|
|
|
virtual void drawSizePreview( const TQPoint &pos, const TQString& text );
|
|
|
|
|
|
|
|
|
|
virtual void insertWidget();
|
|
|
|
|
virtual void moveSelectedWidgets( int dx, int dy );
|
|
|
|
|
|
|
|
|
|
virtual void startRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *w, RectType t );
|
|
|
|
|
virtual void continueRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *w, RectType t );
|
|
|
|
|
virtual void endRectDraw();
|
|
|
|
|
|
|
|
|
|
virtual void checkSelectionsForMove( TQWidget *w );
|
|
|
|
|
virtual BreakLayoutCommand *breakLayoutCommand( TQWidget *w );
|
|
|
|
|
|
|
|
|
|
virtual bool allowMove( TQWidget *w );
|
|
|
|
|
|
|
|
|
|
virtual void saveBackground();
|
|
|
|
|
virtual void restoreConnectionLine();
|
|
|
|
|
virtual void restoreRect( const TQRect &rect ) ;
|
|
|
|
|
|
|
|
|
|
virtual void showOrderIndicators();
|
|
|
|
|
virtual void updateOrderIndicators();
|
|
|
|
|
virtual void repositionOrderIndicators();
|
|
|
|
|
virtual void hideOrderIndicators();
|
|
|
|
|
|
|
|
|
|
virtual TQWidget *containerAt( const TQPoint &pos, TQWidget *notParentOf );
|
|
|
|
|
|
|
|
|
|
TQObject *connectableObject( TQObject *w, TQObject *fallback );
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
virtual void invalidCheckedSelections();
|
|
|
|
|
virtual void updatePropertiesTimerDone();
|
|
|
|
|
virtual void showPropertiesTimerDone();
|
|
|
|
|
virtual void selectionChangedTimerDone();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
int currTool;
|
|
|
|
|
bool oldRectValid, widgetPressed, drawRubber, checkedSelectionsForMove;
|
|
|
|
|
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<ulong, TQPoint> moving;
|
|
|
|
|
TQWidget *insertParent;
|
|
|
|
|
TQObject *propertyWidget;
|
|
|
|
|
TQLabel *sizePreviewLabel;
|
|
|
|
|
TQTimer *checkSelectionsTimer;
|
|
|
|
|
TQPtrDict<TQWidget> insertedWidgets;
|
|
|
|
|
bool propShowBlocked;
|
|
|
|
|
TQTimer* updatePropertiesTimer, *showPropertiesTimer, *selectionChangedTimer;
|
|
|
|
|
TQPoint connectStartPos, currentConnectPos;
|
|
|
|
|
TQObject *connectSender, *connectReceiver;
|
|
|
|
|
TQPixmap *buffer;
|
|
|
|
|
TQPtrList<OrderIndicator> orderIndicators;
|
|
|
|
|
TQWidgetList orderedWidgets;
|
|
|
|
|
TQWidgetList stackedWidgets;
|
|
|
|
|
TQWidget *mContainer;
|
|
|
|
|
bool pixInline;
|
|
|
|
|
TQString pixLoader;
|
|
|
|
|
bool toolFixed;
|
|
|
|
|
TQPtrList<TQAction> actions;
|
|
|
|
|
TQWidget* targetContainer;
|
|
|
|
|
TQPalette restorePalette;
|
|
|
|
|
bool hadOwnPalette;
|
|
|
|
|
int defSpacing, defMargin;
|
|
|
|
|
FormFile *ff;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|