diff options
Diffstat (limited to 'tdevdesigner/designer/popupmenueditor.h')
-rw-r--r-- | tdevdesigner/designer/popupmenueditor.h | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/tdevdesigner/designer/popupmenueditor.h b/tdevdesigner/designer/popupmenueditor.h new file mode 100644 index 00000000..714ecf42 --- /dev/null +++ b/tdevdesigner/designer/popupmenueditor.h @@ -0,0 +1,237 @@ +/********************************************************************** +** Copyright (C) 2003 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 POPUPMENUEDITOR_H +#define POPUPMENUEDITOR_H + +#include <tqwidget.h> +#include <tqptrlist.h> +#include <tqaction.h> + +class PopupMenuEditor; +class TQMenuItem; + +class PopupMenuEditorItem : public TQObject +{ + Q_OBJECT + + + friend class PopupMenuEditor; + + PopupMenuEditorItem( PopupMenuEditor * menu = 0, TQObject * parent = 0, const char * name = 0 ); + +public: + enum ItemType { + Unknown = -1, + Separator = 0, + Action = 1 + }; + + PopupMenuEditorItem( TQAction * action, PopupMenuEditor * menu, + TQObject * parent = 0, const char * name = 0 ); + PopupMenuEditorItem( PopupMenuEditorItem * item, PopupMenuEditor * menu, + TQObject * parent = 0, const char * name = 0 ); + ~PopupMenuEditorItem(); + + void init(); + + ItemType type() const; + TQAction * action() const { return a; } + + void setVisible( bool enable ); + bool isVisible() const; + + void setSeparator( bool enable ) { separator = enable; } + bool isSeparator() const { return separator; } + + void setRemovable( bool enable ) { removable = enable; } + bool isRemovable() const { return removable; } + + void showMenu( int x, int y ); + void hideMenu(); + void focusOnMenu(); + PopupMenuEditor * subMenu() const { return s; } + + int count() const; + + bool eventFilter( TQObject *, TQEvent * event ); + +public slots: + void selfDestruct(); + +protected: + +private: + TQAction * a; + PopupMenuEditor * s; + PopupMenuEditor * m; + uint separator : 1; + uint removable : 1; +}; + +class FormWindow; +class MainWindow; +class TQLineEdit; + +#include <tqpopupmenu.h> + +class PopupMenuEditor : public TQWidget +{ + Q_OBJECT + + + friend class PopupMenuEditorItem; + friend class MenuBarEditor; + friend class Resource; + +public: + PopupMenuEditor( FormWindow * fw, TQWidget * parent = 0, const char * name = 0 ); + PopupMenuEditor( FormWindow * fw, PopupMenuEditor * menu, TQWidget * parent, const char * name = 0 ); + ~PopupMenuEditor(); + + void init(); + + void insert( PopupMenuEditorItem * item, int index = -1 ); + void insert( TQAction * action, int index = -1 ); + void insert( TQActionGroup * actionGroup, int index = -1 ); + int find( const TQAction * action ); + int find( PopupMenuEditor * menu ); + int count(); + PopupMenuEditorItem * at( int index ); + PopupMenuEditorItem * at( TQPoint pos ) { return itemAt( pos.y() ); } + void exchange( int a, int b ); + + void cut( int index ); + void copy( int index ); + void paste( int index ); + + void insertedActions( TQPtrList<TQAction> & list ); + + void show(); + void choosePixmap( int index = -1 ); + void showLineEdit( int index = -1); + void setAccelerator( int key, TQt::ButtonState state, int index = -1 ); + + FormWindow * formWindow() { return formWnd; } + bool isCreatingAccelerator() { return ( currentField == 2 ); } + + TQPtrList<PopupMenuEditorItem> * items() { return &itemList; } + + TQWidget * parentEditor() { return parentMenu; } + +signals: + void inserted( TQAction * ); + void removed( TQAction * ); + +public slots: + + void cut() { cut( currentIndex ); } + void copy() { copy( currentIndex ); } + void paste() { paste( currentIndex ); } + + void remove( int index ); + void remove( TQAction * a ) { remove( find( a ) ); } + + void resizeToContents(); + void showSubMenu(); + void hideSubMenu(); + void focusOnSubMenu(); + +protected: + PopupMenuEditorItem * createItem( TQAction * a = 0 ); + void removeItem( int index = -1 ); + PopupMenuEditorItem * currentItem(); + PopupMenuEditorItem * itemAt( int y ); + void setFocusAt( const TQPoint & pos ); + + bool eventFilter( TQObject * o, TQEvent * e ); + void paintEvent( TQPaintEvent * e ); + void mousePressEvent( TQMouseEvent * e ); + void mouseDoubleClickEvent( TQMouseEvent * e ); + void mouseMoveEvent( TQMouseEvent * e ); + void dragEnterEvent( TQDragEnterEvent * e ); + void dragLeaveEvent( TQDragLeaveEvent * e ); + void dragMoveEvent( TQDragMoveEvent * e ); + void dropEvent( TQDropEvent * e ); + void keyPressEvent( TQKeyEvent * e ); + void focusInEvent( TQFocusEvent * e ); + void focusOutEvent( TQFocusEvent * e ); + + void drawItems( TQPainter * p ); + void drawItem( TQPainter * p, PopupMenuEditorItem * i, const TQRect & r, int f ) const; + void drawWinFocusRect( TQPainter * p, const TQRect & r ) const; + + TQSize contentsSize(); + int itemHeight( const PopupMenuEditorItem * item ) const; + int itemPos( const PopupMenuEditorItem * item ) const; + + int snapToItem( int y ); + void dropInPlace( PopupMenuEditorItem * i, int y ); + void dropInPlace( TQActionGroup * g, int y ); + + void safeDec(); + void safeInc(); + + void clearCurrentField(); + void navigateUp( bool ctrl ); + void navigateDown( bool ctrl ); + void navigateLeft(); + void navigateRight(); + void enterEditMode( TQKeyEvent * e ); + void leaveEditMode( TQKeyEvent * e ); + + TQString constructName( PopupMenuEditorItem *item ); + +private: + FormWindow * formWnd; + TQLineEdit * lineEdit; + TQWidget * dropLine; + TQPtrList<PopupMenuEditorItem> itemList; + PopupMenuEditorItem addItem; + PopupMenuEditorItem addSeparator; + TQWidget * parentMenu; + + int iconWidth; + int textWidth; + int accelWidth; + int arrowWidth; + int borderSize; + + int currentField; + int currentIndex; + TQPoint mousePressPos; + static PopupMenuEditorItem * draggedItem; + + enum ClipboardOperation { + None = 0, + Cut = 1, + Copy = 2 + }; + static int clipboardOperation; + static PopupMenuEditorItem * clipboardItem; +}; + +#endif //POPUPMENUEDITOR_H |