19#include "kivio_stackbar.h"
20#include "stencilbarbutton.h"
23#include <tqpushbutton.h>
24#include <tqapplication.h>
29KivioStackBar::KivioStackBar(KivioView* view, TQWidget* parent,
const char* name)
30 : TQDockWindow(parent, name), m_view(view)
32 TQDockWindow::boxLayout()->setSpacing(0);
33 TQDockWindow::boxLayout()->setMargin(0);
34 setResizeEnabled(
true);
38 connect(
this, TQ_SIGNAL(placeChanged(TQDockWindow::Place)),
this, TQ_SLOT(newPlace(TQDockWindow::Place)));
41KivioStackBar::~KivioStackBar()
43 kdDebug(43000) <<
"KivioStackBar::~KivioStackBar()" << endl;
46void KivioStackBar::insertPage( TQWidget* w,
const TQString& title )
48 if (w->parent() !=
this) {
49 w->reparent(
this,TQPoint(0,0));
53 w->setFocusPolicy(TQWidget::NoFocus);
55 setMinimumWidth( TQMAX(minimumSize().width(),w->minimumSize().width() ) );
56 setMaximumWidth( TQMAX(maximumSize().width(),w->maximumSize().width() ) );
58 DragBarButton* b =
new DragBarButton( title,
this );
59 b->setOrientation(orientation());
60 connect( b, TQ_SIGNAL(clicked()), TQ_SLOT(showButtonPage()) );
61 connect( b, TQ_SIGNAL(beginDrag()), TQ_SLOT(buttonBeginDrag()) );
62 connect( b, TQ_SIGNAL(finishDrag()), TQ_SLOT(buttonFinishDrag()) );
63 connect( b, TQ_SIGNAL(closeRequired(DragBarButton*)), TQ_SLOT(slotDeleteButton(DragBarButton*)) );
64 connect(
this, TQ_SIGNAL(orientationChanged(TQt::Orientation)), b, TQ_SLOT(setOrientation(TQt::Orientation)));
66 boxLayout()->addWidget(b);
67 boxLayout()->addWidget(w, 1);
72 if (m_data.count() == 1) {
77void KivioStackBar::slotDeleteButton( DragBarButton *b )
79 TQWidget *pWidget = m_data[b];
80 kdDebug(43000) <<
"Emitting deleteButton" << endl;
81 emit deleteButton(b, pWidget,
this);
84void KivioStackBar::showPage( TQWidget* w )
86 emit aboutToShow( w );
88 if(w == m_visiblePage) {
92 if ( m_visiblePage ) {
93 m_visiblePage->hide();
102void KivioStackBar::showButtonPage()
104 DragBarButton* b = (DragBarButton*)sender();
105 showPage(findPage(b));
108TQWidget* KivioStackBar::findPage( DragBarButton* w )
116void KivioStackBar::removePage( TQWidget* widget )
118 TQPtrDictIterator<TQWidget> it(m_data);
120 while ( it.current() ) {
121 if ( it.current() == widget ) {
123 pBtn = (DragBarButton*)it.currentKey();
124 it.current()->reparent(0, TQPoint(0,0));
125 m_data.remove( it.currentKey() );
132 if ( it.toFirst() ) {
133 showPage( it.current() );
139void KivioStackBar::deletePageAndButton( DragBarButton *pBtn )
144 kdDebug(43000) <<
"KivioStackBar::deletePageAndButton() - pBtn is NULL!" << endl;
148 pPage = m_data[pBtn];
150 kdDebug(43000) <<
"KivioStackBar::deletePageAndButton() - failed to find the key/value pair" << endl;
154 if( m_data.remove( pBtn )==
false ) {
155 kdDebug(43000) <<
"KivioStackBar::deletePageAndButton() - remove failed" << endl;
159 if(pPage == m_visiblePage) {
168 TQPtrDictIterator<TQWidget> it(m_data);
169 if ( it.toFirst() ) {
170 showPage( it.current() );
174TQWidget* KivioStackBar::findPage(
const TQString& name )
176 TQPtrDictIterator<TQWidget> it(m_data);
177 while ( it.current() ) {
178 if ( it.current()->name() == name )
185void KivioStackBar::buttonBeginDrag()
187 emit beginDragPage((DragBarButton*)sender());
190void KivioStackBar::buttonFinishDrag()
192 emit finishDragPage((DragBarButton*)sender());
195void KivioStackBar::closeEvent(TQCloseEvent* ev)
197 TQPtrDictIterator<TQWidget> it(m_data);
198 while ( it.current() ) {
199 slotDeleteButton((DragBarButton*)it.currentKey());
207void KivioStackBar::newPlace(TQDockWindow::Place place)
209 if((place == OutsideDock) && (orientation() == TQt::Horizontal)) {
210 setOrientation(TQt::Vertical);
214#include "kivio_stackbar.moc"