|
|
|
/**********************************************************************
|
|
|
|
** 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 MENUBAREDITOR_H
|
|
|
|
#define MENUBAREDITOR_H
|
|
|
|
|
|
|
|
#include <tqmenubar.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
|
|
|
|
class PopupMenuEditor;
|
|
|
|
class MenuBarEditor;
|
|
|
|
class TQActionGroup;
|
|
|
|
|
|
|
|
class MenuBarEditorItem : public TQObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_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
|
|
|
|
TQ_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 tqsizeHint() const;
|
|
|
|
TQSize tqminimumSize() const { return tqsizeHint(); }
|
|
|
|
TQSize tqminimumSizeHint() const { return tqsizeHint(); }
|
|
|
|
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
|