Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
59549109
Commit
59549109
authored
Jan 13, 2014
by
jean-pierre charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix some issues in modview, relative to some a bad use of some wxAuiManager functions.
parent
f0412874
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
79 additions
and
101 deletions
+79
-101
drawframe.cpp
common/drawframe.cpp
+2
-0
modview_frame.cpp
pcbnew/modview_frame.cpp
+68
-81
modview_frame.h
pcbnew/modview_frame.h
+3
-8
tool_modview.cpp
pcbnew/tool_modview.cpp
+6
-12
No files found.
common/drawframe.cpp
View file @
59549109
...
...
@@ -118,6 +118,8 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( wxWindow* aParent,
m_snapToGrid
=
true
;
m_MsgFrameHeight
=
EDA_MSG_PANEL
::
GetRequiredHeight
();
m_auimgr
.
SetFlags
(
wxAUI_MGR_DEFAULT
|
wxAUI_MGR_LIVE_RESIZE
);
CreateStatusBar
(
6
);
// set the size of the status bar subwindows:
...
...
pcbnew/modview_frame.cpp
View file @
59549109
...
...
@@ -117,6 +117,7 @@ static wxAcceleratorEntry accels[] =
#define FOOTPRINT_VIEWER_FRAME_NAME wxT( "ModViewFrame" )
FOOTPRINT_VIEWER_FRAME
::
FOOTPRINT_VIEWER_FRAME
(
PCB_BASE_FRAME
*
aParent
,
FP_LIB_TABLE
*
aTable
,
wxSemaphore
*
aSemaphore
,
...
...
@@ -137,14 +138,12 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( PCB_BASE_FRAME* aParent,
SetIcon
(
icon
);
m_HotkeysZoomAndGridList
=
g_Module_Viewer_Hokeys_Descr
;
m_FootprintList
=
NULL
;
m_LibList
=
NULL
;
m_LibListWindow
=
NULL
;
m_FootprintListWindow
=
NULL
;
m_Semaphore
=
aSemaphore
;
m_footprintList
=
NULL
;
m_libList
=
NULL
;
m_semaphore
=
aSemaphore
;
m_selectedFootprintName
.
Empty
();
if
(
m_
S
emaphore
)
if
(
m_
s
emaphore
)
SetModalMode
(
true
);
SetBoard
(
new
BOARD
()
);
...
...
@@ -160,33 +159,17 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( PCB_BASE_FRAME* aParent,
ReCreateHToolbar
();
ReCreateVToolbar
();
wxSize
initialSashSize
(
100
,
-
1
);
// Creates the libraries window display
m_LibListWindow
=
new
wxSashLayoutWindow
(
this
,
ID_MODVIEW_LIBWINDOW
,
wxDefaultPosition
,
initialSashSize
,
wxCLIP_CHILDREN
|
wxSW_3D
,
wxT
(
"LibWindow"
)
);
m_LibListWindow
->
SetOrientation
(
wxLAYOUT_VERTICAL
);
m_LibListWindow
->
SetAlignment
(
wxLAYOUT_LEFT
);
m_LibListWindow
->
SetSashVisible
(
wxSASH_RIGHT
,
true
);
m_LibListWindow
->
SetExtraBorderSize
(
EXTRA_BORDER_SIZE
);
m_LibList
=
new
wxListBox
(
m_LibListWindow
,
ID_MODVIEW_LIB_LIST
,
wxDefaultPosition
,
initialSashSize
,
wxSize
minsize
(
100
,
-
1
);
// Creates the library and footprint list
m_libList
=
new
wxListBox
(
this
,
ID_MODVIEW_LIB_LIST
,
wxDefaultPosition
,
minsize
,
0
,
NULL
,
wxLB_HSCROLL
);
m_libList
->
SetMinSize
(
minsize
);
// Creates the footprint window display
m_FootprintListWindow
=
new
wxSashLayoutWindow
(
this
,
ID_MODVIEW_FOOTPRINT_WINDOW
,
wxDefaultPosition
,
initialSashSize
,
wxCLIP_CHILDREN
|
wxSW_3D
,
wxT
(
"CmpWindow"
)
);
m_FootprintListWindow
->
SetOrientation
(
wxLAYOUT_VERTICAL
);
m_FootprintListWindow
->
SetSashVisible
(
wxSASH_RIGHT
,
true
);
m_FootprintListWindow
->
SetExtraBorderSize
(
EXTRA_BORDER_SIZE
);
m_FootprintList
=
new
wxListBox
(
m_FootprintListWindow
,
ID_MODVIEW_FOOTPRINT_LIST
,
wxDefaultPosition
,
initialSashSize
,
m_footprintList
=
new
wxListBox
(
this
,
ID_MODVIEW_FOOTPRINT_LIST
,
wxDefaultPosition
,
minsize
,
0
,
NULL
,
wxLB_HSCROLL
);
m_footprintList
->
SetMinSize
(
minsize
);
ReCreateLibraryList
();
DisplayLibInfos
();
...
...
@@ -211,7 +194,8 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( PCB_BASE_FRAME* aParent,
// most likely due to the fact that the other windows are not dockable and are preventing the
// tool bar from docking on the right and left.
wxAuiPaneInfo
toolbarPaneInfo
;
toolbarPaneInfo
.
Name
(
wxT
(
"m_mainToolBar"
)
).
ToolbarPane
().
Top
().
CloseButton
(
false
);
toolbarPaneInfo
.
Name
(
wxT
(
"m_mainToolBar"
)
).
ToolbarPane
().
Top
()
.
CloseButton
(
false
);
EDA_PANEINFO
info
;
info
.
InfoToolbarPane
();
...
...
@@ -223,41 +207,44 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( PCB_BASE_FRAME* aParent,
m_auimgr
.
AddPane
(
m_mainToolBar
,
toolbarPaneInfo
);
// Manage the list of libraries, left pane.
if
(
m_LibListWindow
)
m_auimgr
.
AddPane
(
m_LibListWindow
,
wxAuiPaneInfo
(
info
).
Name
(
wxT
(
"m_LibList"
)
).
Left
().
Row
(
1
)
);
m_auimgr
.
AddPane
(
m_libList
,
wxAuiPaneInfo
(
info
).
Name
(
wxT
(
"m_libList"
)
)
.
Left
().
Row
(
1
)
);
// Manage the list of footprints, center pane.
m_auimgr
.
AddPane
(
m_FootprintListWindow
,
wxAuiPaneInfo
(
info
).
Name
(
wxT
(
"m_FootprintList"
)
).
Centre
().
Row
(
1
)
);
m_auimgr
.
AddPane
(
m_footprintList
,
wxAuiPaneInfo
(
info
).
Name
(
wxT
(
"m_footprintList"
)
)
.
Left
().
Row
(
2
)
);
// Manage the draw panel, right pane.
m_auimgr
.
AddPane
(
m_canvas
,
wxAuiPaneInfo
().
Name
(
wxT
(
"DrawFrame"
)
).
Right
().
Row
(
1
).
CloseButton
(
false
)
);
wxAuiPaneInfo
().
Name
(
wxT
(
"DrawFrame"
)
).
Centre
().
Row
(
1
).
CloseButton
(
false
)
);
// Manage the message panel, bottom pane.
m_auimgr
.
AddPane
(
m_messagePanel
,
wxAuiPaneInfo
(
mesg
).
Name
(
wxT
(
"MsgPanel"
)
).
Bottom
()
);
/* Now the minimum windows are fixed, set library list
* and component list of the previous values from last viewlib use
*/
if
(
m_LibListWindow
)
if
(
!
m_perspective
.
IsEmpty
()
)
{
wxAuiPaneInfo
&
pane
=
m_auimgr
.
GetPane
(
m_LibListWindow
);
pane
.
MinSize
(
wxSize
(
30
,
-
1
)
);
// Restore last saved sizes, pos and other params
// However m_mainToolBar size cannot be set to its last saved size
// because the actual size change depending on the way modview was called:
// the tool to export the current footprint exist or not.
// and the saved size is not always OK
// the trick is to get the default toolbar size, and set the size after
// calling LoadPerspective
wxSize
tbsize
=
m_mainToolBar
->
GetSize
();
m_auimgr
.
LoadPerspective
(
m_perspective
,
false
);
m_auimgr
.
GetPane
(
m_mainToolBar
).
BestSize
(
tbsize
);
}
if
(
m_FootprintListWindow
)
{
wxAuiPaneInfo
&
pane
=
m_auimgr
.
GetPane
(
m_FootprintListWindow
);
pane
.
MinSize
(
wxSize
(
30
,
-
1
)
);
}
// Set min size (overwrite params read in LoadPerspective(), is any)
m_auimgr
.
GetPane
(
m_libList
).
MinSize
(
minsize
);
m_auimgr
.
GetPane
(
m_footprintList
).
MinSize
(
minsize
);
if
(
!
m_perspective
.
IsEmpty
()
)
m_auimgr
.
LoadPerspective
(
m_perspective
);
else
m_auimgr
.
Update
();
// after changing something to the aui manager,
// call Update()() to reflect the changes
m_auimgr
.
Update
();
// Now Drawpanel is sized, we can use BestZoom to show the component (if any)
#ifdef USE_WX_GRAPHICS_CONTEXT
...
...
@@ -294,9 +281,9 @@ FOOTPRINT_VIEWER_FRAME* FOOTPRINT_VIEWER_FRAME::GetActiveFootprintViewer()
void
FOOTPRINT_VIEWER_FRAME
::
OnCloseWindow
(
wxCloseEvent
&
Event
)
{
if
(
m_
S
emaphore
)
if
(
m_
s
emaphore
)
{
m_
S
emaphore
->
Post
();
m_
s
emaphore
->
Post
();
SetModalMode
(
false
);
// This window will be destroyed by the calling function,
// to avoid side effects
...
...
@@ -324,22 +311,22 @@ void FOOTPRINT_VIEWER_FRAME::OnSetRelativeOffset( wxCommandEvent& event )
void
FOOTPRINT_VIEWER_FRAME
::
ReCreateLibraryList
()
{
if
(
m_
L
ibList
==
NULL
)
if
(
m_
l
ibList
==
NULL
)
return
;
m_
L
ibList
->
Clear
();
m_
l
ibList
->
Clear
();
std
::
vector
<
wxString
>
libName
=
m_footprintLibTable
->
GetLogicalLibs
();
for
(
unsigned
ii
=
0
;
ii
<
libName
.
size
();
ii
++
)
m_
L
ibList
->
Append
(
libName
[
ii
]
);
m_
l
ibList
->
Append
(
libName
[
ii
]
);
// Search for a previous selection:
int
index
=
m_
L
ibList
->
FindString
(
m_libraryName
);
int
index
=
m_
l
ibList
->
FindString
(
m_libraryName
);
if
(
index
!=
wxNOT_FOUND
)
{
m_
L
ibList
->
SetSelection
(
index
,
true
);
m_
l
ibList
->
SetSelection
(
index
,
true
);
}
else
{
...
...
@@ -358,10 +345,10 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList()
void
FOOTPRINT_VIEWER_FRAME
::
ReCreateFootprintList
()
{
if
(
m_
F
ootprintList
==
NULL
)
if
(
m_
f
ootprintList
==
NULL
)
return
;
m_
F
ootprintList
->
Clear
();
m_
f
ootprintList
->
Clear
();
if
(
m_libraryName
.
IsEmpty
()
)
{
...
...
@@ -387,25 +374,25 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList()
fpList
.
Add
(
footprint
.
GetFootprintName
()
);
}
m_
F
ootprintList
->
Append
(
fpList
);
m_
f
ootprintList
->
Append
(
fpList
);
int
index
=
m_
F
ootprintList
->
FindString
(
m_footprintName
);
int
index
=
m_
f
ootprintList
->
FindString
(
m_footprintName
);
if
(
index
==
wxNOT_FOUND
)
m_footprintName
=
wxEmptyString
;
else
m_
F
ootprintList
->
SetSelection
(
index
,
true
);
m_
f
ootprintList
->
SetSelection
(
index
,
true
);
}
void
FOOTPRINT_VIEWER_FRAME
::
ClickOnLibList
(
wxCommandEvent
&
event
)
{
int
ii
=
m_
L
ibList
->
GetSelection
();
int
ii
=
m_
l
ibList
->
GetSelection
();
if
(
ii
<
0
)
return
;
wxString
name
=
m_
L
ibList
->
GetString
(
ii
);
wxString
name
=
m_
l
ibList
->
GetString
(
ii
);
if
(
m_libraryName
==
name
)
return
;
...
...
@@ -420,15 +407,15 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnLibList( wxCommandEvent& event )
void
FOOTPRINT_VIEWER_FRAME
::
ClickOnFootprintList
(
wxCommandEvent
&
event
)
{
if
(
m_
F
ootprintList
->
GetCount
()
==
0
)
if
(
m_
f
ootprintList
->
GetCount
()
==
0
)
return
;
int
ii
=
m_
F
ootprintList
->
GetSelection
();
int
ii
=
m_
f
ootprintList
->
GetSelection
();
if
(
ii
<
0
)
return
;
wxString
name
=
m_
F
ootprintList
->
GetString
(
ii
);
wxString
name
=
m_
f
ootprintList
->
GetString
(
ii
);
if
(
m_footprintName
.
CmpNoCase
(
name
)
!=
0
)
{
...
...
@@ -463,7 +450,7 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event )
void
FOOTPRINT_VIEWER_FRAME
::
DClickOnFootprintList
(
wxCommandEvent
&
event
)
{
if
(
m_
S
emaphore
)
if
(
m_
s
emaphore
)
{
ExportSelectedFootprint
(
event
);
// Prevent the double click from being as a single mouse button release
...
...
@@ -478,10 +465,10 @@ void FOOTPRINT_VIEWER_FRAME::DClickOnFootprintList( wxCommandEvent& event )
void
FOOTPRINT_VIEWER_FRAME
::
ExportSelectedFootprint
(
wxCommandEvent
&
event
)
{
int
ii
=
m_
F
ootprintList
->
GetSelection
();
int
ii
=
m_
f
ootprintList
->
GetSelection
();
if
(
ii
>=
0
)
m_selectedFootprintName
=
m_
F
ootprintList
->
GetString
(
ii
);
m_selectedFootprintName
=
m_
f
ootprintList
->
GetString
(
ii
);
else
m_selectedFootprintName
.
Empty
();
...
...
@@ -524,13 +511,13 @@ void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event )
// Ensure we have the right library list:
std
::
vector
<
wxString
>
libNicknames
=
m_footprintLibTable
->
GetLogicalLibs
();
if
(
libNicknames
.
size
()
==
m_
L
ibList
->
GetCount
()
)
if
(
libNicknames
.
size
()
==
m_
l
ibList
->
GetCount
()
)
{
unsigned
ii
;
for
(
ii
=
0
;
ii
<
libNicknames
.
size
();
ii
++
)
{
if
(
libNicknames
[
ii
]
!=
m_
L
ibList
->
GetString
(
ii
)
)
if
(
libNicknames
[
ii
]
!=
m_
l
ibList
->
GetString
(
ii
)
)
break
;
}
...
...
@@ -767,10 +754,10 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event )
DisplayLibInfos
();
ReCreateFootprintList
();
int
id
=
m_
L
ibList
->
FindString
(
m_libraryName
);
int
id
=
m_
l
ibList
->
FindString
(
m_libraryName
);
if
(
id
>=
0
)
m_
L
ibList
->
SetSelection
(
id
);
m_
l
ibList
->
SetSelection
(
id
);
}
...
...
@@ -800,7 +787,7 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint( wxCommandEvent& event )
Zoom_Automatique
(
false
);
m_canvas
->
Refresh
();
Update3D_Frame
();
m_
F
ootprintList
->
SetStringSelection
(
m_footprintName
);
m_
f
ootprintList
->
SetStringSelection
(
m_footprintName
);
}
}
...
...
@@ -817,11 +804,11 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode )
if
(
m_libraryName
.
IsEmpty
()
)
return
;
int
selection
=
m_
F
ootprintList
->
FindString
(
m_footprintName
);
int
selection
=
m_
f
ootprintList
->
FindString
(
m_footprintName
);
if
(
aMode
==
NEXT_PART
)
{
if
(
selection
!=
wxNOT_FOUND
&&
selection
<
(
int
)
m_
F
ootprintList
->
GetCount
()
-
1
)
if
(
selection
!=
wxNOT_FOUND
&&
selection
<
(
int
)
m_
f
ootprintList
->
GetCount
()
-
1
)
selection
++
;
}
...
...
@@ -833,8 +820,8 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode )
if
(
selection
!=
wxNOT_FOUND
)
{
m_
F
ootprintList
->
SetSelection
(
selection
);
m_footprintName
=
m_
F
ootprintList
->
GetString
(
selection
);
m_
f
ootprintList
->
SetSelection
(
selection
);
m_footprintName
=
m_
f
ootprintList
->
GetString
(
selection
);
SetCurItem
(
NULL
);
// Delete the current footprint
...
...
pcbnew/modview_frame.h
View file @
59549109
...
...
@@ -44,16 +44,11 @@ class FP_LIB_TABLE;
class
FOOTPRINT_VIEWER_FRAME
:
public
PCB_BASE_FRAME
{
private
:
// List of libraries (for selection )
wxSashLayoutWindow
*
m_LibListWindow
;
wxListBox
*
m_LibList
;
// The list of libs names
// List of components in the selected library
wxSashLayoutWindow
*
m_FootprintListWindow
;
wxListBox
*
m_FootprintList
;
// The list of footprint names
wxListBox
*
m_libList
;
// The list of libs names
wxListBox
*
m_footprintList
;
// The list of footprint names
// Flags
wxSemaphore
*
m_
Semaphore
;
// != NULL if the frame must emulate
a modal dialog
wxSemaphore
*
m_
semaphore
;
// != NULL if the frame emulates
a modal dialog
wxString
m_configPath
;
// subpath for configuration
protected
:
...
...
pcbnew/tool_modview.cpp
View file @
59549109
...
...
@@ -47,7 +47,9 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar()
if
(
m_mainToolBar
==
NULL
)
{
m_mainToolBar
=
new
wxAuiToolBar
(
this
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxAUI_TB_DEFAULT_STYLE
|
wxAUI_TB_OVERFLOW
);
wxAUI_TB_DEFAULT_STYLE
|
wxAUI_TB_OVERFLOW
);
// Set up toolbar
m_mainToolBar
->
AddTool
(
ID_MODVIEW_SELECT_LIB
,
wxEmptyString
,
...
...
@@ -93,22 +95,14 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar()
m_mainToolBar
->
AddTool
(
ID_ZOOM_PAGE
,
wxEmptyString
,
KiBitmap
(
zoom_fit_in_page_xpm
),
msg
);
if
(
m_Semaphore
)
// Enable this tool only if the library browser is called from
// a "load component" command
if
(
m_semaphore
)
{
// The library browser is called from a "load component" command
m_mainToolBar
->
AddSeparator
();
/*
this ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD control
is broken it does not lead to a fetched footprint on linux, either 3.0 nor 2.8 wx:
and I really don't like the drop down menu here:
whoever broke it, please fix it:
m_mainToolBar
->
AddTool
(
ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD
,
wxEmptyString
,
KiBitmap
(
export_footprint_names_xpm
),
_
(
"Insert footprint in board"
)
);
*/
}
// after adding the buttons to the toolbar, must call Realize() to
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment