]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/dbbrowse/tabpgwin.cpp
browsedb.cpp dbgrid.cpp dbtree.cpp dlguser.cpp de/dbbrowse.mo
[wxWidgets.git] / demos / dbbrowse / tabpgwin.cpp
index 8ee68ecd49fb39a2d8e1a6b342db2158dfea65d4..f2728ed917ecefb480133e1a766b11222dbde0ec 100644 (file)
 // Implementation for class twTabInfo
 //---------------------------------------------------------------------------
 IMPLEMENT_DYNAMIC_CLASS( twTabInfo, wxObject )
-//---------------------------------------------------------------------------
-twTabInfo::twTabInfo()
- : mpContent( 0 )
+  //---------------------------------------------------------------------------
+  twTabInfo::twTabInfo()
   : mpContent( 0 )
 {}
 //---------------------------------------------------------------------------
 twTabInfo::~twTabInfo()
 {
- // FOR NOW:: nothing
 // FOR NOW:: nothing
 }
 //---------------------------------------------------------------------------
 int twTabInfo::ImgWidth()
 {
- if ( mBitMap.Ok() ) return mBitMap.GetWidth();
 if ( mBitMap.Ok() ) return mBitMap.GetWidth();
   else return 0;
 }
 //---------------------------------------------------------------------------
 int twTabInfo::ImgHeight()
 {
- if ( mBitMap.Ok() ) return mBitMap.GetHeight();
 if ( mBitMap.Ok() ) return mBitMap.GetHeight();
   else return 0;
 }
 //---------------------------------------------------------------------------
 int twTabInfo::ImageToTxtGap( int prefGap )
 {
- if ( mBitMap.Ok() ) return prefGap;
 if ( mBitMap.Ok() ) return prefGap;
   else return 0;
 }
 //---------------------------------------------------------------------------
 bool twTabInfo::HasImg()
 {
- return mBitMap.Ok();
 return mBitMap.Ok();
 }
 //---------------------------------------------------------------------------
 // bool twTabInfo::HasText();
 unsigned int twTabInfo::HasText()
 {
- return mText.Length();
 return mText.Length();
 }
 //---------------------------------------------------------------------------
 wxBitmap& twTabInfo::GetImg()
 {
- return mBitMap;
 return mBitMap;
 }
 //---------------------------------------------------------------------------
 wxString& twTabInfo::GetText()
 {
- return mText;
 return mText;
 }
 //---------------------------------------------------------------------------
 wxWindow& twTabInfo::GetContent()
 {
- return *mpContent;
 return *mpContent;
 }
 //---------------------------------------------------------------------------
 // Implementation for class wxTabbedWindow
 //---------------------------------------------------------------------------
 IMPLEMENT_DYNAMIC_CLASS( wxTabbedWindow, wxPanel )
-//---------------------------------------------------------------------------
-BEGIN_EVENT_TABLE( wxTabbedWindow, wxPanel )
- EVT_SIZE ( wxTabbedWindow::OnSize )
- EVT_PAINT( wxTabbedWindow::OnPaint )
- EVT_LEFT_DOWN( wxTabbedWindow::OnLButtonDown )
-// TDB:: filciker reduction
-// EVT_ERASE_BACKGROUND( wxTabbedWindow::OnBkErase )
-END_EVENT_TABLE()
-//---------------------------------------------------------------------------
-wxTabbedWindow::wxTabbedWindow()
-
- : mpTabScroll  ( NULL ),
-   mpHorizScroll( NULL ),
-   mpVertScroll ( NULL ),
-
-   mVertGap ( 0 ),
-   mHorizGap( 0 ),
-
-   mTitleVertGap ( 3  ),
-   mTitleHorizGap( 4  ),
-   mImageTextGap ( 2  ),
-   mFirstTitleGap( 11 ),
-
-   mBorderOnlyWidth( 8 ),
-
-   mWhitePen( wxColour(255,255,255), 1, wxSOLID ),
-   mGrayPen ( wxColour(192,192,192), 1, wxSOLID ),
-   mDarkPen ( wxColour(128,128,128), 1, wxSOLID ),
-   mBlackPen( wxColour(  0,  0,  0), 1, wxSOLID ),
-
-   // state variables
-
-   mActiveTab  ( 0 ),
-   mTitleHeight( 0 ),
-   mLayoutType( wxTITLE_IMG_AND_TEXT )
+  //---------------------------------------------------------------------------
+  BEGIN_EVENT_TABLE( wxTabbedWindow, wxPanel )
 EVT_SIZE ( wxTabbedWindow::OnSize )
 EVT_PAINT( wxTabbedWindow::OnPaint )
 EVT_LEFT_DOWN( wxTabbedWindow::OnLButtonDown )
+  // TDB:: filciker reduction
+  // EVT_ERASE_BACKGROUND( wxTabbedWindow::OnBkErase )
+  END_EVENT_TABLE()
+  //---------------------------------------------------------------------------
+  wxTabbedWindow::wxTabbedWindow()
+  
   : mpTabScroll  ( NULL ),
