void ToolManager::Reset() { int ndx; // Disconnect all docked bars for( ndx = 0; ndx < ToolBarCount; ndx++ ) { wxWindow *parent; ToolDock *dock; ToolBar *bar = mBars[ ndx ]; // Disconnect the bar if( bar->IsDocked() ) { bar->GetDock()->Undock( bar ); parent = NULL; } else { parent = bar->GetParent(); } if( ndx == SelectionBarID ) { dock = mBotDock; wxCommandEvent e; bar->GetEventHandler()->ProcessEvent(e); } else { dock = mTopDock; bar->ReCreateButtons(); } bar->EnableDisableButtons(); #if 0 if( bar->IsResizable() ) { bar->SetSize(bar->GetBestFittingSize()); } #endif dock->Dock( bar ); Expose( ndx, ndx == DeviceBarID ? false : true ); if( parent ) { parent->Destroy(); } } LayoutToolBars(); Updated(); }
// // Save the toolbar states // void ToolManager::WriteConfig() { if( !gPrefs ) { return; } wxString oldpath = gPrefs->GetPath(); int ndx; // Change to the bar root gPrefs->SetPath( wxT("/GUI/ToolBars") ); // Save state of each bar for( ndx = 0; ndx < ToolBarCount; ndx++ ) { ToolBar *bar = mBars[ ndx ]; // Change to the bar subkey gPrefs->SetPath( bar->GetSection() ); // Search both docks for toolbar order int to = mTopDock->GetOrder( bar ); int bo = mBotDock->GetOrder( bar ); // Save gPrefs->Write( wxT("Dock"), to ? TopDockID : bo ? BotDockID : NoDockID ); gPrefs->Write( wxT("Order"), to + bo ); gPrefs->Write( wxT("Show"), IsVisible( ndx ) ); wxPoint pos( -1, -1 ); wxSize sz = bar->GetSize(); if( !bar->IsDocked() ) { pos = bar->GetParent()->GetPosition(); sz = bar->GetParent()->GetSize(); } gPrefs->Write( wxT("X"), pos.x ); gPrefs->Write( wxT("Y"), pos.y ); gPrefs->Write( wxT("W"), sz.x ); gPrefs->Write( wxT("H"), sz.y ); // Kill the bar bar->Destroy(); // Change back to the bar root gPrefs->SetPath( wxT("..") ); } // Restore original config path gPrefs->SetPath( oldpath ); gPrefs->Flush(); }
// // Save the toolbar states // void ToolManager::WriteConfig() { if( !gPrefs ) { return; } wxString oldpath = gPrefs->GetPath(); int ndx; // Change to the bar root gPrefs->SetPath( wxT("/GUI/ToolBars") ); // Save state of each bar for( ndx = 0; ndx < ToolBarCount; ndx++ ) { ToolBar *bar = mBars[ ndx ].get(); // Change to the bar subkey gPrefs->SetPath( bar->GetSection() ); // Search both docks for toolbar order bool to = mTopDock->GetConfiguration().Contains( bar ); bool bo = mBotDock->GetConfiguration().Contains( bar ); // Save gPrefs->Write( wxT("Dock"), (int) (to ? TopDockID : bo ? BotDockID : NoDockID )); auto dock = to ? mTopDock : bo ? mBotDock : nullptr; ToolBarConfiguration::Write (dock ? &dock->GetConfiguration() : nullptr, bar); wxPoint pos( -1, -1 ); wxSize sz = bar->GetSize(); if( !bar->IsDocked() && bar->IsPositioned() ) { pos = bar->GetParent()->GetPosition(); sz = bar->GetParent()->GetSize(); } gPrefs->Write( wxT("X"), pos.x ); gPrefs->Write( wxT("Y"), pos.y ); gPrefs->Write( wxT("W"), sz.x ); gPrefs->Write( wxT("H"), sz.y ); // Change back to the bar root gPrefs->SetPath( wxT("..") ); } // Restore original config path gPrefs->SetPath( oldpath ); gPrefs->Flush(); }
// // 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() ); } }
// // Returns the visibility of the specified toolbar // bool ToolManager::IsVisible( int type ) { ToolBar *t = mBars[ type ]; return t->IsVisible(); // If toolbar is floating if( !t->IsDocked() ) { // Must return state of floater window return t->GetParent()->IsShown(); } // Return state of docked toolbar return t->IsShown(); }
void ToolManager::Reset() { int ndx; // The mInputMeter and mOutputMeter may be in use if audio is playing // when this happens. gAudioIO->SetMeters( NULL, NULL ); // Disconnect all docked bars for( ndx = 0; ndx < ToolBarCount; ndx++ ) { wxWindow *parent; ToolDock *dock; ToolBar *bar = mBars[ ndx ]; // Disconnect the bar if( bar->IsDocked() ) { bar->GetDock()->Undock( bar ); parent = NULL; } else { parent = bar->GetParent(); } if( ndx == SelectionBarID ) { dock = mBotDock; wxCommandEvent e; bar->GetEventHandler()->ProcessEvent(e); } else { dock = mTopDock; bar->ReCreateButtons(); } bar->EnableDisableButtons(); #if 0 if( bar->IsResizable() ) { bar->SetSize(bar->GetBestFittingSize()); } #endif dock->Dock( bar ); Expose( ndx, true ); if( parent ) { parent->Destroy(); } } // TODO:?? // If audio was playing, we stopped the VU meters, // It would be nice to show them again, but hardly essential as // they will show up again on the next play. // SetVUMeters(AudacityProject *p); LayoutToolBars(); Updated(); }
void ToolManager::Reset() { // Disconnect all docked bars for ( const auto &entry : DefaultConfigTable ) { int ndx = entry.barID; ToolBar *bar = mBars[ ndx ].get(); ToolBarConfiguration::Position position { (entry.rightOf == NoBarID) ? nullptr : mBars[ entry.rightOf ].get(), (entry.below == NoBarID) ? nullptr : mBars[ entry.below ].get() }; wxWindow *floater; ToolDock *dock; bool expose = true; // Disconnect the bar if( bar->IsDocked() ) { bar->GetDock()->Undock( bar ); floater = NULL; } else { floater = bar->GetParent(); } if (ndx == SelectionBarID #ifdef EXPERIMENTAL_SPECTRAL_EDITING || ndx == SpectralSelectionBarID #endif ) { dock = mBotDock; wxCommandEvent e; bar->GetEventHandler()->ProcessEvent(e); } else { dock = mTopDock; bar->ReCreateButtons(); } bar->EnableDisableButtons(); #if 0 if( bar->IsResizable() ) { bar->SetSize(bar->GetBestFittingSize()); } #endif if( ndx == MeterBarID #ifdef EXPERIMENTAL_SPECTRAL_EDITING || ndx == SpectralSelectionBarID #endif || ndx == ScrubbingBarID ) { expose = false; } if( dock != NULL ) { // when we dock, we reparent, so bar is no longer a child of floater. dock->Dock( bar, false, position ); Expose( ndx, expose ); //OK (and good) to DELETE floater, as bar is no longer in it. if( floater ) floater->Destroy(); } else { // The (tool)bar has a dragger window round it, the floater. // in turn floater will have mParent (the entire App) as its // parent. // Maybe construct a NEW floater // this happens if we have just been bounced out of a dock. if( floater == NULL ) { wxASSERT(mParent); floater = safenew ToolFrame( mParent, this, bar, wxPoint(-1,-1) ); bar->Reparent( floater ); } // This bar is undocked and invisible. // We are doing a reset toolbars, so even the invisible undocked bars should // be moved somewhere sensible. Put bar near center of window. // If there were multiple hidden toobars the ndx * 10 adjustment means // they won't overlap too much. floater->CentreOnParent( ); floater->Move( floater->GetPosition() + wxSize( ndx * 10 - 200, ndx * 10 )); bar->SetDocked( NULL, false ); Expose( ndx, false ); } } // TODO:?? // If audio was playing, we stopped the VU meters, // It would be nice to show them again, but hardly essential as // they will show up again on the next play. // SetVUMeters(AudacityProject *p); LayoutToolBars(); Updated(); }