Commit 9dae370c authored by charras's avatar charras

cleanup, cosmetic enhancements. enhancements about display zones options

parent f21e24f2
...@@ -59,6 +59,8 @@ set(BITMAP_SRCS ...@@ -59,6 +59,8 @@ set(BITMAP_SRCS
Browse_Files.xpm Browse_Files.xpm
cancel_tool.xpm cancel_tool.xpm
Cancel.xpm Cancel.xpm
component_select_unit.xpm
component_select_alternate_shape.xpm
config.xpm config.xpm
CopyBlock.xpm CopyBlock.xpm
copy.xpm copy.xpm
...@@ -338,6 +340,8 @@ set(BITMAP_SRCS ...@@ -338,6 +340,8 @@ set(BITMAP_SRCS
showmodedge.xpm showmodedge.xpm
showtrack.xpm showtrack.xpm
Show_Zone.xpm Show_Zone.xpm
Show_Zone_Disable.xpm
Show_Zone_Outline_Only.xpm
Swap_Layer.xpm Swap_Layer.xpm
Text_Sketch.xpm Text_Sketch.xpm
tool_ratsnet.xpm tool_ratsnet.xpm
......
/* XPM */
#ifndef XPMMAIN
extern const char* show_zone_disable_xpm[];
#else
const char * show_zone_disable_xpm[] = {
"16 16 72 1",
" c None",
". c #009000",
"G c #C0C0C0",
"+ c #007E00",
"@ c #004100",
"# c #002700",
"$ c #000900",
"% c #000400",
"& c #000000",
"* c #007100",
"= c #040404",
"- c #716F7F",
"; c #A7A3DA",
"> c #A9A4E2",
", c #8E8CA2",
"' c #191919",
") c #000600",
"! c #006400",
"~ c #000F00",
"{ c #2F2F2F",
"] c #CBCBD0",
"^ c #A8A0FF",
"/ c #6D67AC",
"( c #615B98",
"_ c #A198FD",
": c #EAE8F8",
"< c #515151",
"[ c #000100",
"} c #006E00",
"| c #000800",
"1 c #2D2D2D",
"2 c #F5F5F5",
"3 c #DCD9FF",
"4 c #928AE5",
"5 c #000001",
"6 c #7972BE",
"7 c #CEC9FF",
"8 c #FBFBFB",
"9 c #484848",
"0 c #007C00",
"a c #003300",
"b c #030303",
"c c #939393",
"d c #F1F0FE",
"e c #A39AFE",
"f c #403C65",
"g c #333050",
"h c #9A91F1",
"i c #E5E2FF",
"j c #B8B8B8",
"k c #0B0B0B",
"l c #001D00",
"m c #005300",
"n c #000B00",
"o c #383838",
"p c #B4B0DA",
"q c #B0A9FE",
"r c #ACA4FF",
"s c #C1BCF1",
"t c #757575",
"u c #050505",
"v c #002300",
"w c #007800",
"x c #007500",
"y c #003400",
"z c #0A0A0A",
"A c #0C0C0D",
"B c #001700",
"C c #004F00",
"D c #007B00",
"E c #006500",
"F c #006C00",
"GGGGGGGGGGGGGGGG",
"GGGG GGGGGGGG",
"GGG GGGGGGG",
"GG ++ GGGGG",
"G .... GGG",
"G +. ..... GG",
"G +. ...... GG",
"G .... .. G",
"GG @#$%& .. ",
"GG*&=-;>,') ... ",
"G!~{]^/(_:<[ ...",
"}|12345&6789& ..",
"0abcdefghijkl .",
"GGmnopqrstuvw. .",
"GGGxy|zA&BCDGGG ",
"GGGGG0E!FGGGGGG "};
#endif
/* XPM */
#ifndef XPMMAIN
extern const char* show_zone_outline_only_xpm[];
#else
const char * show_zone_outline_only_xpm[] = {
"16 16 71 1",
" c None",
". c #007F00",
"+ c #007E00",
"@ c #004100",
"# c #002700",
"$ c #000900",
"% c #000400",
"& c #000000",
"* c #009000",
"= c #040404",
"- c #716F7F",
"; c #A7A3DA",
"> c #A9A4E2",
", c #8E8CA2",
"' c #191919",
") c #000600",
"! c #006400",
"~ c #000F00",
"{ c #2F2F2F",
"] c #CBCBD0",
"^ c #A8A0FF",
"/ c #6D67AC",
"( c #615B98",
"_ c #A198FD",
": c #EAE8F8",
"< c #515151",
"[ c #000100",
"} c #006E00",
"| c #000800",
"1 c #2D2D2D",
"2 c #F5F5F5",
"3 c #DCD9FF",
"4 c #928AE5",
"5 c #000001",
"6 c #7972BE",
"7 c #CEC9FF",
"8 c #FBFBFB",
"9 c #484848",
"0 c #007C00",
"a c #003300",
"b c #030303",
"c c #939393",
"d c #F1F0FE",
"e c #A39AFE",
"f c #403C65",
"g c #333050",
"h c #9A91F1",
"i c #E5E2FF",
"j c #B8B8B8",
"k c #0B0B0B",
"l c #001D00",
"m c #005300",
"n c #000B00",
"o c #383838",
"p c #B4B0DA",
"q c #B0A9FE",
"r c #ACA4FF",
"s c #C1BCF1",
"t c #757575",
"u c #050505",
"v c #002300",
"w c #007800",
"x c #007500",
"y c #003400",
"z c #0A0A0A",
"A c #0C0C0D",
"B c #001700",
"C c #004F00",
"D c #007B00",
"E c #006500",
"F c #006C00",
"****************",
"* * * ",
"* * * ",
"** ++ * ",
"* .... * ",
"* +. ..... * ",
"* +. ...... **",
"* .... .. *",
"** @#$%& .. ",
"***&=-;>,') ... ",
".!~{]^/(_:<[ ...",
"}|12345&6789& ..",
"0abcdefghijkl .",
"**mnopqrstuvw .",
"* *xy|zA&BCD* * ",
"*****0E!F****** "};
#endif
/* XPM */
#ifndef XPMMAIN
extern const char * component_select_alternate_shape_xpm[];
#else
const char * component_select_alternate_shape_xpm[] = {
"16 16 7 1",
"X c Black",
". c None",
"o c Black",
"= c Green",
"+ c #008000",
"' c Red",
"* c Cyan",
"....XXXXXXX.....",
".oooooX====XX...",
".......X=====X..",
".......X=====Xoo",
".......X=====X..",
".oooooX====XX...",
"...*XXXXXXX.....",
".***............",
"***.............",
"*...XXXXXX......",
"ooooX'''''X.....",
"....X''''''X....",
"....X'''''''Xooo",
"....X''''''X....",
"ooooX'''''X.....",
"....XXXXXX......"
};
#endif
/* XPM */
#ifndef XPMMAIN
extern const char * component_select_unit_xpm[];
#else
const char * component_select_unit_xpm[] = {
"16 15 6 1",
"X c Black",
". c None",
"o c Black",
"= c Gray",
"+ c #008000",
"' c #0000C0",
"........XXXXXX..",
"....ooooX=====X.",
"........X======X",
"........X=======",
"......XXXXXX===X",
"..ooooX+++++X=X.",
"......X++++++X..",
"......X+++++++Xo",
"....XXXXXX+++X..",
"ooooX'''''X+X...",
"....X''''''X....",
"....X'''''''Xooo",
"....X''''''X....",
"ooooX'''''X.....",
"....XXXXXX......"
};
#endif
...@@ -39,6 +39,8 @@ OBJECTS = \ ...@@ -39,6 +39,8 @@ OBJECTS = \
book.o\ book.o\
Break_Line.o\ Break_Line.o\
Browse_Files.o\ Browse_Files.o\
component_select_unit.o\
component_select_alternate_shape.o\
cancel_tool.o\ cancel_tool.o\
Cancel.o\ Cancel.o\
config.o\ config.o\
...@@ -247,6 +249,8 @@ OBJECTS = \ ...@@ -247,6 +249,8 @@ OBJECTS = \
showmodedge.o\ showmodedge.o\
showtrack.o\ showtrack.o\
Show_Zone.o\ Show_Zone.o\
Show_Zone_Disable.o\
Show_Zone_Outline_Only.o\
Swap_Layer.o\ Swap_Layer.o\
shape_3d.o\ shape_3d.o\
Text_Sketch.o\ Text_Sketch.o\
......
...@@ -297,10 +297,14 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent, ...@@ -297,10 +297,14 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent,
} }
/***************************************************************************** /*******************************************************************************************************/
* Add a OBJ_CMP_TO_LIST object in aComponentsList for each component foun in sheet
*****************************************************************************/
int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList, DrawSheetPath* aSheet ) int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList, DrawSheetPath* aSheet )
/********************************************************************************************************/
/** function AddComponentsInSheetToList()
* Add a OBJ_CMP_TO_LIST object in aComponentsList for each component found in sheet
* @param aComponentsList = a std::vector list to fill
* @param the DrawSheetPath sheet to analyse
*/
{ {
int NbrCmp = 0; int NbrCmp = 0;
EDA_BaseStruct* DrawList = aSheet->LastDrawList(); EDA_BaseStruct* DrawList = aSheet->LastDrawList();
...@@ -595,7 +599,13 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly ) ...@@ -595,7 +599,13 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
/** /**
* Function CheckAnnotate * Function CheckAnnotate
* @return component count ( which are not annotated or have the same reference (duplicates)) * Check errors relatives to annotation:
* components not annotated
* components having the same reference (duplicates)
* for multiple parts per package components :
* part number > number of parts
* different values between parts
* @return errors count
* @param oneSheetOnly : true = search is made only in the current sheet * @param oneSheetOnly : true = search is made only in the current sheet
* false = search in whole hierarchy (usual search). * false = search in whole hierarchy (usual search).
*/ */
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include "protos.h" #include "protos.h"
/* Local functions*/ /* Local functions*/
static bool TriListEntry( const EDA_LibComponentStruct* Objet1, static bool SortCmpByName( const EDA_LibComponentStruct* Objet1,
const EDA_LibComponentStruct* Objet2 ); const EDA_LibComponentStruct* Objet2 );
...@@ -36,12 +36,12 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName ) ...@@ -36,12 +36,12 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName )
std::vector <EDA_LibComponentStruct*> ListEntry; std::vector <EDA_LibComponentStruct*> ListEntry;
EDA_ScreenList s_list; EDA_ScreenList ScreenList;
/* examine all screens (not scheets) used and build the list of components found in lib /* examine all screens (not scheets) used and build the list of components found in lib
* complex hierarchies are not a problem because we just want to know used components in librarires * complex hierarchies are not a problem because we just want to know used components in libraries
*/ */
for( SCH_SCREEN* screen = s_list.GetFirst(); screen != NULL; screen = s_list.GetNext() ) for( SCH_SCREEN* screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
{ {
for( SCH_ITEM* SchItem = screen->EEDrawList; SchItem; SchItem = SchItem->Next() ) for( SCH_ITEM* SchItem = screen->EEDrawList; SchItem; SchItem = SchItem->Next() )
{ {
...@@ -55,7 +55,9 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName ) ...@@ -55,7 +55,9 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName )
} }
} }
sort( ListEntry.begin(), ListEntry.end(), TriListEntry ); // Sort components (libraries entries) by name
// (they are components name in library, not in schematic) :
sort( ListEntry.begin(), ListEntry.end(), SortCmpByName );
/* calculate the file name for the associated doc file */ /* calculate the file name for the associated doc file */
DocFileName = ArchFullFileName; DocFileName = ArchFullFileName;
...@@ -104,7 +106,7 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName ) ...@@ -104,7 +106,7 @@ bool LibArchive( wxWindow* frame, const wxString& ArchFullFileName )
/***********************************************************************************************/ /***********************************************************************************************/
bool TriListEntry( const EDA_LibComponentStruct* Objet1, const EDA_LibComponentStruct* Objet2 ) bool SortCmpByName( const EDA_LibComponentStruct* Objet1, const EDA_LibComponentStruct* Objet2 )
/***********************************************************************************************/ /***********************************************************************************************/
/* Compare function for sort() /* Compare function for sort()
......
...@@ -312,7 +312,8 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ...@@ -312,7 +312,8 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_FOOTPRINT_CMP, msg, edit_comp_footprint_xpm ); ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_FOOTPRINT_CMP, msg, edit_comp_footprint_xpm );
} }
if( LibEntry && (LookForConvertPart( LibEntry ) >= 2) ) if( LibEntry && (LookForConvertPart( LibEntry ) >= 2) )
editmenu->Append( ID_POPUP_SCH_EDIT_CONVERT_CMP, _( "Convert" ) ); ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_CONVERT_CMP,_( "Convert" ), component_select_alternate_shape_xpm );
if( LibEntry && (LibEntry->m_UnitCount >= 2) ) if( LibEntry && (LibEntry->m_UnitCount >= 2) )
{ {
wxMenu* sel_unit_menu = new wxMenu; int ii; wxMenu* sel_unit_menu = new wxMenu; int ii;
...@@ -324,8 +325,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ...@@ -324,8 +325,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
sel_unit_menu->Append( ID_POPUP_SCH_SELECT_UNIT1 + ii, sel_unit_menu->Append( ID_POPUP_SCH_SELECT_UNIT1 + ii,
num_unit ); num_unit );
} }
ADD_MENUITEM_WITH_SUBMENU( editmenu, sel_unit_menu, ID_POPUP_SCH_SELECT_UNIT_CMP, _( "Unit" ), component_select_unit_xpm );
editmenu->Append( ID_POPUP_SCH_SELECT_UNIT_CMP, _( "Unit" ), sel_unit_menu );
} }
ADD_MENUITEM_WITH_SUBMENU( PopMenu, editmenu, ADD_MENUITEM_WITH_SUBMENU( PopMenu, editmenu,
......
...@@ -26,15 +26,12 @@ set(GERBVIEW_SRCS ...@@ -26,15 +26,12 @@ set(GERBVIEW_SRCS
onrightclick.cpp onrightclick.cpp
options.cpp options.cpp
pcbplot.cpp pcbplot.cpp
# pcbtexte.cpp
# process_config.cpp
readgerb.cpp readgerb.cpp
reglage.cpp reglage.cpp
rs274d.cpp rs274d.cpp
rs274x.cpp rs274x.cpp
select_layers_to_pcb.cpp select_layers_to_pcb.cpp
set_color.cpp set_color.cpp
# struct.cpp <-- not used
tool_gerber.cpp tool_gerber.cpp
tracepcb.cpp tracepcb.cpp
trpiste.cpp ) trpiste.cpp )
......
...@@ -30,7 +30,7 @@ void Print_PcbItems(BOARD * Pcb, wxDC *DC, int drawmode, int printmasklayer) ...@@ -30,7 +30,7 @@ void Print_PcbItems(BOARD * Pcb, wxDC *DC, int drawmode, int printmasklayer)
DisplayOpt.DisplayPcbTrackFill = FILLED; DisplayOpt.DisplayPcbTrackFill = FILLED;
DisplayOpt.DisplayTrackIsol = 0; DisplayOpt.DisplayTrackIsol = 0;
DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayDrawItems = FILLED;
DisplayOpt.DisplayZones = 1; DisplayOpt.DisplayZonesMode = 0;
/* trace des pistes */ /* trace des pistes */
pt_piste = Pcb->m_Track; pt_piste = Pcb->m_Track;
......
/***********************************************/
/* Routines d'effacement et copie de structures*/
/***********************************************/
#include "fctsys.h"
#include "common.h"
#include "gerbview.h"
/* Variables locales */
#if 0
/***************************************************/
void DeleteStructure( EDA_BaseStruct * PtStruct )
/***************************************************/
/* Supprime de la liste chainee la stucture pointee par GenericStructure
et libere la memoire correspondante
*/
{
EDA_BaseStruct *PtNext, *PtBack;
int IsDeleted;
wxString msg;
if( PtStruct == NULL) return ;
IsDeleted = PtStruct->GetState(DELETED);
PtNext = PtStruct->Pnext;
PtBack = PtStruct->Pback;
switch( PtStruct->Type() )
{
case TYPE_NOT_INIT:
DisplayError(NULL, wxT("DeleteStruct: Type NOT_INIT"));
break;
case TYPEDRAWSEGMENT:
#undef Struct
#define Struct ((DRAWSEGMENT*)PtStruct)
Struct->UnLink();
delete Struct;
break;
case TYPETEXTE:
#undef Struct
#define Struct ((TEXTE_PCB*)PtStruct)
Struct->UnLink();
delete Struct;
break;
case TYPEVIA:
case TYPETRACK:
case TYPEZONE:
#undef Struct
#define Struct ((TRACK*)PtStruct)
Struct->UnLink();
delete Struct;
break;
case TYPEMARQUEUR:
#undef Struct
#define Struct ((MARQUEUR*)PtStruct)
Struct->UnLink();
delete Struct;
break;
case TYPEPCB:
default:
msg.Printf( wxT("DeleteStructure: unexpected %d type"),
PtStruct->Type());
DisplayError(NULL, msg);
break;
}
}
/*************************************************/
void DeleteStructList( EDA_BaseStruct * PtStruct )
/*************************************************/
/* Supprime la liste chainee pointee par PtStruct
et libere la memoire correspondante
*/
{
EDA_BaseStruct *PtNext;
while (PtStruct)
{
PtNext = PtStruct->Pnext;
delete PtStruct;
PtStruct = PtNext;
}
}
#endif
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
/************************************************************************************************************/ /************************************************************************************************************/
void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmasklayer, bool aPrintMirrorMode ) void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmasklayer, bool aPrintMirrorMode )
/*************************************************************************************************************/ /*************************************************************************************************************/
/* routine de trace du pcb, avec selection des couches */ /* Draw gerbview layers, for printing
*/
{ {
DISPLAY_OPTIONS save_opt; DISPLAY_OPTIONS save_opt;
int DisplayPolygonsModeImg; int DisplayPolygonsModeImg;
...@@ -43,7 +44,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl ...@@ -43,7 +44,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
DisplayOpt.DisplayPcbTrackFill = FILLED; DisplayOpt.DisplayPcbTrackFill = FILLED;
DisplayOpt.DisplayTrackIsol = 0; DisplayOpt.DisplayTrackIsol = 0;
DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayDrawItems = FILLED;
DisplayOpt.DisplayZones = 1; DisplayOpt.DisplayZonesMode = 0;
DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch; DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch;
g_DisplayPolygonsModeSketch = 0; g_DisplayPolygonsModeSketch = 0;
......
...@@ -56,6 +56,8 @@ extern const char* break_line_xpm[]; ...@@ -56,6 +56,8 @@ extern const char* break_line_xpm[];
extern const char* browse_files_xpm[]; extern const char* browse_files_xpm[];
extern const char* cancel_tool_xpm[]; extern const char* cancel_tool_xpm[];
extern const char* cancel_xpm[]; extern const char* cancel_xpm[];
extern const char* component_select_alternate_shape_xpm[];
extern const char* component_select_unit_xpm[];
extern const char* config_xpm[]; extern const char* config_xpm[];
extern const char* copyblock_xpm[]; extern const char* copyblock_xpm[];
extern const char* copy_button[]; extern const char* copy_button[];
...@@ -333,6 +335,8 @@ extern const char* show_dcodenumber_xpm[]; ...@@ -333,6 +335,8 @@ extern const char* show_dcodenumber_xpm[];
extern const char* show_mod_edge_xpm[]; extern const char* show_mod_edge_xpm[];
extern const char* showtrack_xpm[]; extern const char* showtrack_xpm[];
extern const char* show_zone_xpm[]; extern const char* show_zone_xpm[];
extern const char* show_zone_disable_xpm[];
extern const char* show_zone_outline_only_xpm[];
extern const char* swap_layer_xpm[]; extern const char* swap_layer_xpm[];
extern const char* text_sketch_xpm[]; extern const char* text_sketch_xpm[];
extern const char* tool_ratsnet_xpm[]; extern const char* tool_ratsnet_xpm[];
......
...@@ -822,6 +822,8 @@ enum main_id { ...@@ -822,6 +822,8 @@ enum main_id {
ID_TB_OPTIONS_SHOW_MODULE_RATSNEST, ID_TB_OPTIONS_SHOW_MODULE_RATSNEST,
ID_TB_OPTIONS_AUTO_DEL_TRACK, ID_TB_OPTIONS_AUTO_DEL_TRACK,
ID_TB_OPTIONS_SHOW_ZONES, ID_TB_OPTIONS_SHOW_ZONES,
ID_TB_OPTIONS_SHOW_ZONES_DISABLE,
ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY,
ID_TB_OPTIONS_HIDDEN_PINS, ID_TB_OPTIONS_HIDDEN_PINS,
ID_TB_OPTIONS_BUS_WIRES_ORIENT, ID_TB_OPTIONS_BUS_WIRES_ORIENT,
......
...@@ -285,7 +285,7 @@ public: ...@@ -285,7 +285,7 @@ public:
* 2 show all via hole */ * 2 show all via hole */
bool DisplayPolarCood; bool DisplayPolarCood;
bool DisplayZones; int DisplayZonesMode;
bool Show_Modules_Cmp; bool Show_Modules_Cmp;
bool Show_Modules_Cu; bool Show_Modules_Cu;
......
No preview for this file type
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-12-08 19:48+0100\n" "POT-Creation-Date: 2008-12-11 17:20+0100\n"
"PO-Revision-Date: 2008-12-08 19:49+0100\n" "PO-Revision-Date: 2008-12-11 18:52+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -4418,7 +4418,7 @@ msgstr "Utiliser des polygones" ...@@ -4418,7 +4418,7 @@ msgstr "Utiliser des polygones"
#: pcbnew/dialog_copper_zones_base.cpp:40 #: pcbnew/dialog_copper_zones_base.cpp:40
msgid "Use segments" msgid "Use segments"
msgstr "Utiliser des egments" msgstr "Utiliser des segments"
#: pcbnew/dialog_copper_zones_base.cpp:42 #: pcbnew/dialog_copper_zones_base.cpp:42
msgid "Filling Mode:" msgid "Filling Mode:"
...@@ -5628,44 +5628,44 @@ msgstr "Pas de composants trouvés" ...@@ -5628,44 +5628,44 @@ msgstr "Pas de composants trouvés"
msgid "Selection" msgid "Selection"
msgstr "Sélection" msgstr "Sélection"
#: eeschema/annotate.cpp:738 #: eeschema/annotate.cpp:656
#, c-format #, c-format
msgid "item not annotated: %s%s" msgid "item not annotated: %s%s"
msgstr "item non numéroté: %s%s" msgstr "item non numéroté: %s%s"
#: eeschema/annotate.cpp:743 #: eeschema/annotate.cpp:661
#, c-format #, c-format
msgid "( unit %d)" msgid "( unit %d)"
msgstr "( Unité %d)" msgstr "( Unité %d)"
#: eeschema/annotate.cpp:760 #: eeschema/annotate.cpp:678
#, c-format #, c-format
msgid "Error item %s%s" msgid "Error item %s%s"
msgstr "Erreur item %s%s" msgstr "Erreur item %s%s"
#: eeschema/annotate.cpp:763 #: eeschema/annotate.cpp:681
#, c-format #, c-format
msgid " unit %d and no more than %d parts" msgid " unit %d and no more than %d parts"
msgstr " unité %d et plus que %d parts" msgstr " unité %d et plus que %d parts"
#: eeschema/annotate.cpp:797 #: eeschema/annotate.cpp:713
#: eeschema/annotate.cpp:820 #: eeschema/annotate.cpp:736
#, c-format #, c-format
msgid "Multiple item %s%s" msgid "Multiple item %s%s"
msgstr "Multipleélément %s%s" msgstr "Multipleélément %s%s"
#: eeschema/annotate.cpp:802 #: eeschema/annotate.cpp:718
#: eeschema/annotate.cpp:825 #: eeschema/annotate.cpp:741
#, c-format #, c-format
msgid " (unit %d)" msgid " (unit %d)"
msgstr " ( Unité %d)" msgstr " ( Unité %d)"
#: eeschema/annotate.cpp:843 #: eeschema/annotate.cpp:757
#, c-format #, c-format
msgid "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" msgid "Diff values for %s%d.%c (%s) and %s%d.%c (%s)"
msgstr "Valeurs différentes pour %s%d%c (%s) et %s%d%c (%s)" msgstr "Valeurs différentes pour %s%d%c (%s) et %s%d%c (%s)"
#: eeschema/annotate.cpp:852 #: eeschema/annotate.cpp:766
#, c-format #, c-format
msgid "Diff values for %s%d%c (%s) and %s%d%c (%s)" msgid "Diff values for %s%d%c (%s) and %s%d%c (%s)"
msgstr "Valeurs différentes pour %s%d%c (%s) et %s%d%c (%s)" msgstr "Valeurs différentes pour %s%d%c (%s) et %s%d%c (%s)"
...@@ -6402,11 +6402,11 @@ msgstr "Ajout Composant" ...@@ -6402,11 +6402,11 @@ msgstr "Ajout Composant"
msgid "Add Wire" msgid "Add Wire"
msgstr "Ajouter Fils" msgstr "Ajouter Fils"
#: eeschema/libarch.cpp:78 #: eeschema/libarch.cpp:66
msgid "Failed to create archive lib file " msgid "Failed to create archive lib file "
msgstr "Impossible de créer le fichier librairie archive " msgstr "Impossible de créer le fichier librairie archive "
#: eeschema/libarch.cpp:85 #: eeschema/libarch.cpp:73
msgid "Failed to create doc lib file " msgid "Failed to create doc lib file "
msgstr "Impossible de créer le fichier lib document" msgstr "Impossible de créer le fichier lib document"
...@@ -7086,16 +7086,16 @@ msgstr "Placer textes graphiques (commentaires)" ...@@ -7086,16 +7086,16 @@ msgstr "Placer textes graphiques (commentaires)"
msgid "HV orientation for Wires and Bus" msgid "HV orientation for Wires and Bus"
msgstr "Force direction H, V et X pour les fils et bus" msgstr "Force direction H, V et X pour les fils et bus"
#: eeschema/build_BOM.cpp:71 #: eeschema/build_BOM.cpp:94
msgid "Bill of materials:" msgid "Bill of materials:"
msgstr "Liste du materiel:" msgstr "Liste du materiel:"
#: eeschema/build_BOM.cpp:122 #: eeschema/build_BOM.cpp:143
#: eeschema/build_BOM.cpp:177 #: eeschema/build_BOM.cpp:182
msgid "Failed to open file " msgid "Failed to open file "
msgstr "Erreur ouverture " msgstr "Erreur ouverture "
#: eeschema/build_BOM.cpp:248 #: eeschema/build_BOM.cpp:226
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
...@@ -7104,7 +7104,7 @@ msgstr "" ...@@ -7104,7 +7104,7 @@ msgstr ""
"\n" "\n"
"#Labels globaux, hiérarchiques et pins de feuille ( ordre = Numéro de feuille ) nombre = %d\n" "#Labels globaux, hiérarchiques et pins de feuille ( ordre = Numéro de feuille ) nombre = %d\n"
#: eeschema/build_BOM.cpp:261 #: eeschema/build_BOM.cpp:237
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
...@@ -7115,7 +7115,7 @@ msgstr "" ...@@ -7115,7 +7115,7 @@ msgstr ""
"##Labels globaux, hiérarchiques et pins de feuille ( ordre = Alphab. ) nombre = %d\n" "##Labels globaux, hiérarchiques et pins de feuille ( ordre = Alphab. ) nombre = %d\n"
"\n" "\n"
#: eeschema/build_BOM.cpp:269 #: eeschema/build_BOM.cpp:244
msgid "" msgid ""
"\n" "\n"
"#End List\n" "#End List\n"
...@@ -7123,11 +7123,11 @@ msgstr "" ...@@ -7123,11 +7123,11 @@ msgstr ""
"\n" "\n"
"#End List\n" "#End List\n"
#: eeschema/build_BOM.cpp:694 #: eeschema/build_BOM.cpp:619
msgid "Field" msgid "Field"
msgstr "Champ" msgstr "Champ"
#: eeschema/build_BOM.cpp:702 #: eeschema/build_BOM.cpp:627
msgid "" msgid ""
"\n" "\n"
"#Cmp ( order = Reference )" "#Cmp ( order = Reference )"
...@@ -7135,17 +7135,17 @@ msgstr "" ...@@ -7135,17 +7135,17 @@ msgstr ""
"\n" "\n"
"#Cmp ( ordre = Reference )" "#Cmp ( ordre = Reference )"
#: eeschema/build_BOM.cpp:705 #: eeschema/build_BOM.cpp:630
#: eeschema/build_BOM.cpp:796 #: eeschema/build_BOM.cpp:726
msgid " (with SubCmp)" msgid " (with SubCmp)"
msgstr "avec sub-composants" msgstr "avec sub-composants"
#: eeschema/build_BOM.cpp:771 #: eeschema/build_BOM.cpp:700
#: eeschema/build_BOM.cpp:849 #: eeschema/build_BOM.cpp:781
msgid "#End Cmp\n" msgid "#End Cmp\n"
msgstr "#End Cmp\n" msgstr "#End Cmp\n"
#: eeschema/build_BOM.cpp:793 #: eeschema/build_BOM.cpp:723
msgid "" msgid ""
"\n" "\n"
"#Cmp ( order = Value )" "#Cmp ( order = Value )"
...@@ -7153,17 +7153,17 @@ msgstr "" ...@@ -7153,17 +7153,17 @@ msgstr ""
"\n" "\n"
"#Cmp ( ordre = Valeur )" "#Cmp ( ordre = Valeur )"
#: eeschema/build_BOM.cpp:883 #: eeschema/build_BOM.cpp:811
#, c-format #, c-format
msgid "> %-28.28s %s (Sheet %s) pos: %3.3f, %3.3f\n" msgid "> %-28.28s %s (Sheet %s) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s %s (Feuille %s) pos: %3.3f, %3.3f\n" msgstr "> %-28.28s %s (Feuille %s) pos: %3.3f, %3.3f\n"
#: eeschema/build_BOM.cpp:903 #: eeschema/build_BOM.cpp:831
#, c-format #, c-format
msgid "> %-28.28s PinSheet %-7.7s (Sheet %s) pos: %3.3f, %3.3f\n" msgid "> %-28.28s PinSheet %-7.7s (Sheet %s) pos: %3.3f, %3.3f\n"
msgstr "> %-28.28s PinSheet %-7.7s (Feuille %s) pos: %3.3f, %3.3f\n" msgstr "> %-28.28s PinSheet %-7.7s (Feuille %s) pos: %3.3f, %3.3f\n"
#: eeschema/build_BOM.cpp:918 #: eeschema/build_BOM.cpp:846
msgid "#End labels\n" msgid "#End labels\n"
msgstr "#End labels\n" msgstr "#End labels\n"
...@@ -7481,7 +7481,7 @@ msgstr "Placer lignes ou polygones graphiques" ...@@ -7481,7 +7481,7 @@ msgstr "Placer lignes ou polygones graphiques"
#: eeschema/menubar.cpp:348 #: eeschema/menubar.cpp:348
msgid "Graphic text (comment)" msgid "Graphic text (comment)"
msgstr "Ttextes graphiques (commentaires)" msgstr "Textes graphiques (commentaires)"
#: eeschema/menubar.cpp:359 #: eeschema/menubar.cpp:359
msgid "Library preferences" msgid "Library preferences"
...@@ -8332,29 +8332,29 @@ msgstr "Fichier <%s> non trouvé" ...@@ -8332,29 +8332,29 @@ msgstr "Fichier <%s> non trouvé"
msgid "Ok to cleanup this sheet" msgid "Ok to cleanup this sheet"
msgstr "Ok pour nettoyer cette feuille" msgstr "Ok pour nettoyer cette feuille"
#: eeschema/class_drawsheet.cpp:566 #: eeschema/class_drawsheet.cpp:563
#, c-format #, c-format
msgid "A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?" msgid "A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?"
msgstr "Une sous Hiérarchie nommée %s existe, L'utiliser (Les données de cette page seront remplacées)?" msgstr "Une sous Hiérarchie nommée %s existe, L'utiliser (Les données de cette page seront remplacées)?"
#: eeschema/class_drawsheet.cpp:570 #: eeschema/class_drawsheet.cpp:567
msgid "Sheet Filename Renaming Aborted" msgid "Sheet Filename Renaming Aborted"
msgstr " Renommage de Fichier de Feuille Abandonné" msgstr " Renommage de Fichier de Feuille Abandonné"
#: eeschema/class_drawsheet.cpp:578 #: eeschema/class_drawsheet.cpp:575
#, c-format #, c-format
msgid "A file named %s exists, load it (otherwise keep current sheet data if possible)?" msgid "A file named %s exists, load it (otherwise keep current sheet data if possible)?"
msgstr "Un fichier %s existe, Le charger (autrement garder le contenu de la feuille active, si c'est possible) ?" msgstr "Un fichier %s existe, Le charger (autrement garder le contenu de la feuille active, si c'est possible) ?"
#: eeschema/class_drawsheet.cpp:596 #: eeschema/class_drawsheet.cpp:593
msgid "This sheet uses shared data in a complex hierarchy" msgid "This sheet uses shared data in a complex hierarchy"
msgstr "Cette feuille utilise des données partagées dans une hiérarchie complexe" msgstr "Cette feuille utilise des données partagées dans une hiérarchie complexe"
#: eeschema/class_drawsheet.cpp:599 #: eeschema/class_drawsheet.cpp:596
msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)" msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)"
msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)" msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)"
#: eeschema/class_drawsheet.cpp:758 #: eeschema/class_drawsheet.cpp:755
#, c-format #, c-format
msgid "%8.8lX/" msgid "%8.8lX/"
msgstr "%8.8lX/" msgstr "%8.8lX/"
......
...@@ -539,7 +539,7 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin ...@@ -539,7 +539,7 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
int rayon; int rayon;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer; int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
if( Type() == TYPE_ZONE && !DisplayOpt.DisplayZones ) if( Type() == TYPE_ZONE && DisplayOpt.DisplayZonesMode != 0 )
return; return;
if( m_Flags & DRAW_ERASED ) // draw in background color, used by classs TRACK in gerbview if( m_Flags & DRAW_ERASED ) // draw in background color, used by classs TRACK in gerbview
......
...@@ -154,7 +154,7 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const ...@@ -154,7 +154,7 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
return false; return false;
ret = fprintf( aFile, "ZOptions %d %d %c %d %d\n", m_FillMode, m_ArcToSegmentsCount, ret = fprintf( aFile, "ZOptions %d %d %c %d %d\n", m_FillMode, m_ArcToSegmentsCount,
m_DrawOptions ? 'S' : 'F', m_ThermalReliefGapValue, m_ThermalReliefCopperBridgeValue ); m_Unused ? 'S' : 'F', m_ThermalReliefGapValue, m_ThermalReliefCopperBridgeValue );
if( ret < 3 ) if( ret < 3 )
return false; return false;
...@@ -301,8 +301,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum ) ...@@ -301,8 +301,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
if( arcsegmentcount >= 32 ) if( arcsegmentcount >= 32 )
m_ArcToSegmentsCount = 32; m_ArcToSegmentsCount = 32;
if( drawopt == 'S' ) // Sketch mode for filled areas in this zone selected m_Unused = 0; // Waiting for a better use
m_DrawOptions = 1;
} }
if( strnicmp( Line, "ZClearance", 10 ) == 0 ) // Clearence and pad options info found if( strnicmp( Line, "ZClearance", 10 ) == 0 ) // Clearence and pad options info found
{ {
...@@ -486,13 +485,14 @@ void ZONE_CONTAINER::DrawFilledArea( WinEDA_DrawPanel* panel, ...@@ -486,13 +485,14 @@ void ZONE_CONTAINER::DrawFilledArea( WinEDA_DrawPanel* panel,
{ {
static vector < char > CornersTypeBuffer; static vector < char > CornersTypeBuffer;
static vector < corner_coord > CornersBuffer; static vector < corner_coord > CornersBuffer;
// outline_mode is false to show filled polys,
bool outline_mode = m_DrawOptions; // false to show filled polys, true to show polygons outlines only (test and debug purposes) // and true to show polygons outlines only (test and debug purposes)
bool outline_mode = DisplayOpt.DisplayZonesMode == 2 ? true : false;
if( DC == NULL ) if( DC == NULL )
return; return;
if( !DisplayOpt.DisplayZones ) if( DisplayOpt.DisplayZonesMode == 1 ) // Do not show filled areas
return; return;
if( m_FilledPolysList.size() == 0 ) // Nothing to draw if( m_FilledPolysList.size() == 0 ) // Nothing to draw
......
...@@ -39,9 +39,7 @@ public: ...@@ -39,9 +39,7 @@ public:
* In less simple cases (when m_Poly has holes) m_FilledPolysList is a polygon equivalent to m_Poly, without holes * In less simple cases (when m_Poly has holes) m_FilledPolysList is a polygon equivalent to m_Poly, without holes
* In complex cases an ouline decribed by m_Poly can have many filled areas * In complex cases an ouline decribed by m_Poly can have many filled areas
*/ */
int m_DrawOptions; /* used to pass some draw options (draw filled areas in sketch mode for instance ...) int m_Unused; /* waiting for use */
* currently useful when testing filling zones algos
*/
private: private:
int m_NetCode; // Net number for fast comparisons int m_NetCode; // Net number for fast comparisons
......
...@@ -24,15 +24,15 @@ ...@@ -24,15 +24,15 @@
ZONE_SETTING::ZONE_SETTING( void ) ZONE_SETTING::ZONE_SETTING( void )
{ {
m_FillMode = 1; // Mode for filling zone : 1 use segments, 0 use polygons m_FillMode = 1; // Mode for filling zone : 1 use segments, 0 use polygons
m_ZoneClearance = 200; // Clearance value m_ZoneClearance = 200; // Clearance value
m_ZoneMinThickness = 100; // Min thickness value in filled areas m_ZoneMinThickness = 100; // Min thickness value in filled areas
m_NetcodeSelection = 0; // Net code selection for the current zone m_NetcodeSelection = 0; // Net code selection for the current zone
m_CurrentZone_Layer = 0; // Layer used to create the current zone m_CurrentZone_Layer = 0; // Layer used to create the current zone
m_Zone_HatchingStyle = CPolyLine::DIAGONAL_EDGE; // Option to show the zone area (outlines only, short hatches or full hatches m_Zone_HatchingStyle = CPolyLine::DIAGONAL_EDGE; // Option to show the zone area (outlines only, short hatches or full hatches
m_ArcToSegmentsCount = 16; /* Option to select number of segments to approximate a circle m_ArcToSegmentsCount = 16; /* Option to select number of segments to approximate a circle
* 16 or 32 segments */ * 16 or 32 segments */
m_FilledAreasShowMode = 0; // Used to select draw options for filled areas in a zone (currently normal =0, sketch = 1) m_Unused = 0;
m_ThermalReliefGapValue = 200; // tickness of the gap in thermal reliefs m_ThermalReliefGapValue = 200; // tickness of the gap in thermal reliefs
m_ThermalReliefCopperBridgeValue = 200; // tickness of the copper bridge in thermal reliefs m_ThermalReliefCopperBridgeValue = 200; // tickness of the copper bridge in thermal reliefs
...@@ -46,14 +46,14 @@ ZONE_SETTING::ZONE_SETTING( void ) ...@@ -46,14 +46,14 @@ ZONE_SETTING::ZONE_SETTING( void )
*/ */
void ZONE_SETTING::ImportSetting( const ZONE_CONTAINER& aSource ) void ZONE_SETTING::ImportSetting( const ZONE_CONTAINER& aSource )
{ {
m_FillMode = aSource.m_FillMode; m_FillMode = aSource.m_FillMode;
m_ZoneClearance = aSource.m_ZoneClearance; m_ZoneClearance = aSource.m_ZoneClearance;
m_ZoneMinThickness = aSource.m_ZoneMinThickness; m_ZoneMinThickness = aSource.m_ZoneMinThickness;
m_NetcodeSelection = aSource.GetNet(); m_NetcodeSelection = aSource.GetNet();
m_CurrentZone_Layer = aSource.GetLayer(); m_CurrentZone_Layer = aSource.GetLayer();
m_Zone_HatchingStyle = aSource.GetHatchStyle(); m_Zone_HatchingStyle = aSource.GetHatchStyle();
m_ArcToSegmentsCount = aSource.m_ArcToSegmentsCount; m_ArcToSegmentsCount = aSource.m_ArcToSegmentsCount;
m_FilledAreasShowMode = aSource.m_DrawOptions; m_Unused = aSource.m_Unused;
m_ThermalReliefGapValue = aSource.m_ThermalReliefGapValue; m_ThermalReliefGapValue = aSource.m_ThermalReliefGapValue;
m_ThermalReliefCopperBridgeValue = aSource.m_ThermalReliefCopperBridgeValue; m_ThermalReliefCopperBridgeValue = aSource.m_ThermalReliefCopperBridgeValue;
m_Zone_Pad_Options = aSource.m_PadOption; m_Zone_Pad_Options = aSource.m_PadOption;
...@@ -71,15 +71,15 @@ void ZONE_SETTING::ImportSetting( const ZONE_CONTAINER& aSource ) ...@@ -71,15 +71,15 @@ void ZONE_SETTING::ImportSetting( const ZONE_CONTAINER& aSource )
void ZONE_SETTING::ExportSetting( ZONE_CONTAINER& aTarget, bool aFullExport ) void ZONE_SETTING::ExportSetting( ZONE_CONTAINER& aTarget, bool aFullExport )
{ {
aTarget.m_FillMode = m_FillMode; aTarget.m_FillMode = m_FillMode;
aTarget.m_ZoneClearance = m_ZoneClearance; aTarget.m_ZoneClearance = m_ZoneClearance;
aTarget.m_ZoneMinThickness = m_ZoneMinThickness; aTarget.m_ZoneMinThickness = m_ZoneMinThickness;
aTarget.m_Poly->SetHatch( m_Zone_HatchingStyle ); aTarget.m_Poly->SetHatch( m_Zone_HatchingStyle );
aTarget.m_ArcToSegmentsCount = m_ArcToSegmentsCount; aTarget.m_ArcToSegmentsCount = m_ArcToSegmentsCount;
aTarget.m_DrawOptions = m_FilledAreasShowMode; aTarget.m_Unused = m_Unused;
aTarget.m_ThermalReliefGapValue = m_ThermalReliefGapValue; aTarget.m_ThermalReliefGapValue = m_ThermalReliefGapValue;
aTarget.m_ThermalReliefCopperBridgeValue = m_ThermalReliefCopperBridgeValue; aTarget.m_ThermalReliefCopperBridgeValue = m_ThermalReliefCopperBridgeValue;
aTarget.m_PadOption = m_Zone_Pad_Options; aTarget.m_PadOption = m_Zone_Pad_Options;
if ( aFullExport ) if( aFullExport )
{ {
aTarget.SetNet( m_NetcodeSelection ); aTarget.SetNet( m_NetcodeSelection );
aTarget.SetLayer( m_CurrentZone_Layer ); aTarget.SetLayer( m_CurrentZone_Layer );
......
...@@ -25,7 +25,7 @@ public: ...@@ -25,7 +25,7 @@ public:
int m_Zone_HatchingStyle; // Option to show the zone area (outlines only, short hatches or full hatches int m_Zone_HatchingStyle; // Option to show the zone area (outlines only, short hatches or full hatches
int m_ArcToSegmentsCount; /* Option to select number of segments to approximate a circle int m_ArcToSegmentsCount; /* Option to select number of segments to approximate a circle
* 16 or 32 segments */ * 16 or 32 segments */
int m_FilledAreasShowMode; // Used to select draw options for filled areas in a zone (currently normal =0, sketch = 1) int m_Unused; // waiting for a better use
long m_ThermalReliefGapValue; // tickness of the gap in thermal reliefs long m_ThermalReliefGapValue; // tickness of the gap in thermal reliefs
long m_ThermalReliefCopperBridgeValue; // tickness of the copper bridge in thermal reliefs long m_ThermalReliefCopperBridgeValue; // tickness of the copper bridge in thermal reliefs
int m_Zone_Pad_Options; // How pads are covered by copper in zone int m_Zone_Pad_Options; // How pads are covered by copper in zone
......
...@@ -121,7 +121,9 @@ DISPLAY_OPTIONS::DISPLAY_OPTIONS() ...@@ -121,7 +121,9 @@ DISPLAY_OPTIONS::DISPLAY_OPTIONS()
m_DisplayViaMode = VIA_HOLE_NOT_SHOW; m_DisplayViaMode = VIA_HOLE_NOT_SHOW;
DisplayPolarCood = TRUE; DisplayPolarCood = TRUE;
DisplayZones = TRUE; DisplayZonesMode = 0; // 0 = Show filled areas outlines in zones,
// 1 = do not show filled areas outlines
// 2 = show outlines of filled areas
Show_Modules_Cmp = TRUE; Show_Modules_Cmp = TRUE;
Show_Modules_Cu = TRUE; Show_Modules_Cu = TRUE;
......
...@@ -86,7 +86,7 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( int aHotKeyCode ) ...@@ -86,7 +86,7 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( int aHotKeyCode )
break; break;
default: default:
scanList = DisplayOpt.DisplayZones ? scanList = DisplayOpt.DisplayZonesMode == 0 ?
GENERAL_COLLECTOR::AllBoardItems : GENERAL_COLLECTOR::AllBoardItems :
GENERAL_COLLECTOR::AllButZones; GENERAL_COLLECTOR::AllButZones;
break; break;
...@@ -109,7 +109,7 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( int aHotKeyCode ) ...@@ -109,7 +109,7 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( int aHotKeyCode )
break; break;
default: default:
scanList = DisplayOpt.DisplayZones ? scanList = DisplayOpt.DisplayZonesMode == 0 ?
GENERAL_COLLECTOR::AllBoardItems : GENERAL_COLLECTOR::AllBoardItems :
GENERAL_COLLECTOR::AllButZones; GENERAL_COLLECTOR::AllButZones;
} }
......
...@@ -98,9 +98,6 @@ void dialog_copper_zone::OnInitDialog( wxInitDialogEvent& event ) ...@@ -98,9 +98,6 @@ void dialog_copper_zone::OnInitDialog( wxInitDialogEvent& event )
break; break;
} }
if( m_Zone_Setting->m_FilledAreasShowMode == 1 )
m_ShowFilledAreasInSketchOpt->SetValue( true );
if( m_Zone_Setting->m_Zone_Pad_Options != THERMAL_PAD ) if( m_Zone_Setting->m_Zone_Pad_Options != THERMAL_PAD )
{ {
...@@ -294,8 +291,6 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab ...@@ -294,8 +291,6 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
else else
g_Zone_45_Only = TRUE; g_Zone_45_Only = TRUE;
m_Zone_Setting->m_FilledAreasShowMode = m_ShowFilledAreasInSketchOpt->IsChecked() ? 1 : 0;
m_Zone_Setting->m_ThermalReliefGapValue = ReturnValueFromTextCtrl( *m_AntipadSizeValue, m_Zone_Setting->m_ThermalReliefGapValue = ReturnValueFromTextCtrl( *m_AntipadSizeValue,
PCB_INTERNAL_UNIT ); PCB_INTERNAL_UNIT );
m_Zone_Setting->m_ThermalReliefCopperBridgeValue = ReturnValueFromTextCtrl( m_Zone_Setting->m_ThermalReliefCopperBridgeValue = ReturnValueFromTextCtrl(
......
...@@ -115,12 +115,6 @@ dialog_copper_zone_base::dialog_copper_zone_base( wxWindow* parent, wxWindowID i ...@@ -115,12 +115,6 @@ dialog_copper_zone_base::dialog_copper_zone_base( wxWindow* parent, wxWindowID i
wxStaticBoxSizer* m_OthersOptionsSizer; wxStaticBoxSizer* m_OthersOptionsSizer;
m_OthersOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Others Options:") ), wxVERTICAL ); m_OthersOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Others Options:") ), wxVERTICAL );
m_ShowFilledAreasInSketchOpt = new wxCheckBox( this, wxID_ANY, _("Show filled areas in sketch mode"), wxDefaultPosition, wxDefaultSize, 0 );
m_ShowFilledAreasInSketchOpt->SetToolTip( _("If enabled, filled areas in is this zone will be displayed as non filled polygons.\nIf disabled, filled areas in is this zone will be displayed as \"solid\" areas (normal mode).") );
m_OthersOptionsSizer->Add( m_ShowFilledAreasInSketchOpt, 0, wxALL, 5 );
m_ClearanceValueTitle = new wxStaticText( this, wxID_ANY, _("Zone clearance value"), wxDefaultPosition, wxDefaultSize, 0 ); m_ClearanceValueTitle = new wxStaticText( this, wxID_ANY, _("Zone clearance value"), wxDefaultPosition, wxDefaultSize, 0 );
m_ClearanceValueTitle->Wrap( -1 ); m_ClearanceValueTitle->Wrap( -1 );
m_OthersOptionsSizer->Add( m_ClearanceValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); m_OthersOptionsSizer->Add( m_ClearanceValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
...@@ -154,15 +148,20 @@ dialog_copper_zone_base::dialog_copper_zone_base( wxWindow* parent, wxWindowID i ...@@ -154,15 +148,20 @@ dialog_copper_zone_base::dialog_copper_zone_base( wxWindow* parent, wxWindowID i
m_RightBoxSizer = new wxBoxSizer( wxVERTICAL ); m_RightBoxSizer = new wxBoxSizer( wxVERTICAL );
m_ExportSetupButton = new wxButton( this, wxID_BUTTON_EXPORT, _("Export Setup to others zones"), wxDefaultPosition, wxDefaultSize, 0 ); m_ExportSetupButton = new wxButton( this, wxID_BUTTON_EXPORT, _("Export Setup to others zones"), wxDefaultPosition, wxDefaultSize, 0 );
m_ExportSetupButton->SetForegroundColour( wxColour( 51, 111, 40 ) );
m_ExportSetupButton->SetToolTip( _("Export this zone setup to all others copper zones") ); m_ExportSetupButton->SetToolTip( _("Export this zone setup to all others copper zones") );
m_RightBoxSizer->Add( m_ExportSetupButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); m_RightBoxSizer->Add( m_ExportSetupButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
m_OkButton = new wxButton( this, wxID_OK, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 ); m_OkButton = new wxButton( this, wxID_OK, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 );
m_OkButton->SetDefault(); m_OkButton->SetDefault();
m_OkButton->SetForegroundColour( wxColour( 140, 49, 47 ) );
m_RightBoxSizer->Add( m_OkButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); m_RightBoxSizer->Add( m_OkButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
m_ButtonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); m_ButtonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_ButtonCancel->SetForegroundColour( wxColour( 45, 38, 155 ) );
m_RightBoxSizer->Add( m_ButtonCancel, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); m_RightBoxSizer->Add( m_ButtonCancel, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
......
...@@ -669,58 +669,6 @@ ...@@ -669,58 +669,6 @@
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<event name="OnUpdateUI"></event> <event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="bg"></property>
<property name="checked">0</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Show filled areas in sketch mode</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_ShowFilledAreasInSketchOpt</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip">If enabled, filled areas in is this zone will be displayed as non filled polygons.&#x0A;If disabled, filled areas in is this zone will be displayed as &quot;solid&quot; areas (normal mode).</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnCheckBox"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property> <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
...@@ -971,7 +919,7 @@ ...@@ -971,7 +919,7 @@
<property name="context_help"></property> <property name="context_help"></property>
<property name="default">0</property> <property name="default">0</property>
<property name="enabled">1</property> <property name="enabled">1</property>
<property name="fg"></property> <property name="fg">51,111,40</property>
<property name="font"></property> <property name="font"></property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_BUTTON_EXPORT</property> <property name="id">wxID_BUTTON_EXPORT</property>
...@@ -1023,7 +971,7 @@ ...@@ -1023,7 +971,7 @@
<property name="context_help"></property> <property name="context_help"></property>
<property name="default">1</property> <property name="default">1</property>
<property name="enabled">1</property> <property name="enabled">1</property>
<property name="fg"></property> <property name="fg">140,49,47</property>
<property name="font"></property> <property name="font"></property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_OK</property> <property name="id">wxID_OK</property>
...@@ -1075,7 +1023,7 @@ ...@@ -1075,7 +1023,7 @@
<property name="context_help"></property> <property name="context_help"></property>
<property name="default">0</property> <property name="default">0</property>
<property name="enabled">1</property> <property name="enabled">1</property>
<property name="fg"></property> <property name="fg">45,38,155</property>
<property name="font"></property> <property name="font"></property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_CANCEL</property> <property name="id">wxID_CANCEL</property>
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <wx/textctrl.h> #include <wx/textctrl.h>
#include <wx/sizer.h> #include <wx/sizer.h>
#include <wx/statbox.h> #include <wx/statbox.h>
#include <wx/checkbox.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/listbox.h> #include <wx/listbox.h>
#include <wx/dialog.h> #include <wx/dialog.h>
...@@ -70,7 +69,6 @@ class dialog_copper_zone_base : public wxDialog ...@@ -70,7 +69,6 @@ class dialog_copper_zone_base : public wxDialog
wxRadioBox* m_OrientEdgesOpt; wxRadioBox* m_OrientEdgesOpt;
wxRadioBox* m_OutlineAppearanceCtrl; wxRadioBox* m_OutlineAppearanceCtrl;
wxCheckBox* m_ShowFilledAreasInSketchOpt;
wxStaticText* m_ClearanceValueTitle; wxStaticText* m_ClearanceValueTitle;
wxTextCtrl* m_ZoneClearanceCtrl; wxTextCtrl* m_ZoneClearanceCtrl;
wxStaticText* m_MinThicknessValueTitle; wxStaticText* m_MinThicknessValueTitle;
......
...@@ -51,10 +51,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) ...@@ -51,10 +51,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
{ {
int id = event.GetId(); int id = event.GetId();
wxClientDC dc( DrawPanel );
DrawPanel->CursorOff( &dc );
DrawPanel->PrepareGraphicContext( &dc );
switch( id ) switch( id )
{ {
...@@ -64,12 +60,16 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) ...@@ -64,12 +60,16 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
case ID_TB_OPTIONS_SHOW_GRID: case ID_TB_OPTIONS_SHOW_GRID:
m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState( id ); m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState( id );
DrawPanel->ReDraw( &dc, TRUE ); DrawPanel->Refresh( );
break; break;
case ID_TB_OPTIONS_SHOW_RATSNEST: case ID_TB_OPTIONS_SHOW_RATSNEST:
g_Show_Ratsnest = m_OptionsToolBar->GetToolState( id ); g_Show_Ratsnest = m_OptionsToolBar->GetToolState( id );
{
wxClientDC dc( DrawPanel );
DrawPanel->PrepareGraphicContext( &dc );
Ratsnest_On_Off( &dc ); Ratsnest_On_Off( &dc );
}
break; break;
case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST: case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST:
...@@ -103,26 +103,36 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) ...@@ -103,26 +103,36 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
break; break;
case ID_TB_OPTIONS_SHOW_ZONES: case ID_TB_OPTIONS_SHOW_ZONES:
DisplayOpt.DisplayZones = m_OptionsToolBar->GetToolState( id ); DisplayOpt.DisplayZonesMode = 0;
DrawPanel->ReDraw( &dc, TRUE ); DrawPanel->Refresh( );
break;
case ID_TB_OPTIONS_SHOW_ZONES_DISABLE:
DisplayOpt.DisplayZonesMode = 1;
DrawPanel->Refresh( );
break;
case ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY:
DisplayOpt.DisplayZonesMode = 2;
DrawPanel->Refresh( );
break; break;
case ID_TB_OPTIONS_SHOW_PADS_SKETCH: case ID_TB_OPTIONS_SHOW_PADS_SKETCH:
m_DisplayPadFill = DisplayOpt.DisplayPadFill = m_DisplayPadFill = DisplayOpt.DisplayPadFill =
!m_OptionsToolBar->GetToolState( id ); !m_OptionsToolBar->GetToolState( id );
DrawPanel->ReDraw( &dc, TRUE ); DrawPanel->Refresh( );
break; break;
case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill =
!m_OptionsToolBar->GetToolState( id ); !m_OptionsToolBar->GetToolState( id );
DrawPanel->ReDraw( &dc, TRUE ); DrawPanel->Refresh( );
break; break;
case ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE: case ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE:
DisplayOpt.ContrastModeDisplay = DisplayOpt.ContrastModeDisplay =
m_OptionsToolBar->GetToolState( id ); m_OptionsToolBar->GetToolState( id );
DrawPanel->ReDraw( &dc, TRUE ); DrawPanel->Refresh( );
break; break;
case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1: case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1:
...@@ -147,7 +157,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) ...@@ -147,7 +157,6 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event )
} }
SetToolbars(); SetToolbars();
DrawPanel->CursorOn( &dc );
} }
......
...@@ -265,7 +265,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -265,7 +265,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_PCB_ZONES_BUTT: case ID_PCB_ZONES_BUTT:
SetToolID( id, wxCURSOR_PENCIL, _( "Add Zones" ) ); SetToolID( id, wxCURSOR_PENCIL, _( "Add Zones" ) );
if( !DisplayOpt.DisplayZones ) if( DisplayOpt.DisplayZonesMode != 0 )
DisplayInfo( this, _( "Warning: Display Zone is OFF!!!" ) ); DisplayInfo( this, _( "Warning: Display Zone is OFF!!!" ) );
if( !g_HightLigt_Status && (g_HightLigth_NetCode > 0 ) ) if( !g_HightLigt_Status && (g_HightLigth_NetCode > 0 ) )
Hight_Light( &dc ); Hight_Light( &dc );
......
...@@ -49,7 +49,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl ...@@ -49,7 +49,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
frame->m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = FILLED; frame->m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = FILLED;
DisplayOpt.DisplayTrackIsol = FALSE; DisplayOpt.DisplayTrackIsol = FALSE;
DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayDrawItems = FILLED;
DisplayOpt.DisplayZones = TRUE; DisplayOpt.DisplayZonesMode = 0;
m_PrintIsMirrored = aPrintMirrorMode; m_PrintIsMirrored = aPrintMirrorMode;
......
...@@ -449,15 +449,9 @@ void WinEDA_PcbFrame::SetToolbars() ...@@ -449,15 +449,9 @@ void WinEDA_PcbFrame::SetToolbars()
_( "Disable Auto Delete old Track" ) : _( "Disable Auto Delete old Track" ) :
_( "Enable Auto Delete old Track" ) ); _( "Enable Auto Delete old Track" ) );
m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_ZONES,
DisplayOpt.DisplayZones );
m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_ZONES,
DisplayOpt.DisplayZones ?
_( "Do not Show Zones" ) : _( "Show Zones" ) );
m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH,
!m_DisplayPadFill ); !m_DisplayPadFill );
m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_PADS_SKETCH, m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_PADS_SKETCH,
m_DisplayPadFill ? m_DisplayPadFill ?
_( "Show Pads Sketch mode" ) : _( "Show Pads Sketch mode" ) :
......
...@@ -418,15 +418,6 @@ static ColorButton Grid_Butt = ...@@ -418,15 +418,6 @@ static ColorButton Grid_Butt =
&g_ShowGrid // Address of boolean display control parameter to toggle &g_ShowGrid // Address of boolean display control parameter to toggle
}; };
static ColorButton Show_Zones_Butt =
{
_( "Show Zones" ), // Title
-1,
NULL, // Address of optional parameter
FALSE,
&DisplayOpt.DisplayZones // Address of boolean display control parameter to toggle
};
static ColorButton Show_Pads_Noconnect_Butt = static ColorButton Show_Pads_Noconnect_Butt =
{ {
_( "Show Noconnect" ), // Title _( "Show Noconnect" ), // Title
...@@ -502,7 +493,6 @@ static ColorButton* laytool_list[] = { ...@@ -502,7 +493,6 @@ static ColorButton* laytool_list[] = {
&Anchors_Butt, &Anchors_Butt,
&Grid_Butt, &Grid_Butt,
&Show_Zones_Butt,
&Show_Pads_Noconnect_Butt, &Show_Pads_Noconnect_Butt,
&Show_Modules_Cmp_Butt, &Show_Modules_Cmp_Butt,
&Show_Modules_Cu_Butt, &Show_Modules_Cu_Butt,
......
...@@ -369,9 +369,15 @@ void WinEDA_PcbFrame::ReCreateOptToolbar() ...@@ -369,9 +369,15 @@ void WinEDA_PcbFrame::ReCreateOptToolbar()
_( "Enable Auto Del Track" ), wxITEM_CHECK ); _( "Enable Auto Del Track" ), wxITEM_CHECK );
m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddSeparator();
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString,
wxBitmap( show_zone_xpm ), wxBitmap( show_zone_xpm ), wxNullBitmap,
_( "Show Zones" ), wxITEM_CHECK ); _( "Show filled areas in zones" ) );
m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES_DISABLE, wxEmptyString,
wxBitmap( show_zone_disable_xpm ), wxNullBitmap,
_( "Do not show filled areas in zones" ));
m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY, wxEmptyString,
wxBitmap( show_zone_outline_only_xpm ), wxNullBitmap,
_( "Show outlines of filled areas only in zones" ) );
m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddSeparator();
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString, m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment