void GERBVIEW_FRAME::UpdateTitleAndInfo() { GERBER_FILE_IMAGE* gerber = GetGbrImage( getActiveLayer() ); // Display the gerber filename if( gerber == NULL ) { SetTitle( "GerbView" ); SetStatusText( wxEmptyString, 0 ); wxString info; info.Printf( _( "Drawing layer %d not in use" ), getActiveLayer() + 1 ); m_TextInfo->SetValue( info ); if( EnsureTextCtrlWidth( m_TextInfo, &info ) ) // Resized m_auimgr.Update(); ClearMsgPanel(); return; } else { wxString title; title.Printf( L"GerbView \u2014 %s%s", gerber->m_FileName, gerber->m_IsX2_file ? " " + _( "(with X2 attributes)" ) : wxString( wxEmptyString ) ); SetTitle( title ); gerber->DisplayImageInfo( this ); // Display Image Name and Layer Name (from the current gerber data): wxString status; status.Printf( _( "Image name: '%s' Layer name: '%s'" ), GetChars( gerber->m_ImageName ), GetChars( gerber->GetLayerParams().m_LayerName ) ); SetStatusText( status, 0 ); // Display data format like fmt in X3.4Y3.4 no LZ or fmt mm X2.3 Y3.5 no TZ in main toolbar wxString info; info.Printf( wxT( "fmt: %s X%d.%d Y%d.%d no %cZ" ), gerber->m_GerbMetric ? wxT( "mm" ) : wxT( "in" ), gerber->m_FmtLen.x - gerber->m_FmtScale.x, gerber->m_FmtScale.x, gerber->m_FmtLen.y - gerber->m_FmtScale.y, gerber->m_FmtScale.y, gerber->m_NoTrailingZeros ? 'T' : 'L' ); if( gerber->m_IsX2_file ) info << wxT(" ") << _( "X2 attr" ); m_TextInfo->SetValue( info ); if( EnsureTextCtrlWidth( m_TextInfo, &info ) ) // Resized m_auimgr.Update(); } }
void SCH_EDIT_FRAME::EditComponent( SCH_COMPONENT* aComponent ) { wxCHECK_RET( aComponent != NULL && aComponent->Type() == SCH_COMPONENT_T, wxT( "Invalid component object pointer. Bad Programmer!" ) ); m_canvas->SetIgnoreMouseEvents( true ); DIALOG_EDIT_COMPONENT_IN_SCHEMATIC* dlg = new DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( this ); dlg->InitBuffers( aComponent ); // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: EnsureTextCtrlWidth( dlg->chipnameTextCtrl ); // This dialog itself subsequently can invoke a KIWAY_PLAYER as a quasimodal // frame. Therefore this dialog as a modal frame parent, MUST be run under // quasimodal mode for the quasimodal frame support to work. So don't use // the QUASIMODAL macros here. int ret = dlg->ShowQuasiModal(); if( m_autoplaceFields ) aComponent->AutoAutoplaceFields( GetScreen() ); m_canvas->SetIgnoreMouseEvents( false ); m_canvas->MoveCursorToCrossHair(); dlg->Destroy(); if( ret == wxID_OK ) GetCanvas()->Refresh(); }
void GERBVIEW_FRAME::UpdateTitleAndInfo() { GERBER_IMAGE* gerber = g_GERBER_List.GetGbrImage( getActiveLayer() ); wxString text; // Display the gerber filename if( gerber == NULL ) { text.Printf( wxT( "GerbView %s" ), GetChars( GetBuildVersion() ) ); SetTitle( text ); SetStatusText( wxEmptyString, 0 ); text.Printf( _( "Drawing layer %d not in use" ), getActiveLayer() + 1 ); m_TextInfo->SetValue( text ); ClearMsgPanel(); return; } text = _( "File:" ); text << wxT( " " ) << gerber->m_FileName; if( gerber->m_IsX2_file ) text << wxT( " " ) << _( "(with X2 Attributes)" ); SetTitle( text ); gerber->DisplayImageInfo(); // Display Image Name and Layer Name (from the current gerber data): text.Printf( _( "Image name: '%s' Layer name: '%s'" ), GetChars( gerber->m_ImageName ), GetChars( gerber->GetLayerParams().m_LayerName ) ); SetStatusText( text, 0 ); // Display data format like fmt in X3.4Y3.4 no LZ or fmt mm X2.3 Y3.5 no TZ in main toolbar text.Printf( wxT( "fmt: %s X%d.%d Y%d.%d no %cZ" ), gerber->m_GerbMetric ? wxT( "mm" ) : wxT( "in" ), gerber->m_FmtLen.x - gerber->m_FmtScale.x, gerber->m_FmtScale.x, gerber->m_FmtLen.y - gerber->m_FmtScale.y, gerber->m_FmtScale.y, gerber->m_NoTrailingZeros ? 'T' : 'L' ); if( gerber->m_IsX2_file ) text << wxT(" ") << _( "X2 attr" ); m_TextInfo->SetValue( text ); if( EnsureTextCtrlWidth( m_TextInfo, &text ) ) // Resized m_auimgr.Update(); }
void SCH_EDIT_FRAME::EditComponent( SCH_COMPONENT* aComponent ) { wxCHECK_RET( aComponent != NULL && aComponent->Type() == SCH_COMPONENT_T, wxT( "Invalid component object pointer. Bad Programmer!" ) ); m_canvas->SetIgnoreMouseEvents( true ); DIALOG_EDIT_COMPONENT_IN_SCHEMATIC* dlg = new DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( this ); dlg->InitBuffers( aComponent ); // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: EnsureTextCtrlWidth( dlg->chipnameTextCtrl ); dlg->ShowQuasiModal(); m_canvas->SetIgnoreMouseEvents( false ); m_canvas->MoveCursorToCrossHair(); dlg->Destroy(); }
void DIALOG_LABEL_EDITOR::InitDialog() { wxString msg; bool multiLine = false; if( m_CurrentText->IsMultilineAllowed() ) { m_textLabel = m_textLabelMultiLine; m_textLabelSingleLine->Show( false ); multiLine = true; } else { m_textLabel = m_textLabelSingleLine; m_textLabelMultiLine->Show( false ); wxTextValidator* validator = (wxTextValidator*) m_textLabel->GetValidator(); wxArrayString excludes; // Add invalid label characters to this list. excludes.Add( wxT( " " ) ); validator->SetExcludes( excludes ); } m_textLabel->SetValue( m_CurrentText->GetText() ); m_textLabel->SetFocus(); switch( m_CurrentText->Type() ) { case SCH_GLOBAL_LABEL_T: SetTitle( _( "Global Label Properties" ) ); break; case SCH_HIERARCHICAL_LABEL_T: SetTitle( _( "Hierarchical Label Properties" ) ); break; case SCH_LABEL_T: SetTitle( _( "Label Properties" ) ); break; case SCH_SHEET_PIN_T: SetTitle( _( "Hierarchical Sheet Pin Properties." ) ); break; default: SetTitle( _( "Text Properties" ) ); break; } const int MINTEXTWIDTH = 40; // M's are big characters, a few establish a lot of width int max_len = 0; if ( !multiLine ) { max_len = m_CurrentText->GetText().Length(); } else { // calculate the length of the biggest line // we cannot use the length of the entire text that has no meaning int curr_len = MINTEXTWIDTH; int imax = m_CurrentText->GetText().Length(); for( int count = 0; count < imax; count++ ) { if( m_CurrentText->GetText()[count] == '\n' || m_CurrentText->GetText()[count] == '\r' ) // new line { curr_len = 0; } else { curr_len++; if ( max_len < curr_len ) max_len = curr_len; } } } if( max_len < MINTEXTWIDTH ) max_len = MINTEXTWIDTH; wxString textWidth; textWidth.Append( 'M', MINTEXTWIDTH ); EnsureTextCtrlWidth( m_textLabel, &textWidth ); // Set validators m_TextOrient->SetSelection( m_CurrentText->GetOrientation() ); m_TextShape->SetSelection( m_CurrentText->GetShape() ); int style = 0; if( m_CurrentText->IsItalic() ) style = 1; if( m_CurrentText->IsBold() ) style += 2; m_TextStyle->SetSelection( style ); wxString units = ReturnUnitSymbol( g_UserUnit, wxT( "(%s)" ) ); msg.Printf( _( "H%s x W%s" ), GetChars( units ), GetChars( units ) ); m_staticSizeUnits->SetLabel( msg ); msg = StringFromValue( g_UserUnit, m_CurrentText->GetSize().x ); m_TextSize->SetValue( msg ); if( m_CurrentText->Type() != SCH_GLOBAL_LABEL_T && m_CurrentText->Type() != SCH_HIERARCHICAL_LABEL_T ) { m_TextShape->Show( false ); } m_sdbSizer1OK->SetDefault(); }
void DIALOG_LABEL_EDITOR::InitDialog() { wxString msg; bool multiLine = false; if( m_CurrentText->m_MultilineAllowed ) { m_textLabel = m_textLabelMultiLine; m_textLabelSingleLine->Show(false); multiLine = true; } else { m_textLabel = m_textLabelSingleLine; m_textLabelMultiLine->Show(false); } m_textLabel->SetValue( m_CurrentText->m_Text ); m_textLabel->SetFocus(); switch( m_CurrentText->Type() ) { case SCH_GLOBAL_LABEL_T: SetTitle( _( "Global Label Properties" ) ); break; case SCH_HIERARCHICAL_LABEL_T: SetTitle( _( "Hierarchical Label Properties" ) ); break; case SCH_LABEL_T: SetTitle( _( "Label Properties" ) ); break; case SCH_SHEET_PIN_T: SetTitle( _( "Hierarchical Sheet Pin Properties." ) ); break; default: SetTitle( _( "Text Properties" ) ); m_textLabel->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler ( DIALOG_LABEL_EDITOR::OnEnterKey ), NULL, this ); break; } int MINTEXTWIDTH = 40; // M's are big characters, a few establish a lot of width int max_len = 0; if ( !multiLine ) { max_len =m_CurrentText->m_Text.Length(); } else { // calculate the length of the biggest line // we cannot use the length of the entire text that has no meaning int curr_len = MINTEXTWIDTH; int imax = m_CurrentText->m_Text.Len(); for( int count = 0; count < imax; count++ ) { if( m_CurrentText->m_Text[count] == '\n' || m_CurrentText->m_Text[count] == '\r' ) // new line { curr_len = 0; } else { curr_len++; if ( max_len < curr_len ) max_len = curr_len; } } } if( max_len < MINTEXTWIDTH ) max_len = MINTEXTWIDTH; wxString textWidth; textWidth.Append( 'M', MINTEXTWIDTH ); EnsureTextCtrlWidth( m_textLabel, &textWidth ); // Set validators m_TextOrient->SetSelection( m_CurrentText->GetOrientation() ); m_TextShape->SetSelection( m_CurrentText->GetShape() ); int style = 0; if( m_CurrentText->m_Italic ) style = 1; if( m_CurrentText->m_Bold ) style += 2; m_TextStyle->SetSelection( style ); wxString units = ReturnUnitSymbol( g_UserUnit, wxT( "(%s)" ) ); msg = _( "H" ) + units + _( " x W" ) + units; m_staticSizeUnits->SetLabel( msg ); msg = ReturnStringFromValue( g_UserUnit, m_CurrentText->m_Size.x ); m_TextSize->SetValue( msg ); if( m_CurrentText->Type() != SCH_GLOBAL_LABEL_T && m_CurrentText->Type() != SCH_HIERARCHICAL_LABEL_T ) { m_TextShape->Show( false ); } m_sdbSizer1OK->SetDefault(); }