From 84d82cf2f5e82ca36769d9c0f630f3a174ab690e Mon Sep 17 00:00:00 2001 From: charras Date: Sat, 23 Jan 2010 10:50:05 +0000 Subject: [PATCH] pcbnew: Update Layer manager display when changing active layer (from hotkey or menus) fixed minor problems and fixed Layer Alignment Target bug. --- CHANGELOG.txt | 18 +++++++++++++++ CMakeLists.txt | 9 ++------ TODO.txt | 24 -------------------- common/selcolor.cpp | 46 +++++++++++++++++++++++++++++++------- include/wxPcbStruct.h | 8 +++++++ internat/fr/kicad.mo | Bin 225073 -> 225318 bytes internat/fr/kicad.po | 11 +++++---- pcbnew/edit.cpp | 10 ++++++--- pcbnew/editrack-part2.cpp | 3 ++- pcbnew/hotkeys.cpp | 15 +------------ pcbnew/mirepcb.cpp | 1 + pcbnew/pcbframe.cpp | 23 ++++++++++++++++++- 12 files changed, 104 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 3b0a143740..1f6705c677 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,24 @@ KiCad ChangeLog 2010 Please add newer entries at the top, list the date and your name with email address. +2010-Jan-23 UPDATE Jean-Pierre Charras +================================================================================ +++ Pcbnew: + Update Layer manager display when changing active layer (from hotkey or menus) + fixed minor problems and fixed Layer Alignment Target bug. + +2010-Jan-22 UPDATE Wayne Stambaugh +================================================================================ +Minor fixes and code cleaning. + +* Remove redundant background redrawing RedrawActiveWindow. +* Remove redundant managed cursor callback in RedrawActiveWindow. +* Use refresh to redraw instead of directly calling RedrawActiveWindow. +* Remove unused SetDrawBgColor for drawframe.cpp. +* Fix compiler warning in cvpcb/cvframe.cpp. +* Fix menu spelling and syntax errors in pcbnew. +* Rename Trace_Curseur to DrawCursor in common/drawpanel.cpp. + 2010-Jan-21 UPDATE Dick Hollenbeck ================================================================================ ++pcbnew diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a6b61f7c1..2cfcbd8b70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,8 @@ option(wxUSE_UNICODE "enable/disable building unicode (default OFF)") option(KICAD_GOST "enable/disable building using GOST notation for multiple gates per package (default OFF)") -if(APPLE) - option(KICAD_AUIMANAGER "Enable use of wxAuiManager (default ON)" ON) - option(KICAD_AUITOOLBAR "Enable use of wxAuiToolBar (default ON)" ON) -else(APPLE) - option(KICAD_AUIMANAGER "Enable use of wxAuiManager (default OFF)" OFF) - option(KICAD_AUITOOLBAR "Enable use of wxAuiToolBar (default OFF)" OFF) -endif(APPLE) +option(KICAD_AUIMANAGER "Enable use of wxAuiManager (default ON)" ON) +option(KICAD_AUITOOLBAR "Enable use of wxAuiToolBar (default ON)" ON) # Comment this out if you don't want to build with Python support. diff --git a/TODO.txt b/TODO.txt index b353f71a64..de6b6d0b70 100644 --- a/TODO.txt +++ b/TODO.txt @@ -22,17 +22,9 @@ Common Need to do this using DialogBlocks. * Component and module search displays in which library the module or component lives. -* Create a better and cleaner add component and footprint dialog. * List auto up and down scrolling. -* Toolbars and menus should be equal. -* (Main) dialog(s) title(s) should always be the same and not change over time - when not needed. For example KiCad - or PCBNew - . - We dont have to see which build in the titlebar. This makes documentation - screenshots also easier. We already have the build information in the about - dialog. * Integer/long/double input boxes should handle comma and dot separated values, not only comma. -* Undo/Redo should have more steps (or could be setable). CvPCB ----- @@ -41,9 +33,6 @@ CvPCB EESchema -------- - -*Improvements* -* Component add list browser with optional component preview. * Use collector classes. * Drag and drop between two EESchema windows. @@ -70,37 +59,24 @@ from folks with less than that minimum. PCBNew ------ -*BUGS* -* Backspace hotkey for deleting track segment doesn't work. -* Delete hotkey for deleting a track doesn't work. * Fix block copy/move preview to not view only a border, we should see the moved/copied parts. * Fix DIALOG_PAD_PROPERTIES_BASE class to use actual layer names in the BOARD. * Use BOARD_ITEM::MenuIcon() in the onrightclick.cpp -* Add unroute option in rightclick menu for components * Document specctra round tripper, and fix the english translation of help. * Expose layer name editing. Should dove tail with net class editor from a UI perspective. * Add ARC support to gerber polygons. * Need to add polygon aperture type. Then example 2 in RS274xrevd_e.pdf will draw properly. -* Look at mouse auto-scroll modes (bug?) -* Add the footprint name in the automatic placement file -* Footprint list should also have a footprint preview. LAYER_WIDGET for PCBNEW ----------------------- -L1) Keyboard focus is getting stuck in layer widget and then hotkeys do not work. - There is probably a solution to be found and it may involve asking on the - wxWidgets mailing list. - L2) Hook in bool WinEDA_PcbFrame::LYRS::OnLayerSelect( int aLayer ) -L3) When a layer changes via a hotkey, then call WinEDA_PcbFrame->m_Layers->SelectLayer() - L4) Move popup menu code from class LAYER_WIDGET into WinEDA_PcbFrame::LYRS so as to keep LAYER_WIDGET fully usage agnostic. Remove #include "pcbstruct.h" // IsValidCopperLayerIndex() from layer_widget.cpp. diff --git a/common/selcolor.cpp b/common/selcolor.cpp index f2e7ae26c6..bf31eaee7a 100644 --- a/common/selcolor.cpp +++ b/common/selcolor.cpp @@ -29,6 +29,7 @@ public: ~WinEDA_SelColorFrame() {}; private: + void Init_Dialog( int aOldColor ); void OnCancel( wxCommandEvent& event ); void SelColor( wxCommandEvent& event ); @@ -66,6 +67,42 @@ WinEDA_SelColorFrame::WinEDA_SelColorFrame( wxWindow* parent, int OldColor ) : wxDialog( parent, -1, _( "Colors" ), framepos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | MAYBE_RESIZE_BORDER ) +{ + + Init_Dialog( OldColor ); + // Resize the dialog + GetSizer()->SetSizeHints( this ); + + // Ensure the whole frame is visible, whenever the asked position. + // Give also a small margin. + wxPoint endCornerPosition = GetPosition(); + int margin = 10; + endCornerPosition.x += GetSize().x + margin; + endCornerPosition.y += GetSize().y + margin; + + wxPoint windowPosition = GetPosition(); + wxRect freeScreenArea( wxGetClientDisplayRect( ) ); + if( freeScreenArea.GetRight() < endCornerPosition.x ) + { + windowPosition.x += freeScreenArea.GetRight() - endCornerPosition.x; + if( windowPosition.x < freeScreenArea.x ) + windowPosition.x = freeScreenArea.x; + // Sligly modify the vertical position to avoid the mouse to be + // exactly on the upper side of the window + windowPosition.y +=5; + endCornerPosition.y += 5; + } + if( freeScreenArea.GetBottom() < endCornerPosition.y ) + { + windowPosition.y += freeScreenArea.GetBottom() - endCornerPosition.y; + if( windowPosition.y < freeScreenArea.y ) + windowPosition.y = freeScreenArea.y; + } + + SetPosition(windowPosition); +} + +void WinEDA_SelColorFrame::Init_Dialog( int aOldColor ) { wxBoxSizer* OuterBoxSizer = NULL; wxBoxSizer* MainBoxSizer = NULL; @@ -135,7 +172,7 @@ WinEDA_SelColorFrame::WinEDA_SelColorFrame( wxWindow* parent, // Set focus to this button if its color matches the // color which had been selected previously (for // whichever layer's color is currently being edited). - if( OldColor == buttcolor ) + if( aOldColor == buttcolor ) { ColorFound = true; BitmapButton->SetFocus(); @@ -171,15 +208,8 @@ WinEDA_SelColorFrame::WinEDA_SelColorFrame( wxWindow* parent, // (That shouldn't ever happen in practice though.) if( !ColorFound ) Button->SetFocus(); - - // Resize the dialog - if( GetSizer() ) - { - GetSizer()->SetSizeHints( this ); - } } - void WinEDA_SelColorFrame::OnCancel( wxCommandEvent& WXUNUSED( event ) ) { // Setting the return value to -1 indicates that the diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index cbeb9ca890..d333ecd816 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -206,6 +206,14 @@ public: */ void AuxiliaryToolBar_DesignRules_Update_UI(); + /** Function SynchronizeLayersManager( ) + * Must be called when info displayed in the layer manager Toolbar + * as been changed in the main window ( by hotkey or a tool option. + * Mainly when the active layer as changed. + * @param aFlag = flag giving the type of data (layers, checkboxes...) + */ + void SynchronizeLayersManager( int aFlag ); + /* mouse functions events: */ void OnLeftClick( wxDC* DC, const wxPoint& MousePos ); void OnLeftDClick( wxDC* DC, const wxPoint& MousePos ); diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 5aee1b191aaf0fcccdfbd087c703c12cf55c092d..c8f5ba99e7bd4533425b6ed9b319a15ec143ed55 100644 GIT binary patch delta 53373 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 aGWmlC4Sk|_@|5H|0~Hp3k{x)u;r{`;!y(-O diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 8e6085a701..953b0fb439 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-22 11:29+0100\n" -"PO-Revision-Date: 2010-01-22 11:34+0100\n" +"POT-Creation-Date: 2010-01-22 14:07+0100\n" +"PO-Revision-Date: 2010-01-22 14:08+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -747,12 +747,12 @@ msgstr "X Pos" msgid "Y pos" msgstr "Y pos" -#: pcbnew/hotkeys.cpp:595 +#: pcbnew/hotkeys.cpp:608 #, c-format msgid "Footprint %s found, but locked" msgstr "Module %s trouvé, mais verrouillé" -#: pcbnew/hotkeys.cpp:789 +#: pcbnew/hotkeys.cpp:802 msgid "Delete module?" msgstr "Effacer Module?" @@ -925,12 +925,11 @@ msgid "Show/hide the layers manager toolbar" msgstr "Afficher/cacher le gestionnaire de couches" #: pcbnew/tool_pcb.cpp:398 -#, fuzzy msgid "" "Show/hide the toolbar for microwaves tools\n" " This is a experimental feature (under development)" msgstr "" -"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" +"Affiche/cache le toolbar vertical auxiliaire pour applications micro-ondes)\n" "C'est un outil expérimental (en cours de développement)" #: pcbnew/tool_pcb.cpp:423 diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index aa94c277d8..edb2b3b76c 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -743,6 +743,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) if( itmp >= 0 ) ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = itmp; DrawPanel->MouseToCursorSchema(); + SynchronizeLayersManager( 1 ); break; case ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR: @@ -757,7 +758,8 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) if( itmp >= 0 ) ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = itmp; DrawPanel->MouseToCursorSchema(); - break; + SynchronizeLayersManager( 1 ); + break; case ID_POPUP_PCB_SELECT_CU_LAYER: itmp = SelectLayer( @@ -765,7 +767,8 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) LAST_COPPER_LAYER ); if( itmp >= 0 ) ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = itmp; - break; + SynchronizeLayersManager( 1 ); + break; case ID_POPUP_PCB_SELECT_LAYER_PAIR: SelectLayerPair(); @@ -776,6 +779,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) itmp = m_SelLayerBox->GetChoice(); ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = (int) ( (size_t) m_SelLayerBox->GetClientData( itmp ) ); + SynchronizeLayersManager( 1 ); // Ensure Layer manager synchronization if( DisplayOpt.ContrastModeDisplay ) DrawPanel->Refresh( true ); break; @@ -1134,7 +1138,6 @@ void WinEDA_PcbFrame::SwitchLayer( wxDC* DC, int layer ) if( DisplayOpt.ContrastModeDisplay ) GetScreen()->SetRefreshReq(); } - // if the via was allowed by DRC, then the layer swap has already // been done by Other_Layer_Route(). if via not allowed, then // return now so assignment to m_Active_Layer below doesn't happen. @@ -1149,6 +1152,7 @@ void WinEDA_PcbFrame::SwitchLayer( wxDC* DC, int layer ) // ... GetScreen()->m_Active_Layer = layer; + SynchronizeLayersManager( 1 ); // Ensure Layer manager synchronization if( DisplayOpt.ContrastModeDisplay ) GetScreen()->SetRefreshReq(); diff --git a/pcbnew/editrack-part2.cpp b/pcbnew/editrack-part2.cpp index 4f3b0f2957..4e3e11d7f1 100644 --- a/pcbnew/editrack-part2.cpp +++ b/pcbnew/editrack-part2.cpp @@ -138,6 +138,7 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) UpdateStatusBar(); SetToolbars(); + SynchronizeLayersManager( 1 ); return true; } @@ -292,8 +293,8 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) via->DisplayInfo( this ); UpdateStatusBar(); - SetToolbars(); + SynchronizeLayersManager( 1 ); return true; } diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index 183c8af368..a30fb32c2d 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -254,7 +254,6 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct else ll--; SwitchLayer( DC, ll ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_NEXT: @@ -268,50 +267,38 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct else ll++; SwitchLayer( DC, ll ); -// m_Layers->SelectLayer() must be called, but due to a problem in SetFocus() function -// that creates a lost of focus in main window (hotkeys not working after the first hotkey use) -// this call is commented until this issue is fixed. -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_COMPONENT: SwitchLayer( DC, LAYER_N_FRONT ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_COPPER: SwitchLayer( DC, LAYER_N_BACK ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_INNER1: SwitchLayer( DC, LAYER_N_2 ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_INNER2: SwitchLayer( DC, LAYER_N_3 ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_INNER3: SwitchLayer( DC, LAYER_N_4 ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_INNER4: SwitchLayer( DC, LAYER_N_5 ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization - break; + break; case HK_SWITCH_LAYER_TO_INNER5: SwitchLayer( DC, LAYER_N_6 ); - // m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_SWITCH_LAYER_TO_INNER6: SwitchLayer( DC, LAYER_N_7 ); -// m_Layers->SelectLayer(GetScreen()->m_Active_Layer); // Ensure Layer manager synchronization break; case HK_HELP: // Display Current hotkey list diff --git a/pcbnew/mirepcb.cpp b/pcbnew/mirepcb.cpp index 58dbea9c24..41e4eb36a0 100644 --- a/pcbnew/mirepcb.cpp +++ b/pcbnew/mirepcb.cpp @@ -222,6 +222,7 @@ MIREPCB* WinEDA_PcbFrame::Create_Mire( wxDC* DC ) MirePcb->SetLayer( EDGE_N ); MirePcb->m_Width = g_DesignSettings.m_EdgeSegmentWidth; MirePcb->m_Size = MireDefaultSize; + MirePcb->m_Pos = DrawPanel->GetScreen()->m_Curseur; Place_Mire( MirePcb, DC ); diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index e4b3fb4b06..03e5904960 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -522,6 +522,14 @@ void WinEDA_PcbFrame::ReFillLayerWidget() } techLayerSeq[] = { /* some layers are not visible nor editable, don't show them for now: + * >> In fact they are useful here because we must be able to change + * the color and visibility because they can be visible. + * slikscreen and adhesive layers are visible (adhesive layer is rarely used) + * Solder mask and solder paste (used for pads) are visible in *Hight Color* + * mode when they are selected + * they are now editable because Pcbnew handle parameters (global and local) + * to calculate pads shapes on these layers + */ { ADHESIVE_N_FRONT, _("Adhesive on board's front") }, { ADHESIVE_N_BACK, _("Adhesive on board's back") }, { SOLDERPASTE_N_FRONT, _("Solder paste on board's front") }, @@ -530,7 +538,6 @@ void WinEDA_PcbFrame::ReFillLayerWidget() { SILKSCREEN_N_BACK, _("Silkscreen on board's back") }, { SOLDERMASK_N_FRONT, _("Solder mask on board's front") }, { SOLDERMASK_N_BACK, _("Solder mask on board's back") }, - */ { DRAW_N, _( "Explanatory drawings" ) }, { COMMENT_N, _( "Explanatory comments" ) }, { ECO1_N, _( "TDB" ) }, @@ -679,3 +686,17 @@ void WinEDA_PcbFrame::SaveSettings() config->Write( SHOW_LAYER_MANAGER_TOOLS, (long)m_show_layer_manager_tools ); } + + +/** Function SynchronizeLayersManager( ) + * Must be called when info displayed in the layer manager Toolbar + * as been changed in the main window ( by hotkey or a tool option. + * Mainly when the active layer as changed. + * @param aFlag = flag giving the type of data (layers, checkboxes...) + */ +void WinEDA_PcbFrame::SynchronizeLayersManager( int aFlag ) +{ + // Ensure Layer manager synchronization for the active layer + if( (aFlag & 1) ) + m_Layers->SelectLayer(GetScreen()->m_Active_Layer); +}