• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdemdi
 

tdemdi

tdemditoolviewaccessor.cpp

00001 //----------------------------------------------------------------------------
00002 //    filename             : tdemditoolviewaccessor.h
00003 //----------------------------------------------------------------------------
00004 //    Project              : KDE MDI extension
00005 //
00006 //    begin                : 08/2003       by Joseph Wenninger (jowenn@kde.org)
00007 //    changes              : ---
00008 //    patches              : ---
00009 //
00010 //    copyright            : (C) 2003 by Joseph Wenninger (jowenn@kde.org)
00011 //----------------------------------------------------------------------------
00012 //
00013 //----------------------------------------------------------------------------
00014 //
00015 //    This program is free software; you can redistribute it and/or modify
00016 //    it under the terms of the GNU Library General Public License as
00017 //    published by the Free Software Foundation; either version 2 of the
00018 //    License, or (at your option) any later version.
00019 //
00020 //----------------------------------------------------------------------------
00021 
00022 #ifndef NO_KDE
00023 # include <kdebug.h>
00024 #endif
00025 #include "tdemditoolviewaccessor_p.h"
00026 #include "tdemdiguiclient.h"
00027 #include "tdemdimainfrm.h"
00028 
00029 #include "tdemditoolviewaccessor.h"
00030 #include "tdemditoolviewaccessor_p.h"
00031 
00032 KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent, TQWidget *widgetToWrap, const TQString& tabToolTip, const TQString& tabCaption )
00033         : TQObject( parent )
00034 {
00035     mdiMainFrm = parent;
00036     d = new KMdiToolViewAccessorPrivate();
00037     if ( widgetToWrap->inherits( "KDockWidget" ) )
00038     {
00039         d->widgetContainer = tqt_dynamic_cast<KDockWidget*>( widgetToWrap );
00040         d->widget = d->widgetContainer->getWidget();
00041     }
00042     else
00043     {
00044         d->widget = widgetToWrap;
00045         TQString finalTabCaption;
00046         if ( tabCaption == 0 )
00047         {
00048             finalTabCaption = widgetToWrap->caption();
00049             if ( finalTabCaption.isEmpty() && !widgetToWrap->icon() )
00050             {
00051                 finalTabCaption = widgetToWrap->name();
00052             }
00053         }
00054         else
00055         {
00056             finalTabCaption = tabCaption;
00057         }
00058         d->widgetContainer = parent->createDockWidget( widgetToWrap->name(),
00059                              ( widgetToWrap->icon() ? ( *( widgetToWrap->icon() ) ) : TQPixmap() ),
00060                              0L,   // parent
00061                              widgetToWrap->caption(),
00062                              finalTabCaption );
00063         d->widgetContainer->setWidget( widgetToWrap );
00064         if ( tabToolTip != 0 )
00065         {
00066             d->widgetContainer->setToolTipString( tabToolTip );
00067         } 
00068     }
00069     //mdiMainFrm->m_pToolViews->insert(d->widget,this);
00070     if ( mdiMainFrm->m_mdiGUIClient )
00071         mdiMainFrm->m_mdiGUIClient->addToolView( this );
00072     else
00073         kdDebug( 760 ) << "mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
00074 
00075     d->widget->installEventFilter( this );
00076 }
00077 
00078 KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent )
00079 {
00080     mdiMainFrm = parent;
00081     d = new KMdiToolViewAccessorPrivate();
00082 }
00083 
00084 KMdiToolViewAccessor::~KMdiToolViewAccessor()
00085 {
00086     if ( mdiMainFrm->m_pToolViews )
00087         mdiMainFrm->m_pToolViews->remove
00088         ( d->widget );
00089     delete d;
00090 
00091 }
00092 
00093 TQWidget *KMdiToolViewAccessor::wrapperWidget()
00094 {
00095     if ( !d->widgetContainer )
00096     {
00097         d->widgetContainer = mdiMainFrm->createDockWidget( "KMdiToolViewAccessor::null", TQPixmap() );
00098         connect( d->widgetContainer, TQT_SIGNAL( widgetSet( TQWidget* ) ), this, TQT_SLOT( setWidgetToWrap( TQWidget* ) ) );
00099     }
00100     return d->widgetContainer;
00101 }
00102 
00103 TQWidget *KMdiToolViewAccessor::wrappedWidget()
00104 {
00105     return d->widget;
00106 }
00107 
00108 
00109 void KMdiToolViewAccessor::setWidgetToWrap( TQWidget *widgetToWrap, const TQString& tabToolTip, const TQString& tabCaption )
00110 {
00111     Q_ASSERT( !( d->widget ) );
00112     Q_ASSERT( !widgetToWrap->inherits( "KDockWidget" ) );
00113     disconnect( d->widgetContainer, TQT_SIGNAL( widgetSet( TQWidget* ) ), this, TQT_SLOT( setWidgetToWrap( TQWidget* ) ) );
00114     delete d->widget;
00115     d->widget = widgetToWrap;
00116     KDockWidget *tmp = d->widgetContainer;
00117 
00118     TQString finalTabCaption;
00119     if ( tabCaption == 0 )
00120     {
00121         finalTabCaption = widgetToWrap->caption();
00122         if ( finalTabCaption.isEmpty() && !widgetToWrap->icon() )
00123         {
00124             finalTabCaption = widgetToWrap->name();
00125         }
00126     }
00127     else
00128     {
00129         finalTabCaption = tabCaption;
00130     }
00131 
00132     if ( !tmp )
00133     {
00134         tmp = mdiMainFrm->createDockWidget( widgetToWrap->name(),
00135                                             widgetToWrap->icon() ? ( *( widgetToWrap->icon() ) ) : TQPixmap(),
00136                                             0L,   // parent
00137                                             widgetToWrap->caption(),
00138                                             finalTabCaption );
00139         d->widgetContainer = tmp;
00140         if ( tabToolTip != 0 )
00141         {
00142             d->widgetContainer->setToolTipString( tabToolTip );
00143         }
00144     }
00145     else
00146     {
00147         tmp->setCaption( widgetToWrap->caption() );
00148         tmp->setTabPageLabel( finalTabCaption );
00149         tmp->setPixmap( widgetToWrap->icon() ? ( *( widgetToWrap->icon() ) ) : TQPixmap() );
00150         tmp->setName( widgetToWrap->name() );
00151         if ( tabToolTip != 0 )
00152         {
00153             d->widgetContainer->setToolTipString( tabToolTip );
00154         }
00155     }
00156     tmp->setWidget( widgetToWrap );
00157     mdiMainFrm->m_pToolViews->insert( widgetToWrap, this );
00158     if ( mdiMainFrm->m_mdiGUIClient )
00159         mdiMainFrm->m_mdiGUIClient->addToolView( this );
00160     else
00161         kdDebug( 760 ) << "mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
00162 
00163     d->widget->installEventFilter( this );
00164 }
00165 
00166 
00167 bool KMdiToolViewAccessor::eventFilter( TQObject *, TQEvent *e )
00168 {
00169     if ( e->type() == TQEvent::IconChange )
00170     {
00171         d->widgetContainer->setPixmap( d->widget->icon() ? ( *d->widget->icon() ) : TQPixmap() );
00172     }
00173     return false;
00174 }
00175 
00176 void KMdiToolViewAccessor::placeAndShow( KDockWidget::DockPosition pos, TQWidget* pTargetWnd , int percent )
00177 {
00178     place( pos, pTargetWnd, percent );
00179     show();
00180 }
00181 void KMdiToolViewAccessor::place( KDockWidget::DockPosition pos, TQWidget* pTargetWnd , int percent )
00182 {
00183     Q_ASSERT( d->widgetContainer );
00184     if ( !d->widgetContainer )
00185         return ;
00186     if ( pos == KDockWidget::DockNone )
00187     {
00188         d->widgetContainer->setEnableDocking( KDockWidget::DockNone );
00189         d->widgetContainer->reparent( mdiMainFrm, (WFlags)(WType_TopLevel | WType_Dialog), TQPoint( 0, 0 ), true ); //pToolView->isVisible());
00190     }
00191     else
00192     {   // add (and dock) the toolview as DockWidget view
00193 
00194         KDockWidget* pCover = d->widgetContainer;
00195 
00196         KDockWidget* pTargetDock = 0L;
00197         if ( pTargetWnd->inherits( "KDockWidget" ) || pTargetWnd->inherits( "KDockWidget_Compat::KDockWidget" ) )
00198         {
00199             pTargetDock = ( KDockWidget* ) pTargetWnd;
00200         }
00201 
00202         // Should we dock to ourself?
00203         bool DockToOurself = false;
00204         if ( mdiMainFrm->m_pDockbaseAreaOfDocumentViews )
00205         {
00206             if ( pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews->getWidget() )
00207             {
00208                 DockToOurself = true;
00209                 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00210             }
00211             else if ( pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews )
00212             {
00213                 DockToOurself = true;
00214                 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00215             }
00216         }
00217         // this is not inheriting TQWidget*, its plain impossible that this condition is true
00218         //if (pTargetWnd == this) DockToOurself = true;
00219         if ( !DockToOurself )
00220             if ( pTargetWnd != 0L )
00221             {
00222                 pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd );
00223                 if ( !pTargetDock )
00224                 {
00225                     if ( pTargetWnd->parentWidget() )
00226                     {
00227                         pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd->parentWidget() );
00228                     }
00229                 }
00230             }
00231         if ( !pTargetDock || pTargetWnd == mdiMainFrm->getMainDockWidget() )
00232         {
00233             if ( mdiMainFrm->m_managedDockPositionMode && ( mdiMainFrm->m_pMdi || mdiMainFrm->m_documentTabWidget ) )
00234             {
00235                 KDockWidget * dw1 = pTargetDock->findNearestDockWidget( pos );
00236                 if ( dw1 )
00237                     pCover->manualDock( dw1, KDockWidget::DockCenter, percent );
00238                 else
00239                     pCover->manualDock ( pTargetDock, pos, 20 );
00240                 return ;
00241             }
00242         }
00243         pCover->manualDock( pTargetDock, pos, percent );
00244         //check      pCover->show();
00245     }
00246 }
00247 
00248 void KMdiToolViewAccessor::hide()
00249 {
00250     Q_ASSERT( d->widgetContainer );
00251     if ( !d->widgetContainer )
00252         return ;
00253     d->widgetContainer->undock();
00254 }
00255 
00256 void KMdiToolViewAccessor::show()
00257 {
00258     Q_ASSERT( d->widgetContainer );
00259     if ( !d->widgetContainer )
00260         return ;
00261     d->widgetContainer->makeDockVisible();
00262 }
00263 
00264 
00265 #ifndef NO_INCLUDE_MOCFILES
00266 #include "tdemditoolviewaccessor.moc"
00267 #endif 
00268 // kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands;
00269 

tdemdi

Skip menu "tdemdi"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdemdi

Skip menu "tdemdi"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdemdi by doxygen 1.7.1
This website is maintained by Timothy Pearson.