[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    [karbon14] Toolbox convert to toolbar
From:       Thomas Zander <zander () planescape ! com>
Date:       2002-09-27 23:05:55
[Download RAW message or body]

Hi,

The toolbox currently has the problem that if you move it to the top or bottom
it looks rather silly.
Therefor I changed the VToolBox class to extend a QToolBar and make it use two
columns/rows according to the orientation it is positioned.

Please test/read attached patch.

The extra layouters and the overloaded slot should provide a universal manner
for multi-column toolbars. Anyone here who thinks this can be used in
Qt/KDElibs/KOfficeLibs ?

May I commit?
-- 
Thomas Zander   zander@planescape.com
We are what we pretend to be

["2colToolbar.diff" (text/plain)]

? 2colToolbar.diff
Index: karbon_view.cc
===================================================================
RCS file: /home/kde/koffice/karbon/karbon_view.cc,v
retrieving revision 1.256
diff -u -3 -p -b -r1.256 karbon_view.cc
--- karbon_view.cc	2002/09/27 11:06:57	1.256
+++ karbon_view.cc	2002/09/27 22:30:10
@@ -250,11 +250,11 @@ KarbonView::createContainer( QWidget *pa
 {
 	if( element.attribute( "name" ) == "toolbox" )
 	{
-		QWidget *toolbar = KXMLGUIBuilder::createContainer( parent, index, element, id );
+		//QWidget *toolbar = KXMLGUIBuilder::createContainer( parent, index, element, id );
 		//if( !m_toolbox )
 		//{
-		kdDebug() << "GOT IT! toolbar :" << toolbar << endl;
-			m_toolbox = new VToolBox( m_part, toolbar );
+		//kdDebug() << "GOT IT! toolbar :" << toolbar << endl;
+			m_toolbox = new VToolBox( m_part, mainWindow(), "toolbox");
 			connect( m_toolbox, SIGNAL( selectToolActivated() ),		this, SLOT( selectTool() ) );
 			connect( m_toolbox, SIGNAL( selectNodesToolActivated() ),	this, SLOT( selectNodesTool() ) );
 			connect( m_toolbox, SIGNAL( rotateToolActivated() ),		this, SLOT( rotateTool() ) );
@@ -280,7 +280,7 @@ KarbonView::createContainer( QWidget *pa
 				selectionChanged();
 			}
 		//}
-		return toolbar;
+		return m_toolbox;
 	}
 
 	return KXMLGUIBuilder::createContainer( parent, index, element, id );
Index: widgets/vtoolbox.cc
===================================================================
RCS file: /home/kde/koffice/karbon/widgets/vtoolbox.cc,v
retrieving revision 1.2
diff -u -3 -p -b -r1.2 vtoolbox.cc
--- widgets/vtoolbox.cc	2002/09/22 22:33:02	1.2
+++ widgets/vtoolbox.cc	2002/09/27 22:30:10
@@ -19,8 +19,11 @@
 */
 
 #include <qbuttongroup.h>
+#include <qnamespace.h>
 #include <qtoolbutton.h>
+#include <qlayout.h>
 #include <qlabel.h>
+#include <qtooltip.h>
 #include <qlayout.h>
 #include <qpixmap.h>
 
@@ -36,125 +39,97 @@
 #include "vtoolbox.h"
 #include "vstrokefillpreview.h"
 
-VToolBox::VToolBox( KarbonPart* part, QWidget* parent, const char* /*name*/ ) : QWidget( parent )
+VToolBox::VToolBox( KarbonPart* part, KMainWindow *mainWin, const char* name ) : QToolBar( mainWin )
 {
-	//setOrientation( Vertical );
-	QToolButton *button;
-
-	m_btngroup = new QButtonGroup( 2, Horizontal, this );
-	m_btngroup->setExclusive( true );
-	m_btngroup->setInsideSpacing( 2 );
-	m_btngroup->setInsideMargin( 5 );
+	setName(name);
+	QBoxLayout::Direction d=orientation()==Qt::Vertical?QBoxLayout::LeftToRight:QBoxLayout::TopToBottom;
+	base= new QButtonGroup(this);
+	base->setExclusive (true);
+	buttonsLayouter = new QBoxLayout(base, d);
+
+	d=orientation()==Qt::Horizontal?QBoxLayout::LeftToRight:QBoxLayout::TopToBottom;
+	left= new QWidget(base);
+	leftLayout = new QBoxLayout(left, d);
+    buttonsLayouter->addWidget(left);
+
+	right= new QWidget(base);
+	rightLayout = new QBoxLayout(right, d);
+	buttonsLayouter->addWidget(right);
 
-	button = new QToolButton( m_btngroup );
-	QPixmap pixmap = BarIcon( "14_select", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	insertLeft=true;
+	QToolButton *button = addButton("14_select", i18n("Select tool"));
 	button->toggle();
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( selectToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_selectnodes", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_selectnodes", i18n("Select nodes tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( selectNodesToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_rotate", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_rotate", i18n("rotate tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( rotateToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_shear", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_shear", i18n("shear tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( shearToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_rectangle", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_rectangle", i18n("create rectangle tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( rectangleToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_roundrect", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_roundrect", i18n("create rounded rectangle tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( roundRectToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_ellipse", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_ellipse", i18n("create ellipse tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( ellipseToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap=BarIcon( "14_polygon", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_polygon", i18n("create poligon tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( polygonToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_star", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_star", i18n("create star tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( starToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_sinus", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_sinus", i18n("create sinus wave tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( sinusToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_spiral", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_spiral", i18n("create spiral tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( spiralToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap = BarIcon( "14_gradient", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+	button = addButton("14_gradient", i18n("fill with gradient tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( gradToolActivated() ) );
-	m_btngroup->insert( button );
 
-	button = new QToolButton( m_btngroup );
-	pixmap=BarIcon( "14_polyline", KarbonFactory::instance() );
-	button->setPixmap( pixmap );
-	button->setToggleButton( true );
+    button = addButton("14_polyline", i18n("create polyline tool"));
 	connect( button, SIGNAL( clicked() ), this, SIGNAL( polylineToolActivated() ) );
-	m_btngroup->insert( button );
+
+    button = addButton("14_clipart", i18n("insert clipart tool"));
+	connect( button, SIGNAL( clicked() ), this, SIGNAL( clipartToolActivated() ) );
 
-	button = new QToolButton( m_btngroup );
-	pixmap=BarIcon( "14_clipart", KarbonFactory::instance() );
+	m_strokeFillPreview = new VStrokeFillPreview( part,this );
+}
+
+QToolButton *
+VToolBox::addButton(const char* iconName, QString tooltip)
+{
+	QToolButton *button = new QToolButton( insertLeft?left:right );
+	QPixmap pixmap=BarIcon( iconName, KarbonFactory::instance() );
 	button->setPixmap( pixmap );
 	button->setToggleButton( true );
-	connect( button, SIGNAL( clicked() ), this, SIGNAL( clipartToolActivated() ) );
-	m_btngroup->insert( button );
+	QToolTip::add(button, tooltip);
+	if(insertLeft)
+		leftLayout->addWidget( button );
+	else
+		rightLayout->addWidget( button );
 
-	m_strokeFillPreview = new VStrokeFillPreview( part, this );
+	base->insert(button);
+	insertLeft=!insertLeft;
+}
 
-	QVBoxLayout *mainWidgetLayout = new QVBoxLayout( this, 2 );
-	mainWidgetLayout->addWidget( m_btngroup );
-	mainWidgetLayout->addWidget( m_strokeFillPreview );
-	mainWidgetLayout->activate();
-	//mainWidget->setMaximumHeight( 164 );
-	//mainWidget->setMinimumWidth( 194 );
 
-	//setWidget( mainWidget );
+void
+VToolBox::setOrientation ( Qt::Orientation o )
+{
+	QBoxLayout::Direction d=orientation()==Qt::Vertical?QBoxLayout::LeftToRight:QBoxLayout::TopToBottom;
+	buttonsLayouter->setDirection(d);
+	d=o==Qt::Horizontal?QBoxLayout::LeftToRight:QBoxLayout::TopToBottom;
+	leftLayout->setDirection(d);
+	rightLayout->setDirection(d);
+	QDockWindow::setOrientation(o);
 }
 
 VStrokeFillPreview *
Index: widgets/vtoolbox.h
===================================================================
RCS file: /home/kde/koffice/karbon/widgets/vtoolbox.h,v
retrieving revision 1.2
diff -u -3 -p -b -r1.2 vtoolbox.h
--- widgets/vtoolbox.h	2002/09/22 22:33:02	1.2
+++ widgets/vtoolbox.h	2002/09/27 22:30:10
@@ -20,17 +20,18 @@
 
 #ifndef __VTOOLBOX_H__
 #define __VTOOLBOX_H__
+#include <qtoolbutton.h>
 
 class QWidget;
 class KarbonPart;
 class VStrokeFillPreview;
 
-class VToolBox : public QWidget
+class VToolBox : public QToolBar
 {
 	Q_OBJECT
 
 public:
-	VToolBox( KarbonPart* part, QWidget* parent = 0L, const char* name = 0L );
+	VToolBox( KarbonPart* part, KMainWindow *mainWin, const char* name = 0L );
 
 	VStrokeFillPreview *strokeFillPreview();
   
@@ -50,10 +51,18 @@ signals:
 	void gradToolActivated();
 	void clipartToolActivated();
 
+public slots:
+	virtual void setOrientation ( Orientation o );
+
 private:
-	QButtonGroup		*m_btngroup;
 	KarbonPart			*m_part;
 	VStrokeFillPreview	*m_strokeFillPreview;
+	QBoxLayout *leftLayout,*rightLayout,*buttonsLayouter;
+    QWidget *left, *right;
+	QButtonGroup *base;
+	bool insertLeft;
+
+	QToolButton *addButton(const char* iconName, QString tooltip);
 };
 
 #endif

_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic