summaryrefslogtreecommitdiffstats
path: root/tools/designer/designer/menubareditor.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/designer/designer/menubareditor.h')
-rw-r--r--tools/designer/designer/menubareditor.h205
1 files changed, 205 insertions, 0 deletions
diff --git a/tools/designer/designer/menubareditor.h b/tools/designer/designer/menubareditor.h
new file mode 100644
index 000000000..4974b87cc
--- /dev/null
+++ b/tools/designer/designer/menubareditor.h
@@ -0,0 +1,205 @@
+/**********************************************************************
+** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of TQt Designer.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free TQt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing retquirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** Licensees holding valid TQt Commercial 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 WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#ifndef MENUBAREDITOR_H
+#define MENUBAREDITOR_H
+
+#include <qmenubar.h>
+#include <qptrlist.h>
+
+class PopupMenuEditor;
+class MenuBarEditor;
+class TQActionGroup;
+
+class MenuBarEditorItem : public TQObject
+{
+ Q_OBJECT
+
+ friend class MenuBarEditor;
+
+ MenuBarEditorItem( MenuBarEditor * bar = 0, TQObject * parent = 0, const char * name = 0 );
+
+public:
+ MenuBarEditorItem( PopupMenuEditor * menu, MenuBarEditor * bar,
+ TQObject * parent = 0, const char * name = 0);
+ MenuBarEditorItem( TQActionGroup * actionGroup, MenuBarEditor * bar,
+ TQObject * parent = 0, const char * name = 0);
+ MenuBarEditorItem( MenuBarEditorItem * item,
+ TQObject * parent = 0, const char * name = 0);
+ ~MenuBarEditorItem() { };
+
+ PopupMenuEditor * menu() { return popupMenu; }
+
+ void setMenuText( const TQString t ) { text = t; };
+ TQString menuText() { return text; }
+
+ void setVisible( bool enable ) { visible = enable; }
+ bool isVisible() { return visible; }
+
+ void setRemovable( bool enable ) { removable = enable; }
+ bool isRemovable() { return removable; }
+
+ bool isSeparator() { return separator; }
+protected:
+ void setSeparator( bool enable ) { separator = enable; }
+
+private:
+ MenuBarEditor * menuBar;
+ PopupMenuEditor * popupMenu;
+ TQString text;
+ uint visible : 1;
+ uint separator : 1;
+ uint removable : 1;
+};
+
+class TQLineEdit;
+class FormWindow;
+
+class MenuBarEditor : public TQMenuBar
+{
+ Q_OBJECT
+
+public:
+ MenuBarEditor( FormWindow * fw, TQWidget * parent = 0, const char * name = 0 );
+ ~MenuBarEditor();
+
+ FormWindow * formWindow();
+
+ MenuBarEditorItem * createItem( int index = -1, bool addToCmdStack = TRUE );
+ void insertItem( MenuBarEditorItem * item, int index = -1 );
+ void insertItem( TQString text, PopupMenuEditor * menu, int index = -1 );
+ void insertItem( TQString text, TQActionGroup * group, int index = -1 );
+
+ void insertSeparator( int index = -1 );
+
+ void removeItemAt( int index );
+ void removeItem( MenuBarEditorItem * item );
+
+ int findItem( MenuBarEditorItem * item );
+ int findItem( PopupMenuEditor * menu );
+ int findItem( TQPoint & pos );
+
+ MenuBarEditorItem * item( int index = -1 );
+
+ int count();
+ int current();
+
+ void cut( int index );
+ void copy( int index );
+ void paste( int index );
+ void exchange( int a, int b );
+
+ void showLineEdit( int index = -1);
+ void showItem( int index = -1 );
+ void hideItem( int index = -1 );
+ void focusItem( int index = -1 );
+ void deleteItem( int index = -1 );
+
+ TQSize sizeHint() const;
+ TQSize minimumSize() const { return sizeHint(); }
+ TQSize minimumSizeHint() const { return sizeHint(); }
+ int heightForWidth( int max_width ) const;
+
+ void show();
+
+ void checkAccels( TQMap<TQChar, TQWidgetList > &accels );
+
+public slots:
+ void cut();
+ void copy();
+ void paste();
+
+protected:
+ 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 focusOutEvent( TQFocusEvent * e );
+ void resizeEvent( TQResizeEvent * e ) { TQFrame::resizeEvent( e ); }
+
+ void resizeInternals();
+
+ void drawItems( TQPainter & p );
+ void drawItem( TQPainter & p, MenuBarEditorItem * i, int idx, TQPoint & pos );
+ void drawSeparator( TQPainter & p, TQPoint & pos );
+
+ TQSize itemSize( MenuBarEditorItem * i );
+ void addItemSizeToCoords( MenuBarEditorItem * i, int & x, int & y, int w );
+
+ TQPoint itemPos( int index );
+ TQPoint snapToItem( const TQPoint & pos );
+ void dropInPlace( MenuBarEditorItem * i, const TQPoint & pos );
+
+ void safeDec();
+ void safeInc();
+
+ void navigateLeft( bool ctrl );
+ void navigateRight( bool ctrl );
+ void enterEditMode();
+ void leaveEditMode();
+
+ TQPixmap createTextPixmap( const TQString &text );
+ int borderSize() const { return margin() + 4; } // add 4 pixels to the margin
+
+private:
+ FormWindow * formWnd;
+ TQLineEdit * lineEdit;
+ TQWidget * dropLine;
+ TQPtrList<MenuBarEditorItem> itemList;
+ MenuBarEditorItem addItem;
+ MenuBarEditorItem addSeparator;
+ MenuBarEditorItem * draggedItem;
+ TQPoint mousePressPos;
+ int currentIndex;
+ int itemHeight;
+ int separatorWidth;
+ bool hideWhenEmpty;
+ bool hasSeparator;
+ bool dropConfirmed;
+
+ enum ClipboardOperation {
+ None = 0,
+ Cut = 1,
+ Copy = 2
+ };
+ static int clipboardOperation;
+ static MenuBarEditorItem * clipboardItem;
+};
+
+#endif //MENUBAREDITOR_H