+      mpHorizScroll( NULL ),
+      mpVertScroll ( NULL ),
+      
+      mVertGap ( 0 ),
+      mHorizGap( 0 ),
+      
+      mTitleVertGap ( 3  ),
+      mTitleHorizGap( 4  ),
+      mImageTextGap ( 2  ),
+      mFirstTitleGap( 11 ),
+      
+      mBorderOnlyWidth( 8 ),
+      
+      mWhitePen( wxColour(255,255,255), 1, wxSOLID ),
+      mGrayPen ( wxColour(192,192,192), 1, wxSOLID ),
+      mDarkPen ( wxColour(128,128,128), 1, wxSOLID ),
+      mBlackPen( wxColour(  0,  0,  0), 1, wxSOLID ),
+      
+      // state variables
+      
+      mActiveTab  ( 0 ),
+      mTitleHeight( 0 ),
+      mLayoutType( wxTITLE_IMG_AND_TEXT )
 {}
 //---------------------------------------------------------------------------
 wxTabbedWindow::~wxTabbedWindow()
 {
- wxNode* pTab = mTabs.First();
-
- while( pTab )
- {
-  delete ((twTabInfo*)pTab->Data());
-  pTab = pTab->Next();
- }
 wxNode* pTab = mTabs.First();
+  
 while( pTab )
   {
+      delete ((twTabInfo*)pTab->Data());
+      pTab = pTab->Next();
   }
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::SizeTabs(int x,int y, int width, int height, bool repant)
 {
- wxNode* pTabNode = mTabs.First();
- int n = 0;
-
 wxNode* pTabNode = mTabs.First();
 int n = 0;
+  
  while( pTabNode )
- {
-  twTabInfo& info = *((twTabInfo*)pTabNode->Data());
-
-  if ( n == mActiveTab )
-  {
-   //wxSizeEvent evt;
-   //info.mpContent->GetEventHandler()->ProcessEvent( evt );
-
-   info.mpContent->SetSize( x, y, width, height, 0 );
-   info.mpContent->Show(TRUE);
-   info.mpContent->Refresh();
-
-  }
-  else
-  {
-   info.mpContent->Show(FALSE);
-  }
-
-  pTabNode = pTabNode->Next();
-  ++n;
- }
  {
+     twTabInfo& info = *((twTabInfo*)pTabNode->Data());
+     
+     if ( n == mActiveTab )
+       {
+        //wxSizeEvent evt;
+        //info.mpContent->GetEventHandler()->ProcessEvent( evt );
+        
+        info.mpContent->SetSize( x, y, width, height, 0 );
+        info.mpContent->Show(TRUE);
+        info.mpContent->Refresh();
+        
+       }
+     else
+       {
+        info.mpContent->Show(FALSE);
+       }
+     
+     pTabNode = pTabNode->Next();
+     ++n;
  }
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::AddTab( wxWindow* pContent,
-        wxString  tabText,
-        wxString  imageFileName,
-        long      imageType )
+                            wxString  tabText,
+                            wxString  imageFileName,
+                            long      imageType )
 {
- twTabInfo* pTab = new twTabInfo();
-
- pTab->mpContent = pContent;
- pTab->mText     = tabText;
-
- if ( wxFileExists( imageFileName ) &&
-
-   pTab->mBitMap.LoadFile( imageFileName, imageType ) )
- {
-  pTab->mImageFile = imageFileName;
-  pTab->mImageType = imageType;
- }
-
-
- if ( pContent->GetParent() == NULL )
-  pContent->Create( this, -1 );
-
- mTabs.Append( (wxObject*)pTab );
-
- RecalcLayout(TRUE);
-
- OnTabAdded( pTab );
 twTabInfo* pTab = new twTabInfo();
+  
 pTab->mpContent = pContent;
 pTab->mText     = tabText;
+  
 if ( wxFileExists( imageFileName ) &&
+       
+       pTab->mBitMap.LoadFile( imageFileName, imageType ) )
   {
+      pTab->mImageFile = imageFileName;
+      pTab->mImageType = imageType;
   }
+  
+  
 if ( pContent->GetParent() == NULL )
+    pContent->Create( this, -1 );
+  
 mTabs.Append( (wxObject*)pTab );
+  
 RecalcLayout(TRUE);
+  
 OnTabAdded( pTab );
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::AddTab( wxWindow* pContent,
-       wxString  tabText, wxBitmap* pImage   )
+                            wxString  tabText, wxBitmap* pImage   )
 {
- twTabInfo* pTab = new twTabInfo();
-
- pTab->mpContent = pContent;
- pTab->mText     = tabText;
-
- if ( pImage )
-  pTab->mBitMap = *pImage;
-
- if ( pContent->GetParent() == NULL )
-  pContent->Create( this, -1 );
-
- mTabs.Append( (wxObject*)pTab );
- RecalcLayout(TRUE);
- OnTabAdded( pTab );
 twTabInfo* pTab = new twTabInfo();
+  
 pTab->mpContent = pContent;
 pTab->mText     = tabText;
+  
 if ( pImage )
+    pTab->mBitMap = *pImage;
+  
 if ( pContent->GetParent() == NULL )
+    pContent->Create( this, -1 );
+  
 mTabs.Append( (wxObject*)pTab );
 RecalcLayout(TRUE);
 OnTabAdded( pTab );
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::RemoveTab( int tabNo )
 {
- twTabInfo* pTab = ((twTabInfo*)(mTabs.Nth( tabNo )->Data()));
- pTab->mpContent->Destroy();
- delete pTab;
- mTabs.DeleteNode( mTabs.Nth( tabNo ) );
- // if ( mActiveTab >= mTabs.Number() );
- if ( mActiveTab >= mTabs.Number() )
-  mActiveTab = mTabs.Number() - 1;
- SetActiveTab( mActiveTab );
 twTabInfo* pTab = ((twTabInfo*)(mTabs.Nth( tabNo )->Data()));
 pTab->mpContent->Destroy();
 delete pTab;
 mTabs.DeleteNode( mTabs.Nth( tabNo ) );
 // if ( mActiveTab >= mTabs.Number() );
 if ( mActiveTab >= mTabs.Number() )
+    mActiveTab = mTabs.Number() - 1;
 SetActiveTab( mActiveTab );
 }
 //---------------------------------------------------------------------------
 int wxTabbedWindow::GetTabCount()
@@ -244,20 +244,20 @@ int wxTabbedWindow::GetTabCount()
 //---------------------------------------------------------------------------
 wxWindow* wxTabbedWindow::GetTab( int tabNo )
 {
- return ((twTabInfo*)(mTabs.Nth( tabNo )->Data()))->mpContent;
 return ((twTabInfo*)(mTabs.Nth( tabNo )->Data()))->mpContent;
 }
 //---------------------------------------------------------------------------
 wxWindow* wxTabbedWindow::GetActiveTab()
 {
- // FIMXE:: this is lame
- return GetTab( mActiveTab );
 // FIMXE:: this is lame
 return GetTab( mActiveTab );
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::SetActiveTab( int tabNo )
 {
- mActiveTab = tabNo;
- RecalcLayout(TRUE);
- Refresh();
 mActiveTab = tabNo;
 RecalcLayout(TRUE);
 Refresh();
 }
 //---------------------------------------------------------------------------
 // width of the decorations border (4 shade-lines), should not be changed
@@ -265,879 +265,880 @@ void wxTabbedWindow::SetActiveTab( int tabNo )
 #define BORDER_SZ 4
 //---------------------------------------------------------------------------
 void wxTabbedWindow::DrawShadedRect( int x, int y, int width, int height,
-            wxPen& upperPen, wxPen& lowerPen, wxDC& dc
-          )
+                                    wxPen& upperPen, wxPen& lowerPen, wxDC& dc
+                                    )
 {
- // darw the lightened upper-left sides of the rectangle
-
- dc.SetPen( upperPen );
- dc.DrawLine( x,y, x, y + height - 1 ); // vert
- dc.DrawLine( x,y, x + width - 1,  y ); // horiz
-
- // draw the unenlightened lower-right sides of the rectangle
-
- dc.SetPen( lowerPen );
- dc.DrawLine( x + width - 1,  y, x + width - 1, y + height - 1 ); // vert
- dc.DrawLine( x, y + height - 1, x + width, y + height - 1 );     // horiz
 // darw the lightened upper-left sides of the rectangle
+  
 dc.SetPen( upperPen );
 dc.DrawLine( x,y, x, y + height - 1 ); // vert
 dc.DrawLine( x,y, x + width - 1,  y ); // horiz
+  
 // draw the unenlightened lower-right sides of the rectangle
+  
 dc.SetPen( lowerPen );
 dc.DrawLine( x + width - 1,  y, x + width - 1, y + height - 1 ); // vert
 dc.DrawLine( x, y + height - 1, x + width, y + height - 1 );     // horiz
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::DrawDecorations( wxDC& dc )
 {
- // Protability NOTE::: DrawLine(..) draws a line from the first position,
- //                     but not including the point specified by last position.
- //                     This way Windows draws lines, not sure how Motif and Gtk
- //                     prots behave...
-
- int width, height;
 // Protability NOTE::: DrawLine(..) draws a line from the first position,
 //                     but not including the point specified by last position.
 //                     This way Windows draws lines, not sure how Motif and Gtk
 //                     prots behave...
+  
 int width, height;
   GetClientSize( &width, &height );
-
- // check if there's at least a bit of space to draw things
-
- if ( width  < mHorizGap*2 + BORDER_SZ*2+1 ||
-   height < mVertGap*2  + BORDER_SZ*2+1 + mTitleHeight
-    )
-  return;
-
- // step #1 - draw border around the tab content area
-
- // setup position for kind of "pencil"
- int curX = mHorizGap;
- int curY = mVertGap;
-
- int xSize = width  - mHorizGap*2;
- int ySize = height - mVertGap *2  - mTitleHeight;
-
- // layer 1 (upper white)
- DrawShadedRect( curX+0, curY+0, xSize-0, ySize-0,
-     mWhitePen, mBlackPen, dc  );
-
- // layer 2 (upper gray)
- DrawShadedRect( curX+1, curY+1, xSize-2-1, ySize-2-1,
-     mGrayPen, mGrayPen, dc  );
-
- // layer 3 (upper darkGray)
- DrawShadedRect( curX+2, curY+2, xSize-3-2, ySize-3-2,
-     mDarkPen, mWhitePen, dc  );
-
- // layer 4 (upper black)
- DrawShadedRect( curX+3, curY+3, xSize-4-3, ySize-4-3,
-     mBlackPen, mGrayPen, dc  );
-
- // add non-siemtric layer from the lower-right side (confroming to MFC-look)
-
- dc.SetPen( mDarkPen );
- dc.DrawLine( curX+1, curY + ySize - 2, curX + xSize - 1, curY + ySize - 2 );   // horiz
- dc.DrawLine( curX + xSize - 2, curY + 1, curX + xSize - 2, curY + ySize - 2 ); // vert
-
- // step #2 - draw tab title bars
-
- curX = mFirstTitleGap;
- curY = height - mVertGap - mTitleHeight;
-
- int tabNo = 0;
- wxNode* pNode = mTabs.First();
-
- while( pNode )
- {
-  // "hard-coded metafile" for decorations
-
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  xSize = tab.mDims.x;
-  ySize = mTitleHeight;
-
-  if ( tabNo == mActiveTab )
-  {
-   dc.SetPen( mGrayPen );
-   dc.DrawLine( curX+1, curY-2, curX+xSize-2, curY-2 );
-   dc.DrawLine( curX+1, curY-1, curX+xSize-2, curY-1 );
-  }
-
-  dc.SetPen( mWhitePen );
-
+  
 // check if there's at least a bit of space to draw things
+  
 if ( width  < mHorizGap*2 + BORDER_SZ*2+1 ||
+       height < mVertGap*2  + BORDER_SZ*2+1 + mTitleHeight
+       )
+    return;
+  
 // step #1 - draw border around the tab content area
+  
 // setup position for kind of "pencil"
 int curX = mHorizGap;
 int curY = mVertGap;
+  
 int xSize = width  - mHorizGap*2;
 int ySize = height - mVertGap *2  - mTitleHeight;
+  
 // layer 1 (upper white)
 DrawShadedRect( curX+0, curY+0, xSize-0, ySize-0,
+                 mWhitePen, mBlackPen, dc  );
+  
 // layer 2 (upper gray)
 DrawShadedRect( curX+1, curY+1, xSize-2-1, ySize-2-1,
+                 mGrayPen, mGrayPen, dc  );
+  
 // layer 3 (upper darkGray)
 DrawShadedRect( curX+2, curY+2, xSize-3-2, ySize-3-2,
+                 mDarkPen, mWhitePen, dc  );
+  
 // layer 4 (upper black)
 DrawShadedRect( curX+3, curY+3, xSize-4-3, ySize-4-3,
+                 mBlackPen, mGrayPen, dc  );
+  
 // add non-siemtric layer from the lower-right side (confroming to MFC-look)
+  
 dc.SetPen( mDarkPen );
 dc.DrawLine( curX+1, curY + ySize - 2, curX + xSize - 1, curY + ySize - 2 );   // horiz
 dc.DrawLine( curX + xSize - 2, curY + 1, curX + xSize - 2, curY + ySize - 2 ); // vert
+  
 // step #2 - draw tab title bars
+  
 curX = mFirstTitleGap;
 curY = height - mVertGap - mTitleHeight;
+  
 int tabNo = 0;
 wxNode* pNode = mTabs.First();
+  
 while( pNode )
   {
+      // "hard-coded metafile" for decorations
+      
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      xSize = tab.mDims.x;
+      ySize = mTitleHeight;
+      
+      if ( tabNo == mActiveTab )
+       {
+         dc.SetPen( mGrayPen );
+         dc.DrawLine( curX+1, curY-2, curX+xSize-2, curY-2 );
+         dc.DrawLine( curX+1, curY-1, curX+xSize-2, curY-1 );
+       }
+      
+      dc.SetPen( mWhitePen );
+      
   if ( tabNo == mActiveTab )
-   dc.DrawLine( curX, curY-2, curX, curY+ySize-2 );
+    dc.DrawLine( curX, curY-2, curX, curY+ySize-2 );
   else
-   dc.DrawLine( curX, curY, curX, curY+ySize-2 );
-
+    dc.DrawLine( curX, curY, curX, curY+ySize-2 );
+  
   dc.SetPen( mDarkPen );
   dc.DrawLine( curX+1, curY+ySize-3, curX+1, curY+ySize-1 ); // to pix down
   dc.DrawLine( curX+2, curY+ySize-2, curX+xSize-2, curY+ySize-2 );
   dc.DrawLine( curX+xSize-3, curY+ySize-3, curX+xSize-2, curY+ySize-3 );
   if ( tabNo == mActiveTab )
-   dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-3 );
+    dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-3 );
   else
-   dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-1 );
-
+    dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-1 );
+  
   dc.SetPen( mBlackPen );
   dc.DrawLine( curX+xSize-1, curY, curX+xSize-1, curY+ySize-2 );
   dc.DrawLine( curX+xSize-2, curY+ySize-2, curX+xSize-3, curY+ySize-2 );
   dc.DrawLine( curX+xSize-3, curY+ySize-1, curX+1, curY+ySize-1 );
-
+  
   pNode = pNode->Next();
   ++tabNo;
-
+  
   // darw image and (or without) text centered within the
   // title bar rectangle
-
+  
   if ( mLayoutType != wxTITLE_BORDER_ONLY && tab.HasImg() )
-  {
-   wxMemoryDC tmpDc;
+    {
+      wxMemoryDC tmpDc;
       tmpDc.SelectObject( tab.GetImg() );
-
+      
       dc.Blit( curX + mTitleHorizGap,
-         curY + ( ySize - tab.ImgHeight() ) / 2,
-      tab.ImgWidth(),
-      tab.ImgHeight(),
-      &tmpDc, 0, 0, wxCOPY
-       );
-  }
-
+              curY + ( ySize - tab.ImgHeight() ) / 2,
+              tab.ImgWidth(),
+              tab.ImgHeight(),
+              &tmpDc, 0, 0, wxCOPY
+              );
+    }
+  
   if ( mLayoutType == wxTITLE_IMG_AND_TEXT && tab.HasText() )
-  {
-   long x,w,h;
-
-   // set select default font of the window into it's device context
-   dc.SetFont( GetLabelingFont() );
-
-   dc.SetTextBackground( GetBackgroundColour() );
-
-   dc.GetTextExtent(tab.mText, &w, &h );
-
-   x = curX + mTitleHorizGap +
-    tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
-
-   dc.DrawText( tab.GetText(), x, curY + ( ySize - h ) / 2 );
-  }
+    {
+      long x,w,h;
+      
+      // set select default font of the window into it's device context
+      //dc.SetFont( GetLabelingFont() );
+      
+      dc.SetTextBackground( GetBackgroundColour() );
+      
+      dc.GetTextExtent(tab.mText, &w, &h );
+      
+      x = curX + mTitleHorizGap +
+       tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
+      
+      dc.DrawText( tab.GetText(), x, curY + ( ySize - h ) / 2 );
+    }
   curX += xSize;
-
- } // end of `while (pNode)'
+  
   } // end of `while (pNode)'
 }
 //---------------------------------------------------------------------------
 int wxTabbedWindow::HitTest( const wxPoint& pos )
 {
- int width, height;
 int width, height;
   GetClientSize( &width, &height );
-
- int curX = mFirstTitleGap;
- int curY = height - mVertGap - mTitleHeight;
-
- int     tabNo = 0;
- wxNode* pNode = mTabs.First();
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  int w,h;
-  w = tab.mDims.x;
-  h = tab.mDims.y;
-  // hit test rectangle of the currnet tab title bar
-  if ( pos.x >= curX && pos.x < curX + tab.mDims.x  &&
-    pos.y >= curY && pos.y < curY + tab.mDims.y
-     )
-  {
-   return tabNo;
-  }
-
-  curX += tab.mDims.x;
-
-  pNode = pNode->Next();
-  ++tabNo;
- }
-
- return -1;
+  
 int curX = mFirstTitleGap;
 int curY = height - mVertGap - mTitleHeight;
