void SCH_BASE_FRAME::OnOpenLibraryViewer( wxCommandEvent& event ) { LIB_VIEW_FRAME * viewlibFrame = LIB_VIEW_FRAME::GetActiveLibraryViewer();; if( viewlibFrame ) viewlibFrame->Show( true ); else new LIB_VIEW_FRAME( this ); }
void SCH_BASE_FRAME::OnEditSymbolLibTable( wxCommandEvent& aEvent ) { DIALOG_SYMBOL_LIB_TABLE dlg( this, &SYMBOL_LIB_TABLE::GetGlobalLibTable(), Prj().SchSymbolLibTable() ); if( dlg.ShowModal() == wxID_CANCEL ) return; saveSymbolLibTables( true, true ); LIB_EDIT_FRAME* editor = (LIB_EDIT_FRAME*) Kiway().Player( FRAME_SCH_LIB_EDITOR, false ); if( this == editor ) { // There may be no parent window so use KIWAY message to refresh the schematic editor // in case any symbols have changed. Kiway().ExpressMail( FRAME_SCH, MAIL_SCH_REFRESH, std::string( "" ), this ); } LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); if( viewer ) viewer->ReCreateListLib(); }
void SCH_BASE_FRAME::OnOpenLibraryViewer( wxCommandEvent& event ) { LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, true ); viewlibFrame->PushPreferences( m_canvas ); // On Windows, Raise() does not bring the window on screen, when iconized if( viewlibFrame->IsIconized() ) viewlibFrame->Iconize( false ); viewlibFrame->Show( true ); viewlibFrame->Raise(); }
SCH_BASE_FRAME::COMPONENT_SELECTION SCH_BASE_FRAME::SelectComponentFromLibBrowser( wxTopLevelWindow* aParent, const SCHLIB_FILTER* aFilter, const LIB_ID& aPreselectedLibId, int aUnit, int aConvert ) { // Close any open non-modal Lib browser, and open a new one, in "modal" mode: LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); if( viewlibFrame ) viewlibFrame->Destroy(); viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER_MODAL, true, aParent ); if( aFilter ) viewlibFrame->SetFilter( aFilter ); if( aPreselectedLibId.IsValid() ) { viewlibFrame->SetSelectedLibrary( aPreselectedLibId.GetLibNickname() ); viewlibFrame->SetSelectedComponent( aPreselectedLibId.GetLibItemName() ); } viewlibFrame->SetUnitAndConvert( aUnit, aConvert ); viewlibFrame->Refresh(); COMPONENT_SELECTION sel; wxString symbol = sel.LibId.Format(); if( viewlibFrame->ShowModal( &symbol, aParent ) ) { LIB_ID id; if( id.Parse( symbol, LIB_ID::ID_SCH ) == -1 ) sel.LibId = id; sel.Unit = viewlibFrame->GetUnit(); sel.Convert = viewlibFrame->GetConvert(); } viewlibFrame->Destroy(); return sel; }
void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& aEvent ) { LIB_EDIT_FRAME * libeditFrame = LIB_EDIT_FRAME::GetActiveLibraryEditor();; if( libeditFrame && !libeditFrame->Close() ) // Can close component editor? return; LIB_VIEW_FRAME* viewlibFrame = LIB_VIEW_FRAME::GetActiveLibraryViewer( this ); if( viewlibFrame && !viewlibFrame->Close() ) // Can close component viewer? return; SCH_SHEET_LIST SheetList; if( SheetList.IsModified() ) { wxString msg; msg.Printf( _("Save the changes in\n<%s>\nbefore closing?"), GetChars( g_RootSheet->GetScreen()->GetFileName() ) ); int ii = DisplayExitDialog( this, msg ); switch( ii ) { case wxID_CANCEL: aEvent.Veto(); return; case wxID_NO: break; case wxID_YES: wxCommandEvent tmp( ID_SAVE_PROJECT ); OnSaveProject( tmp ); break; } } // Close the find dialog and perserve it's setting if it is displayed. if( m_dlgFindReplace ) { m_findDialogPosition = m_dlgFindReplace->GetPosition(); m_findDialogSize = m_dlgFindReplace->GetSize(); m_findStringHistoryList = m_dlgFindReplace->GetFindEntries(); m_replaceStringHistoryList = m_dlgFindReplace->GetReplaceEntries(); m_dlgFindReplace->Destroy(); m_dlgFindReplace = NULL; } SCH_SCREENS screens; wxFileName fn; for( SCH_SCREEN* screen = screens.GetFirst(); screen != NULL; screen = screens.GetNext() ) { fn = screen->GetFileName(); // Auto save file name is the normal file name prepended with $. fn.SetName( wxT( "$" ) + fn.GetName() ); if( fn.FileExists() && fn.IsFileWritable() ) wxRemoveFile( fn.GetFullPath() ); } SheetList.ClearModifyStatus(); if( !g_RootSheet->GetScreen()->GetFileName().IsEmpty() && (g_RootSheet->GetScreen()->GetDrawItems() != NULL) ) UpdateFileHistory( g_RootSheet->GetScreen()->GetFileName() ); g_RootSheet->GetScreen()->Clear(); // all sub sheets are deleted, only the main sheet is usable m_CurrentSheet->Clear(); Destroy(); }
wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( LIB_ALIAS* aPreselectedAlias, int* aUnit, int* aConvert ) { // Close any open non-modal Lib browser, and open a new one, in "modal" mode: LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); if( viewlibFrame ) viewlibFrame->Destroy(); viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER_MODAL, true ); if( aPreselectedAlias ) { viewlibFrame->SetSelectedLibrary( aPreselectedAlias->GetLibraryName() ); viewlibFrame->SetSelectedComponent( aPreselectedAlias->GetName() ); } if( aUnit && *aUnit > 0 ) viewlibFrame->SetUnit( *aUnit ); if( aConvert && *aConvert > 0 ) viewlibFrame->SetConvert( *aConvert ); viewlibFrame->Refresh(); wxString cmpname; if( viewlibFrame->ShowModal( &cmpname, this ) ) { if( aUnit ) *aUnit = viewlibFrame->GetUnit(); if( aConvert ) *aConvert = viewlibFrame->GetConvert(); } viewlibFrame->Destroy(); return cmpname; }