// // Set the visible/hidden state of a toolbar // void ToolDock::Expose( int type, bool show ) { ToolBar *t = mBars[ type ]; // Maintain the docked array if( show ) { if( mDockedBars.Index( t ) == wxNOT_FOUND ) { mDockedBars.Add( t ); } } else { if( mDockedBars.Index( t ) != wxNOT_FOUND ) { mDockedBars.Remove( t ); } } // Make it (dis)appear t->Expose( show ); // Update the layout LayoutToolBars(); Updated(); }
// // Set the visible/hidden state of a toolbar // void ToolManager::Expose( int type, bool show ) { ToolBar *t = mBars[ type ]; // Handle docked and floaters differently if( t->IsDocked() ) { t->GetDock()->Expose( type, show ); } else { t->Expose( show ); } }
// // Toggles the visible/hidden state of a toolbar // void ToolManager::ShowHide( int type ) { ToolBar *t = mBars[ type ]; // Handle docked and floaters differently if( t->IsDocked() ) { t->GetDock()->ShowHide( type ); } else { t->Expose( !t->IsVisible() ); } }
// // Toggles the visible/hidden state of a toolbar // void ToolDock::ShowHide( int type ) { ToolBar *t = mBars[ type ]; // Maintain the docked array if( t->IsVisible() ) { mDockedBars.Remove( t ); } else { mDockedBars.Add( t ); } // Make it (dis)appear t->Expose( !t->IsVisible() ); // Update the layout LayoutToolBars(); Updated(); }
// // Read the toolbar states // void ToolManager::ReadConfig() { wxString oldpath = gPrefs->GetPath(); wxArrayInt unordered[ DockCount ]; int order[ DockCount ][ ToolBarCount ]; bool show[ ToolBarCount ]; int width[ ToolBarCount ]; int height[ ToolBarCount ]; int x, y; int dock, ord, ndx; #if defined(__WXMAC__) // Disable window animation wxSystemOptions::SetOption( wxMAC_WINDOW_PLAIN_TRANSITION, 1 ); #endif // Invalidate all order entries for( dock = 0; dock < DockCount; dock++ ) { for( ord = 0; ord < ToolBarCount; ord++ ) { order[ dock ][ ord ] = NoBarID; } } // Change to the bar root gPrefs->SetPath( wxT("/GUI/ToolBars") ); // Load and apply settings for each bar for( ndx = 0; ndx < ToolBarCount; ndx++ ) { ToolBar *bar = mBars[ ndx ]; // Change to the bar subkey gPrefs->SetPath( bar->GetSection() ); // Read in all the settings gPrefs->Read( wxT("Dock"), &dock, ndx == SelectionBarID ? BotDockID : TopDockID ); gPrefs->Read( wxT("Order"), &ord, NoBarID ); gPrefs->Read( wxT("Show"), &show[ ndx ], true ); gPrefs->Read( wxT("X"), &x, -1 ); gPrefs->Read( wxT("Y"), &y, -1 ); gPrefs->Read( wxT("W"), &width[ ndx ], -1 ); gPrefs->Read( wxT("H"), &height[ ndx ], -1 ); // Docked or floating? if( dock ) { // Default to top dock if the ID isn't valid if( dock < NoDockID || dock > DockCount ) { dock = TopDockID; } // Create the bar with the correct parent if( dock == TopDockID ) { bar->Create( mTopDock ); } else { bar->Create( mBotDock ); } #ifdef EXPERIMENTAL_SYNC_LOCK // Set the width if( width[ ndx ] >= bar->GetSize().x ) { wxSize sz( width[ ndx ], bar->GetSize().y ); bar->SetSize( sz ); bar->Layout(); } #else // note that this section is here because if you had been using sync-lock and now you aren't, // the space for the extra button is stored in audacity.cfg, and so you get an extra space // in the EditToolbar. // It is needed so that the meterToolbar size gets preserved. // Longer-term we should find a better fix for this. wxString thisBar = bar->GetSection(); if( thisBar != wxT("Edit")) { // Set the width if( width[ ndx ] >= bar->GetSize().x ) { wxSize sz( width[ ndx ], bar->GetSize().y ); bar->SetSize( sz ); bar->Layout(); } } #endif // Is order within range and unoccupied? if( ( ord >= 0 ) && ( ord < ToolBarCount ) && ( order[ dock - 1 ][ ord ] == NoBarID ) ) { // Insert at ordered location order[ dock - 1 ][ ord ] = ndx; } else { // These must go at the end unordered[ dock - 1 ].Add( ndx ); } } else { // Create the bar (with the top dock being temporary parent) bar->Create( mTopDock ); // Construct a new floater ToolFrame *f = new ToolFrame( mParent, this, bar, wxPoint( x, y ) ); // Set the width and height if( width[ ndx ] != -1 && height[ ndx ] != -1 ) { wxSize sz( width[ ndx ], height[ ndx ] ); f->SetSizeHints( sz ); f->SetSize( sz ); f->Layout(); } // Show or hide it bar->Expose( show[ ndx ] ); // Inform toolbar of change bar->SetDocked( NULL, false ); } // Change back to the bar root //gPrefs->SetPath( wxT("..") ); <-- Causes a warning... // May or may not have gone into a subdirectory, // so use an absolute path. gPrefs->SetPath( wxT("/GUI/ToolBars") ); } // Add all toolbars to their target dock for( dock = 0; dock < DockCount; dock++ ) { ToolDock *d = ( dock + 1 == TopDockID ? mTopDock : mBotDock ); // Add all ordered toolbars for( ord = 0; ord < ToolBarCount; ord++ ) { ndx = order[ dock ][ ord ]; // Bypass empty slots if( ndx != NoBarID ) { ToolBar *t = mBars[ ndx ]; // Dock it d->Dock( t ); // Hide the bar if( !show[ t->GetId() ] ) { d->ShowHide( t->GetId() ); } } } // Add all unordered toolbars for( ord = 0; ord < (int) unordered[ dock ].GetCount(); ord++ ) { ToolBar *t = mBars[ unordered[ dock ][ ord ] ]; // Dock it d->Dock( t ); // Hide the bar if( !show[ t->GetId() ] ) { d->ShowHide( t->GetId() ); } } } // Restore original config path gPrefs->SetPath( oldpath ); #if defined(__WXMAC__) // Reinstate original transition wxSystemOptions::SetOption( wxMAC_WINDOW_PLAIN_TRANSITION, mTransition ); #endif }