+  
 int     tabNo = 0;
 wxNode* pNode = mTabs.First();
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      int w,h;
+      w = tab.mDims.x;
+      h = tab.mDims.y;
+      // hit test rectangle of the currnet tab title bar
+      if ( pos.x >= curX && pos.x < curX + tab.mDims.x  &&
+          pos.y >= curY && pos.y < curY + tab.mDims.y
+          )
+       {
+         return tabNo;
+       }
+      
+      curX += tab.mDims.x;
+      
+      pNode = pNode->Next();
+      ++tabNo;
   }
+  
 return -1;
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::HideInactiveTabs( bool andRepaint )
 {
- if ( !andRepaint )
-  return;
-
- wxNode* pNode = mTabs.First();
- int     tabNo = 0;
-
- while( pNode )
- {
-  if ( tabNo != mActiveTab )
 if ( !andRepaint )
+    return;
+  
 wxNode* pNode = mTabs.First();
 int     tabNo = 0;
+  
 while( pNode )
   {
+      if ( tabNo != mActiveTab )
   {
-   twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-   tab.mpContent->Show(FALSE);
+    twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+    tab.mpContent->Show(FALSE);
   }
-
-  pNode = pNode->Next();
-  ++tabNo;
- }
+      
+      pNode = pNode->Next();
+      ++tabNo;
   }
 }
 //---------------------------------------------------------------------------
 wxFont wxTabbedWindow::GetLabelingFont()
 {
- wxFont font;
 wxFont font;
 #ifdef __WINDOWS__
- font.SetFaceName("MS Sans Serif");
 font.SetFaceName("MS Sans Serif");
 #else
- font.SetFamily( wxSWISS );
 font.SetFamily( wxSWISS );
 #endif
-
- font.SetStyle(40);
- font.SetWeight(40);
- font.SetPointSize( 8 );
-
+  
 font.SetStyle(40);
 font.SetWeight(40);
 font.SetPointSize( 8 );
+  
 #ifdef __WINDOWS__
- font.RealizeResource();
 font.RealizeResource();
 #endif
-
- return font;
+  
 return font;
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::RecalcLayout(bool andRepaint)
 {
- HideInactiveTabs(andRepaint);
-
- // resetup position of the active tab
-
- int width, height;
 HideInactiveTabs(andRepaint);
+  
 // resetup position of the active tab
+  
 int width, height;
   GetClientSize( &width, &height );
-
- int curX = mHorizGap + BORDER_SZ;
- int curY = mVertGap  + BORDER_SZ;
-
- int xSize = width  - mHorizGap*2 - BORDER_SZ*2-1;
- int ySize = height - mVertGap*2  - BORDER_SZ*2-1 - mTitleHeight;
-
- SizeTabs( curX, curY, xSize, ySize, andRepaint );
-
- // pass #1 - try to layout assuming it's wxTITLE_IMG_AND_TEXT
-
- mLayoutType = wxTITLE_IMG_AND_TEXT;
-
- wxNode* pNode = mTabs.First();
-
- curX = mFirstTitleGap; // the left-side gap
- mTitleHeight = 0;
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  wxWindowDC dc(this);
-
-  long w,h;
-
-  // set select default font of the window into it's device context
-  dc.SetFont( GetLabelingFont() );
-
+  
 int curX = mHorizGap + BORDER_SZ;
 int curY = mVertGap  + BORDER_SZ;
+  
 int xSize = width  - mHorizGap*2 - BORDER_SZ*2-1;
 int ySize = height - mVertGap*2  - BORDER_SZ*2-1 - mTitleHeight;
+  
 SizeTabs( curX, curY, xSize, ySize, andRepaint );
+  
 // pass #1 - try to layout assuming it's wxTITLE_IMG_AND_TEXT
+  
 mLayoutType = wxTITLE_IMG_AND_TEXT;
+  
 wxNode* pNode = mTabs.First();
+  
 curX = mFirstTitleGap; // the left-side gap
 mTitleHeight = 0;
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      wxWindowDC dc(this);
+      
+      long w,h;
+      
+      // set select default font of the window into it's device context
+  //dc.SetFont( GetLabelingFont() );
+  
   dc.GetTextExtent(tab.mText, &w, &h );
-
+  
   tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) +
-             tab.ImgWidth() + mTitleHorizGap*2;
-
+    tab.ImgWidth() + mTitleHorizGap*2;
+  
   tab.mDims.y  = wxMax( h, tab.ImgHeight() ) + mTitleVertGap*2;
   mTitleHeight = wxMax( mTitleHeight, tab.mDims.y );
-
-  curX += tab.mDims.x;
-
-  pNode = pNode->Next();
- }
-
- curX += mHorizGap; // the right-side gap
-
- // make all title bars of equel height
-
- pNode = mTabs.First();
-
- while( pNode )
- {
-  ((twTabInfo*)(pNode->Data()))->mDims.y = mTitleHeight;;
-  pNode = pNode->Next();
- }
-
- // if curX has'nt ran out of bounds, leave TITLE_IMG layout and return
- if ( curX < width - mHorizGap )
-  return;
-
- // pass #2 - try to layout assuming wxTITLE_IMG_ONLY
-
- mLayoutType = wxTITLE_IMG_ONLY;
-
- pNode = mTabs.First();
-
- curX = mFirstTitleGap; // the left-side gap
-
- int denomiator = mTabs.Number();
- if ( denomiator == 0 ) ++denomiator;
-
- mBorderOnlyWidth = (width - mFirstTitleGap - mHorizGap) / denomiator;
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  if ( tab.HasImg() )
-  {
-   tab.mDims.x = tab.ImgWidth()  + mTitleHorizGap*2;
-   tab.mDims.y = tab.ImgHeight() + mTitleVertGap*2;
-  }
-  else
-  {
-   tab.mDims.x = mBorderOnlyWidth;
-   tab.mDims.y = mTitleHeight;
-  }
-
+  
   curX += tab.mDims.x;
-
+  
   pNode = pNode->Next();
- }
-
- curX += mHorizGap; // the right-side gap
-
+    }
+  
+  curX += mHorizGap; // the right-side gap
+  
+  // make all title bars of equel height
+  
+  pNode = mTabs.First();
+  
+  while( pNode )
+    {
+      ((twTabInfo*)(pNode->Data()))->mDims.y = mTitleHeight;;
+      pNode = pNode->Next();
+    }
+  
+  // if curX has'nt ran out of bounds, leave TITLE_IMG layout and return
+  if ( curX < width - mHorizGap )
+    return;
+  
+  // pass #2 - try to layout assuming wxTITLE_IMG_ONLY
+  
+  mLayoutType = wxTITLE_IMG_ONLY;
+  
+  pNode = mTabs.First();
+  
+  curX = mFirstTitleGap; // the left-side gap
+  
+  int denomiator = mTabs.Number();
+  if ( denomiator == 0 ) ++denomiator;
+  
+  mBorderOnlyWidth = (width - mFirstTitleGap - mHorizGap) / denomiator;
+  
+  while( pNode )
+    {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      if ( tab.HasImg() )
+       {
+         tab.mDims.x = tab.ImgWidth()  + mTitleHorizGap*2;
+         tab.mDims.y = tab.ImgHeight() + mTitleVertGap*2;
+       }
+      else
+       {
+         tab.mDims.x = mBorderOnlyWidth;
+         tab.mDims.y = mTitleHeight;
+       }
+      
+      curX += tab.mDims.x;
+      
+      pNode = pNode->Next();
+    }
+  
+  curX += mHorizGap; // the right-side gap
+  
  // if curX has'nt ran out of bounds, leave IMG_ONLY layout and return
- if ( curX < width  - mHorizGap )
-  return;
-
- // pass #3 - set the narrowest layout wxTITLE_BORDER_ONLY
-
- mLayoutType = wxTITLE_BORDER_ONLY;
-
- pNode = mTabs.First();
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  tab.mDims.x = mBorderOnlyWidth;
-  tab.mDims.y = mTitleHeight;
-
-  pNode = pNode->Next();
- }
 if ( curX < width  - mHorizGap )
+    return;
+  
 // pass #3 - set the narrowest layout wxTITLE_BORDER_ONLY
+  
 mLayoutType = wxTITLE_BORDER_ONLY;
+  
 pNode = mTabs.First();
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      tab.mDims.x = mBorderOnlyWidth;
+      tab.mDims.y = mTitleHeight;
+      
+      pNode = pNode->Next();
   }
 }
 //---------------------------------------------------------------------------
 // wx event handlers
 //---------------------------------------------------------------------------
 void wxTabbedWindow::OnPaint( wxPaintEvent& event )
 {
- wxPaintDC dc(this);
- DrawDecorations( dc );
 wxPaintDC dc(this);
 DrawDecorations( dc );
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::OnSize ( wxSizeEvent& event )
 {
- SetBackgroundColour( wxColour( 192,192,192 ) );
- RecalcLayout(TRUE);
 SetBackgroundColour( wxColour( 192,192,192 ) );
 RecalcLayout(TRUE);
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::OnBkErase( wxEraseEvent& event )
 {
- // do nothing
 // do nothing
 }
 //---------------------------------------------------------------------------
 void wxTabbedWindow::OnLButtonDown( wxMouseEvent& event )
 {
- // floats, why?
- int x = (int)event.m_x;
- int y = (int)event.m_y;
-
- int tabNo = HitTest( wxPoint(x,y) );
-
- if ( tabNo != -1 )
- {
-  SetActiveTab( tabNo );
- }
 // floats, why?
 int x = (int)event.m_x;
 int y = (int)event.m_y;
+  
 int tabNo = HitTest( wxPoint(x,y) );
+  
 if ( tabNo != -1 )
   {
+      SetActiveTab( tabNo );
   }
 }
 //---------------------------------------------------------------------------
 // Implementation for class wxPaggedWindow
 //---------------------------------------------------------------------------
 IMPLEMENT_DYNAMIC_CLASS( wxPaggedWindow, wxTabbedWindow )
-//---------------------------------------------------------------------------
-BEGIN_EVENT_TABLE( wxPaggedWindow, wxTabbedWindow )
- EVT_SIZE     ( wxPaggedWindow::OnSize        )
- EVT_PAINT    ( wxPaggedWindow::OnPaint       )
- EVT_LEFT_DOWN( wxPaggedWindow::OnLButtonDown )
- EVT_LEFT_UP  ( wxPaggedWindow::OnLButtonUp   )
- EVT_MOTION   ( wxPaggedWindow::OnMouseMove   )
- EVT_SCROLL   ( wxPaggedWindow::OnScroll      )
-END_EVENT_TABLE()
-//---------------------------------------------------------------------------
-// border for pagged-window is 2 shaded-lines
-//---------------------------------------------------------------------------
+  //---------------------------------------------------------------------------
+  BEGIN_EVENT_TABLE( wxPaggedWindow, wxTabbedWindow )
 EVT_SIZE     ( wxPaggedWindow::OnSize        )
 EVT_PAINT    ( wxPaggedWindow::OnPaint       )
 EVT_LEFT_DOWN( wxPaggedWindow::OnLButtonDown )
 EVT_LEFT_UP  ( wxPaggedWindow::OnLButtonUp   )
 EVT_MOTION   ( wxPaggedWindow::OnMouseMove   )
 EVT_SCROLL   ( wxPaggedWindow::OnScroll      )
+  END_EVENT_TABLE()
+  //---------------------------------------------------------------------------
+  // border for pagged-window is 2 shaded-lines
+  //---------------------------------------------------------------------------
 #undef  BORDER_SZ
 #define BORDER_SZ 2
-//---------------------------------------------------------------------------
-wxPaggedWindow::wxPaggedWindow()
-
+  //---------------------------------------------------------------------------
+  wxPaggedWindow::wxPaggedWindow()
+  
     : mScrollEventInProgress( FALSE ),
-
-   mTabTrianGap(4),
-
-   mWhiteBrush( wxColour(255,255,255), wxSOLID ),
-   mGrayBrush ( wxColour(192,192,192), wxSOLID ),
-
-   mCurentRowOfs( 0 ),
-   mAdjustableTitleRowLen( 300 ),
-
-   mIsDragged    ( FALSE ),
-   mDagOrigin    ( 0 ),
-   mCursorChanged( FALSE ),
-   mResizeCursor ( wxCURSOR_SIZEWE ),
-   mNormalCursor ( wxCURSOR_ARROW  )
+      
+      mTabTrianGap(4),
+      
+      mWhiteBrush( wxColour(255,255,255), wxSOLID ),
+      mGrayBrush ( wxColour(192,192,192), wxSOLID ),
+      
+      mCurentRowOfs( 0 ),
+      mAdjustableTitleRowLen( 300 ),
+      
+      mIsDragged    ( FALSE ),
+      mDagOrigin    ( 0 ),
+      mCursorChanged( FALSE ),
+      mResizeCursor ( wxCURSOR_SIZEWE ),
+      mNormalCursor ( wxCURSOR_ARROW  )
 {
- mTitleVertGap = 2;
- mTitleHorizGap = 10;
 mTitleVertGap = 2;
 mTitleHorizGap = 10;
  mNoVertScroll = TRUE;       // Horizontale Scroll abschalten
 }
 //---------------------------------------------------------------------------
 wxPaggedWindow::~wxPaggedWindow()
 {
- // nothing (base class handles destruction)
 // nothing (base class handles destruction)
 }
 //---------------------------------------------------------------------------
 wxFont wxPaggedWindow::GetLabelingFont()
 {
- wxFont font;
-
 wxFont font;
+  
 #ifdef __WINDOWS__
- font.SetFaceName("Comic Sans MS");
 font.SetFaceName("Comic Sans MS");
 #else
- font.SetFamily( wxSWISS );
 font.SetFamily( wxSWISS );
 #endif
-
+  
  font.SetStyle(40);
  font.SetWeight(40);
  font.SetPointSize( 8 );
-
  return font;
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnTabAdded( twTabInfo* pInfo )
 {
- int units = GetWholeTabRowLen() / 20;
 int units = GetWholeTabRowLen() / 20;
 
- mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
 mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
 }
 //---------------------------------------------------------------------------
 wxScrollBar& wxPaggedWindow::GetVerticalScrollBar()
 {
- return *mpVertScroll;
 return *mpVertScroll;
 }
 //---------------------------------------------------------------------------
 wxScrollBar& wxPaggedWindow::GetHorizontalScrollBar()
 {
- return *mpHorizScroll;
 return *mpHorizScroll;
 }
 //---------------------------------------------------------------------------
 int wxPaggedWindow::GetWholeTabRowLen()
 {
- wxNode* pNode = mTabs.First();
-
- int len = 0;
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  len += tab.mDims.x;
-  pNode = pNode->Next();
- }
-
- return len;
 wxNode* pNode = mTabs.First();
+  
 int len = 0;
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      len += tab.mDims.x;
+      pNode = pNode->Next();
   }
+  
 return len;
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::DrawPaperBar( twTabInfo& tab, int x, int y,
-          wxBrush& brush, wxPen& pen, wxDC& dc )
+                                  wxBrush& brush, wxPen& pen, wxDC& dc )
 {
- wxPoint poly[4];
-
- // draw organizer-style paper outlet
-
- poly[0].x = x - mTabTrianGap;
- poly[0].y = y;
-
- poly[1].x = x + mTabTrianGap;
- poly[1].y = y + tab.mDims.y-1;
-
- poly[2].x = x + tab.mDims.x - mTabTrianGap;
- poly[2].y = y + tab.mDims.y-1;
-
- poly[3].x = x + tab.mDims.x + mTabTrianGap;
- poly[3].y = y;
-
- dc.SetPen( pen );
- dc.SetBrush( brush );
-
- dc.DrawPolygon( 4, poly );
-
- long w,h;
-
- // set select default font of the window into it's device context
- dc.SetFont( GetLabelingFont() );
-
- dc.SetTextBackground( brush.GetColour() );
-
- dc.GetTextExtent(tab.mText, &w, &h );
-
- if ( tab.HasImg() )
- {
-   wxMemoryDC tmpDc;
 wxPoint poly[4];
+  
 // draw organizer-style paper outlet
+  
 poly[0].x = x - mTabTrianGap;
 poly[0].y = y;
+  
 poly[1].x = x + mTabTrianGap;
 poly[1].y = y + tab.mDims.y-1;
+  
 poly[2].x = x + tab.mDims.x - mTabTrianGap;
 poly[2].y = y + tab.mDims.y-1;
+  
 poly[3].x = x + tab.mDims.x + mTabTrianGap;
 poly[3].y = y;
+  
 dc.SetPen( pen );
 dc.SetBrush( brush );
+  
 dc.DrawPolygon( 4, poly );
+  
 long w,h;
+  
 // set select default font of the window into it's device context
 //dc.SetFont( GetLabelingFont() );
+  
 dc.SetTextBackground( brush.GetColour() );
+  
 dc.GetTextExtent(tab.mText, &w, &h );
+  
 if ( tab.HasImg() )
   {
+      wxMemoryDC tmpDc;
       tmpDc.SelectObject( tab.GetImg() );
-
+      
       dc.Blit( x + mTitleHorizGap,
-         y + ( tab.mDims.y - tab.ImgHeight() ) / 2,
-      tab.ImgWidth(),
-      tab.ImgHeight(),
-      &tmpDc, 0, 0, wxCOPY
-       );
- }
-
- if ( tab.HasText() )
- {
-  int tx = x + mTitleHorizGap +
-   tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
-
-  dc.DrawText( tab.GetText(), tx, y + ( tab.mDims.y - h ) / 2 );
- }
+              y + ( tab.mDims.y - tab.ImgHeight() ) / 2,
+              tab.ImgWidth(),
+              tab.ImgHeight(),
+              &tmpDc, 0, 0, wxCOPY
+              );
   }
+  
 if ( tab.HasText() )
   {
+      int tx = x + mTitleHorizGap +
+       tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
+      
+      dc.DrawText( tab.GetText(), tx, y + ( tab.mDims.y - h ) / 2 );
   }
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::DrawDecorations( wxDC& dc )
 {
- // FIXME:: the is big body have to be split!
-
- int width, height;
 // FIXME:: the is big body have to be split!
+  
 int width, height;
   GetClientSize( &width, &height );
 
- int curX = mHorizGap;
- int curY = mVertGap;
-
- int xSize = width  - mHorizGap*2;
- int ySize = height - mVertGap*2;
-
- DrawShadedRect( curX, curY, xSize, ySize,
-              mDarkPen, mWhitePen, dc );
-
- DrawShadedRect( curX+1, curY+1, xSize-2, ySize-2,
-                 mBlackPen, mGrayPen, dc );
-
- // draw inactive tab title bars frist (left-to-right)
-
- wxNode* pNode = mTabs.First();
- int     tabNo = 0;
-
- /* OLD STUFF::
- curX = mTitleRowStart;
- curY = height - mVertGap - BORDER_SZ - mTitleHeight;
- */
-
- curX = mTabTrianGap;
- curY = 0;
-
- // FOR NOW:: avoid creating bitmap with invalid dimensions
-
- if ( mTitleRowLen < 1 || mTitleHeight < 1 ) return;
-
- wxMemoryDC tmpDc;
- wxBitmap   tmpBmp( mTitleRowLen, mTitleHeight );
-
- tmpDc.SelectObject( tmpBmp );
- tmpDc.SetPen( mGrayPen );
- tmpDc.SetBrush( mGrayBrush );
- tmpDc.DrawRectangle( 0,0, mTitleRowLen, mTitleHeight );
-
- tmpDc.SetDeviceOrigin( mCurentRowOfs, 0 );
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  if ( tabNo != mActiveTab )
-
-   DrawPaperBar( tab, curX, curY, mGrayBrush, mBlackPen, tmpDc );
-
-  curX += tab.mDims.x;
-
-  pNode = pNode->Next();
-  ++tabNo;
- }
-
- // finally, draw the active tab (white-filled)
-
- pNode = mTabs.First();
- tabNo = 0;
-
- curX = mTabTrianGap;
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  if ( tabNo == mActiveTab )
-  {
-   DrawPaperBar( tab, curX, curY, mWhiteBrush, mBlackPen, tmpDc );
-
-   tmpDc.SetPen( mWhitePen );
-
-   tmpDc.DrawLine( curX - mTabTrianGap+1, curY,
-                curX + tab.mDims.x + mTabTrianGap, curY );
-   break;
-  }
-  curX += tab.mDims.x;
-
-  pNode = pNode->Next();
-  ++tabNo;
- }
-
- // back to initial device origin
-
- tmpDc.SetDeviceOrigin( 0, 0 );
-
- // draw resize-hint-stick
-
- curX = mTitleRowLen - 6;
-
- DrawShadedRect( curX+0, 0+0, 6,   mTitleHeight,   mGrayPen,  mBlackPen, tmpDc );
- DrawShadedRect( curX+1, 0+1, 6-2, mTitleHeight-2, mWhitePen, mDarkPen,  tmpDc );
- DrawShadedRect( curX+2, 0+2, 6-4, mTitleHeight-4, mGrayPen,  mGrayPen,  tmpDc );
-
-
-
- dc.Blit( mTitleRowStart,
-       height - mVertGap - BORDER_SZ - mTitleHeight,
-    mTitleRowLen, mTitleHeight,
-    &tmpDc, 0,0, wxCOPY );
 int curX = mHorizGap;
 int curY = mVertGap;
+  
 int xSize = width  - mHorizGap*2;
 int ySize = height - mVertGap*2;
+  
 DrawShadedRect( curX, curY, xSize, ySize,
+                 mDarkPen, mWhitePen, dc );
+  
 DrawShadedRect( curX+1, curY+1, xSize-2, ySize-2,
+                 mBlackPen, mGrayPen, dc );
+  
 // draw inactive tab title bars frist (left-to-right)
+  
 wxNode* pNode = mTabs.First();
 int     tabNo = 0;
+  
 /* OLD STUFF::
    curX = mTitleRowStart;
    curY = height - mVertGap - BORDER_SZ - mTitleHeight;
    */
+  
 curX = mTabTrianGap;
 curY = 0;
+  
 // FOR NOW:: avoid creating bitmap with invalid dimensions
+  
 if ( mTitleRowLen < 1 || mTitleHeight < 1 ) return;
+  
 wxMemoryDC tmpDc;
 wxBitmap   tmpBmp( mTitleRowLen, mTitleHeight );
+  
 tmpDc.SelectObject( tmpBmp );
 tmpDc.SetPen( mGrayPen );
 tmpDc.SetBrush( mGrayBrush );
 tmpDc.DrawRectangle( 0,0, mTitleRowLen, mTitleHeight );
+
 tmpDc.SetDeviceOrigin( mCurentRowOfs, 0 );
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      if ( tabNo != mActiveTab )
+       
+       DrawPaperBar( tab, curX, curY, mGrayBrush, mBlackPen, tmpDc );
+      
+      curX += tab.mDims.x;
+      
+      pNode = pNode->Next();
+      ++tabNo;
   }
+  
 // finally, draw the active tab (white-filled)
+  
 pNode = mTabs.First();
 tabNo = 0;
+  
 curX = mTabTrianGap;
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      if ( tabNo == mActiveTab )
+       {
+         DrawPaperBar( tab, curX, curY, mWhiteBrush, mBlackPen, tmpDc );
+         
+         tmpDc.SetPen( mWhitePen );
+         
+         tmpDc.DrawLine( curX - mTabTrianGap+1, curY,
+                         curX + tab.mDims.x + mTabTrianGap, curY );
+         break;
+       }
+      curX += tab.mDims.x;
+      
+      pNode = pNode->Next();
+      ++tabNo;
   }
+  
 // back to initial device origin
+  
 tmpDc.SetDeviceOrigin( 0, 0 );
+  
 // draw resize-hint-stick
+  
 curX = mTitleRowLen - 6;
+  
 DrawShadedRect( curX+0, 0+0, 6,   mTitleHeight,   mGrayPen,  mBlackPen, tmpDc );
 DrawShadedRect( curX+1, 0+1, 6-2, mTitleHeight-2, mWhitePen, mDarkPen,  tmpDc );
 DrawShadedRect( curX+2, 0+2, 6-4, mTitleHeight-4, mGrayPen,  mGrayPen,  tmpDc );
+  
+  
+  
 dc.Blit( mTitleRowStart,
+          height - mVertGap - BORDER_SZ - mTitleHeight,
+          mTitleRowLen, mTitleHeight,
+          &tmpDc, 0,0, wxCOPY );
 }
 //---------------------------------------------------------------------------
 int wxPaggedWindow::HitTest( const wxPoint& pos )
 {
- return wxTabbedWindow::HitTest( pos );
 return wxTabbedWindow::HitTest( pos );
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::RecalcLayout(bool andRepaint)
 {
- mTitleRowLen = mAdjustableTitleRowLen;
-
- if ( int(mpTabScroll) == -1 ) return;
-
- // scroll bars should be created after Create() for this window is called
- if ( !mpTabScroll )
- {
-  mpTabScroll   =
-   new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
-
-  mpHorizScroll =
-    new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
+  mTitleRowLen = mAdjustableTitleRowLen;
+  
+  if ( int(mpTabScroll) == -1 ) return;
+  
+  // scroll bars should be created after Create() for this window is called
+  if ( !mpTabScroll )
+    {
+      mpTabScroll   =
+       new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
+      
+      mpHorizScroll =
+       new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
+      if (!mNoVertScroll)       // Vertical Scroll (Original)
+       mpVertScroll = new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL );
+    }
+  
+  {
+    int units = GetWholeTabRowLen() / 20;
+    
+    mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
+  }
+  
+  // resetup position of the active tab
+  
+  int thumbLen = 16; // FOR NOW:: hardcoded
+  
+  int width, height;
+  GetClientSize( &width, &height );
+  
+  mTitleHeight = thumbLen;
+  
+  int curX = mHorizGap + BORDER_SZ;
+  int curY = mVertGap  + BORDER_SZ;
+  
+  int xSize;
   if (!mNoVertScroll)       // Vertical Scroll (Original)
-   mpVertScroll = new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL );
- }
-
- {
-  int units = GetWholeTabRowLen() / 20;
-
-  mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
- }
-
- // resetup position of the active tab
-
- int thumbLen = 16; // FOR NOW:: hardcoded
-
- int width, height;
- GetClientSize( &width, &height );
-
- mTitleHeight = thumbLen;
-
- int curX = mHorizGap + BORDER_SZ;
- int curY = mVertGap  + BORDER_SZ;
-
- int xSize;
- if (!mNoVertScroll)       // Vertical Scroll (Original)
-  xSize = width  - mHorizGap*2 - BORDER_SZ*2 - thumbLen;
- else
-  xSize = width  - mHorizGap*2 - BORDER_SZ*2;
-
- int ySize = height - mVertGap*2  - BORDER_SZ*2 - mTitleHeight;
-
- SizeTabs( curX, curY, xSize, ySize, andRepaint );
-
- // setup title bar LINES's horizontal scroll bar
-
- curY = height - mVertGap - BORDER_SZ - thumbLen;
-
- mpTabScroll->SetSize( curX, curY, thumbLen*2, thumbLen );
-
- // setup view's HORIZONTAL scroll bar
- curX += thumbLen*2;
-
- mTitleRowStart = curX;
- mFirstTitleGap = curX + mCurentRowOfs + mTabTrianGap;
-
- mTitleRowLen = wxMin( mAdjustableTitleRowLen,
+    xSize = width  - mHorizGap*2 - BORDER_SZ*2 - thumbLen;
+  else
+    xSize = width  - mHorizGap*2 - BORDER_SZ*2;
+  
+  int ySize = height - mVertGap*2  - BORDER_SZ*2 - mTitleHeight;
+  
+  SizeTabs( curX, curY, xSize, ySize, andRepaint );
+  
+  // setup title bar LINES's horizontal scroll bar
+  
+  curY = height - mVertGap - BORDER_SZ - thumbLen;
+  
+  mpTabScroll->SetSize( curX, curY, thumbLen*2, thumbLen );
+  
+  // setup view's HORIZONTAL scroll bar
+  curX += thumbLen*2;
+  
+  mTitleRowStart = curX;
+  mFirstTitleGap = curX + mCurentRowOfs + mTabTrianGap;
+  
+  mTitleRowLen = wxMin( mAdjustableTitleRowLen,
                     width - mHorizGap - BORDER_SZ - thumbLen*4 - curX );
-
- curX += mTitleRowLen;
-
- if (!mNoVertScroll)       // Vertical Scroll (Original)
-  mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ - thumbLen, thumbLen );
- else
-  mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ-4, thumbLen );
-
- // setup view's VERTICAL scroll bar
- if (!mNoVertScroll)       // Vertical Scroll (Original)
- {
-  curX = width - mHorizGap - BORDER_SZ - thumbLen;
-  curY = mVertGap  + BORDER_SZ;
-  mpVertScroll->SetSize( curX, curY, thumbLen,height - curY - mVertGap - BORDER_SZ - thumbLen);
- }
- // layout tab title bars
-
- mLayoutType = wxTITLE_IMG_AND_TEXT;
-
- wxNode* pNode = mTabs.First();
-
- while( pNode )
- {
-  twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
-
-  wxWindowDC dc(this);
-
-  long w,h;
-
-  // set select default font of the window into it's device context
-  dc.SetFont( GetLabelingFont() );
-  dc.GetTextExtent(tab.mText, &w, &h );
-
-  tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) +
-             tab.ImgWidth() + mTitleHorizGap*2;
-
-  tab.mDims.y  = mTitleHeight;
-
-  pNode = pNode->Next();
- }
-
- // disable title-bar scroller if there's nowhere to scroll to
-
- mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0  );
+  
 curX += mTitleRowLen;
+  
 if (!mNoVertScroll)       // Vertical Scroll (Original)
+    mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ - thumbLen, thumbLen );
 else
+    mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ-4, thumbLen );
+  
 // setup view's VERTICAL scroll bar
 if (!mNoVertScroll)       // Vertical Scroll (Original)
   {
+      curX = width - mHorizGap - BORDER_SZ - thumbLen;
+      curY = mVertGap  + BORDER_SZ;
+      mpVertScroll->SetSize( curX, curY, thumbLen,height - curY - mVertGap - BORDER_SZ - thumbLen);
   }
 // layout tab title bars
+  
 mLayoutType = wxTITLE_IMG_AND_TEXT;
+  
 wxNode* pNode = mTabs.First();
+  
 while( pNode )
   {
+      twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+      
+      wxWindowDC dc(this);
+      
+      long w,h;
+      
+      // set select default font of the window into it's device context
+      //dc.SetFont( GetLabelingFont() );
+      dc.GetTextExtent(tab.mText, &w, &h );
+      
+      tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) +
+       tab.ImgWidth() + mTitleHorizGap*2;
+      
+      tab.mDims.y  = mTitleHeight;
+      
+      pNode = pNode->Next();
   }
+  
 // disable title-bar scroller if there's nowhere to scroll to
+  
 mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0  );
 }
 //---------------------------------------------------------------------------
 // event handlers
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnPaint( wxPaintEvent& event )
 {
- wxPaintDC dc(this);
- DrawDecorations( dc );
 wxPaintDC dc(this);
 DrawDecorations( dc );
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnSize ( wxSizeEvent& event )
 {
- wxTabbedWindow::OnSize(event);
 wxTabbedWindow::OnSize(event);
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnLButtonDown( wxMouseEvent& event )
 {
- if ( mCursorChanged )
- {
-  mIsDragged = TRUE;
-  mDagOrigin = event.m_x;
-
-  mOriginalTitleRowLen = mAdjustableTitleRowLen;
-
-  CaptureMouse();
- }
- else
- {
-  wxTabbedWindow::OnLButtonDown( event );
- }
 if ( mCursorChanged )
   {
+      mIsDragged = TRUE;
+      mDagOrigin = event.m_x;
+      
+      mOriginalTitleRowLen = mAdjustableTitleRowLen;
+      
+      CaptureMouse();
   }
 else
   {
+      wxTabbedWindow::OnLButtonDown( event );
   }
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnLButtonUp( wxMouseEvent& event )
 {
- if ( mIsDragged )
- {
-  mIsDragged     = FALSE;
-  mCursorChanged = FALSE;
-  SetCursor( mNormalCursor );
-
-  ReleaseMouse();
- }
 if ( mIsDragged )
   {
+      mIsDragged     = FALSE;
+      mCursorChanged = FALSE;
+      SetCursor( mNormalCursor );
+      
+      ReleaseMouse();
   }
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnMouseMove( wxMouseEvent& event )
 {
- int width, height;
 int width, height;
   GetClientSize( &width, &height );
-
- if ( !mIsDragged )
- {
-  int y = height - mVertGap - BORDER_SZ - mTitleHeight;
-  int x = mTitleRowStart + mTitleRowLen - 6;
-
-  if ( event.m_x >= x && event.m_y >= y &&
-    event.m_x <  x + 6               &&
-    event.m_y <  y + mTitleHeight
-     )
-  {
-   if ( !mCursorChanged )
-   {
-    SetCursor( mResizeCursor );
-
-    mCursorChanged = TRUE;
-   }
-  }
+  
+  if ( !mIsDragged )
+    {
+      int y = height - mVertGap - BORDER_SZ - mTitleHeight;
+      int x = mTitleRowStart + mTitleRowLen - 6;
+      
+      if ( event.m_x >= x && event.m_y >= y &&
+          event.m_x <  x + 6               &&
+          event.m_y <  y + mTitleHeight
+          )
+       {
+         if ( !mCursorChanged )
+           {
+             SetCursor( mResizeCursor );
+             
+             mCursorChanged = TRUE;
+           }
+       }
+      else
+       if ( mCursorChanged )
+         {
+           SetCursor( mNormalCursor );
+           
+           mCursorChanged = FALSE;
+         }
+    }
   else
-  if ( mCursorChanged )
-  {
-   SetCursor( mNormalCursor );
-
-   mCursorChanged = FALSE;
-  }
- }
- else
- if ( mIsDragged )
- {
-  mAdjustableTitleRowLen = mOriginalTitleRowLen + ( event.m_x - mDagOrigin );
-
-  // FOR NOW:: fixed
-  if ( mAdjustableTitleRowLen < 6 ) mAdjustableTitleRowLen = 6;
-
-  wxWindowDC dc(this);
-  DrawDecorations( dc );
-
-  RecalcLayout(FALSE);
-
-  //Refresh();
- }
+    if ( mIsDragged )
+      {
+       mAdjustableTitleRowLen = mOriginalTitleRowLen + ( event.m_x - mDagOrigin );
+
+       // FOR NOW:: fixed
+       if ( mAdjustableTitleRowLen < 6 ) mAdjustableTitleRowLen = 6;
+       
+       wxWindowDC dc(this);
+       DrawDecorations( dc );
+       
+       RecalcLayout(FALSE);
+       
+       //Refresh();
+      }
 }
 //---------------------------------------------------------------------------
 void wxPaggedWindow::OnScroll( wxScrollEvent& event )
 {
-
- wxScrollBar* pSender = (wxScrollBar*)event.GetEventObject();
- // wxMessageBox("wxPaggedWindow::OnScroll","-I->");
- if ( pSender == mpTabScroll )
- {
-
-  int maxUnits = GetWholeTabRowLen() / 20;
-
-  mCurentRowOfs = -event.GetPosition()*maxUnits;
-
-  mFirstTitleGap = mTitleRowStart + mCurentRowOfs + mTabTrianGap;
-
-  // let' it automatically disable itself if it's time
-  mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 );
-
-  // repaint title bars
-  wxWindowDC dc(this);
-  DrawDecorations( dc );
- }
- else
- if ( !mScrollEventInProgress )
- {
-  mScrollEventInProgress = TRUE;
-
-  GetActiveTab()->GetEventHandler()->ProcessEvent( event );
- }
- else
- {
-  // event bounced back to us, from here we
-  // know that it has traveled the loop - thus it's processed!
-
-  mScrollEventInProgress = FALSE;
- }
+  
 wxScrollBar* pSender = (wxScrollBar*)event.GetEventObject();
 // wxMessageBox("wxPaggedWindow::OnScroll","-I->");
 if ( pSender == mpTabScroll )
   {
+      
+      int maxUnits = GetWholeTabRowLen() / 20;
+      
+      mCurentRowOfs = -event.GetPosition()*maxUnits;
+      
+      mFirstTitleGap = mTitleRowStart + mCurentRowOfs + mTabTrianGap;
+      
+      // let' it automatically disable itself if it's time
+      mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 );
+      
+      // repaint title bars
+      wxWindowDC dc(this);
+      DrawDecorations( dc );
   }
 else
   if ( !mScrollEventInProgress )
     {
+       mScrollEventInProgress = TRUE;
+       
+       GetActiveTab()->GetEventHandler()->ProcessEvent( event );
     }
   else
     {
+       // event bounced back to us, from here we
+       // know that it has traveled the loop - thus it's processed!
+       
+       mScrollEventInProgress = FALSE;
     }
 }
 //---------------------------------------------------------------------------
+