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
8421cace
Commit
8421cace
authored
Mar 19, 2013
by
Carl Poirier
Committed by
Wayne Stambaugh
Mar 19, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add library column to component and module select dialog.
parent
7d0ec1a1
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1017 additions
and
860 deletions
+1017
-860
common.cpp
common/common.cpp
+2
-2
dialog_list_selector_base.cpp
common/dialogs/dialog_list_selector_base.cpp
+80
-80
dialog_list_selector_base.fbp
common/dialogs/dialog_list_selector_base.fbp
+659
-642
dialog_list_selector_base.h
common/dialogs/dialog_list_selector_base.h
+66
-66
displlst.cpp
common/displlst.cpp
+63
-38
class_library.cpp
eeschema/class_library.cpp
+34
-8
class_library.h
eeschema/class_library.h
+1
-1
database.cpp
eeschema/database.cpp
+10
-6
selpart.cpp
eeschema/selpart.cpp
+29
-3
dialog_helpers.h
include/dialog_helpers.h
+9
-8
librairi.cpp
pcbnew/librairi.cpp
+13
-1
loadcmp.cpp
pcbnew/loadcmp.cpp
+25
-2
modview.cpp
pcbnew/modview.cpp
+12
-1
netlist.cpp
pcbnew/netlist.cpp
+14
-2
No files found.
common/common.cpp
View file @
8421cace
...
...
@@ -43,7 +43,7 @@
/**
* Global variables definitions.
*
* TODO: All
i
f these variables should be moved into the class were they
* TODO: All
o
f these variables should be moved into the class were they
* are defined and used. Most of them probably belong in the
* application class.
*/
...
...
@@ -115,7 +115,7 @@ StructColors ColorRefs[NBCOLOR] =
* And other problem is a bug when cross compiling under linux:
* a printf print 1,5 and the read functions expects 1.5
* (depending on version print = 1.5 and read = 1,5
* Very annoying and we detect this and use a stupid but necessary workaroun
t
* Very annoying and we detect this and use a stupid but necessary workaroun
d
*/
bool
g_DisableFloatingPointLocalNotation
=
false
;
...
...
common/dialogs/dialog_list_selector_base.cpp
View file @
8421cace
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_list_selector_base.h"
///////////////////////////////////////////////////////////////////////////
EDA_LIST_DIALOG_BASE
::
EDA_LIST_DIALOG_BASE
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
title
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
:
DIALOG_SHIM
(
parent
,
id
,
title
,
pos
,
size
,
style
)
{
this
->
SetSizeHints
(
wxDefaultSize
,
wxDefaultSize
);
wxBoxSizer
*
bSizerMain
;
bSizerMain
=
new
wxBoxSizer
(
wxVERTICAL
);
m_filterLabel
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Filter:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_filterLabel
->
Wrap
(
-
1
);
m_filterLabel
->
SetToolTip
(
_
(
"Enter a string to filter items.
\n
Only names containing this string will be listed"
)
);
bSizerMain
->
Add
(
m_filterLabel
,
0
,
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_filterBox
=
new
wxTextCtrl
(
this
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
bSizerMain
->
Add
(
m_filterBox
,
0
,
wxEXPAND
|
wxBOTTOM
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText2
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Items:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText2
->
Wrap
(
-
1
);
bSizerMain
->
Add
(
m_staticText2
,
0
,
wxRIGHT
|
wxLEFT
,
5
);
m_listBox
=
new
wxList
Box
(
this
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
0
,
NULL
,
0
);
m_listBox
->
SetMinSize
(
wxSize
(
300
,
200
)
);
bSizerMain
->
Add
(
m_listBox
,
1
,
wxBOTTOM
|
wxRIGHT
|
wxLEFT
|
wxEXPAND
,
5
);
m_staticTextMsg
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Messages:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextMsg
->
Wrap
(
-
1
);
bSizerMain
->
Add
(
m_staticTextMsg
,
0
,
wxRIGHT
|
wxLEFT
,
5
);
m_messages
=
new
wxTextCtrl
(
this
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
wxTE_MULTILINE
|
wxTE_READONLY
);
m_messages
->
SetMinSize
(
wxSize
(
-
1
,
80
)
);
bSizerMain
->
Add
(
m_messages
,
0
,
wxEXPAND
|
wxBOTTOM
|
wxRIGHT
|
wxLEFT
,
5
);
m_sdbSizer
=
new
wxStdDialogButtonSizer
();
m_sdbSizerOK
=
new
wxButton
(
this
,
wxID_OK
);
m_sdbSizer
->
AddButton
(
m_sdbSizerOK
);
m_sdbSizerCancel
=
new
wxButton
(
this
,
wxID_CANCEL
);
m_sdbSizer
->
AddButton
(
m_sdbSizerCancel
);
m_sdbSizer
->
Realize
();
bSizerMain
->
Add
(
m_sdbSizer
,
0
,
wxALL
|
wxEXPAND
,
5
);
this
->
SetSizer
(
bSizerMain
);
this
->
Layout
();
this
->
Centre
(
wxBOTH
);
// Connect Events
this
->
Connect
(
wxEVT_CLOSE_WINDOW
,
wxCloseEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClose
)
);
m_filterBox
->
Connect
(
wxEVT_COMMAND_TEXT_UPDATED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
textChangeInFilterBox
),
NULL
,
this
);
m_listBox
->
Connect
(
wxEVT_COMMAND_LIST
BOX_SELECTED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClickOnList
),
NULL
,
this
);
m_listBox
->
Connect
(
wxEVT_COMMAND_LIST
BOX_DOUBLECLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onDClickOnList
),
NULL
,
this
);
m_sdbSizerCancel
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onCancelClick
),
NULL
,
this
);
m_sdbSizerOK
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onOkClick
),
NULL
,
this
);
}
EDA_LIST_DIALOG_BASE
::~
EDA_LIST_DIALOG_BASE
()
{
// Disconnect Events
this
->
Disconnect
(
wxEVT_CLOSE_WINDOW
,
wxCloseEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClose
)
);
m_filterBox
->
Disconnect
(
wxEVT_COMMAND_TEXT_UPDATED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
textChangeInFilterBox
),
NULL
,
this
);
m_listBox
->
Disconnect
(
wxEVT_COMMAND_LIST
BOX_SELECTED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClickOnList
),
NULL
,
this
);
m_listBox
->
Disconnect
(
wxEVT_COMMAND_LIST
BOX_DOUBLECLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onDClickOnList
),
NULL
,
this
);
m_sdbSizerCancel
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onCancelClick
),
NULL
,
this
);
m_sdbSizerOK
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onOkClick
),
NULL
,
this
);
}
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_list_selector_base.h"
///////////////////////////////////////////////////////////////////////////
EDA_LIST_DIALOG_BASE
::
EDA_LIST_DIALOG_BASE
(
wxWindow
*
parent
,
wxWindowID
id
,
const
wxString
&
title
,
const
wxPoint
&
pos
,
const
wxSize
&
size
,
long
style
)
:
DIALOG_SHIM
(
parent
,
id
,
title
,
pos
,
size
,
style
)
{
this
->
SetSizeHints
(
wxDefaultSize
,
wxDefaultSize
);
wxBoxSizer
*
bSizerMain
;
bSizerMain
=
new
wxBoxSizer
(
wxVERTICAL
);
m_filterLabel
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Filter:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_filterLabel
->
Wrap
(
-
1
);
m_filterLabel
->
SetToolTip
(
_
(
"Enter a string to filter items.
\n
Only names containing this string will be listed"
)
);
bSizerMain
->
Add
(
m_filterLabel
,
0
,
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_filterBox
=
new
wxTextCtrl
(
this
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
bSizerMain
->
Add
(
m_filterBox
,
0
,
wxEXPAND
|
wxBOTTOM
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText2
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Items:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText2
->
Wrap
(
-
1
);
bSizerMain
->
Add
(
m_staticText2
,
0
,
wxRIGHT
|
wxLEFT
,
5
);
m_listBox
=
new
wxList
Ctrl
(
this
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxLC_REPORT
|
wxVSCROLL
);
m_listBox
->
SetMinSize
(
wxSize
(
300
,
200
)
);
bSizerMain
->
Add
(
m_listBox
,
1
,
wxBOTTOM
|
wxRIGHT
|
wxLEFT
|
wxEXPAND
,
5
);
m_staticTextMsg
=
new
wxStaticText
(
this
,
wxID_ANY
,
_
(
"Messages:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextMsg
->
Wrap
(
-
1
);
bSizerMain
->
Add
(
m_staticTextMsg
,
0
,
wxRIGHT
|
wxLEFT
,
5
);
m_messages
=
new
wxTextCtrl
(
this
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
wxTE_MULTILINE
|
wxTE_READONLY
);
m_messages
->
SetMinSize
(
wxSize
(
-
1
,
80
)
);
bSizerMain
->
Add
(
m_messages
,
0
,
wxEXPAND
|
wxBOTTOM
|
wxRIGHT
|
wxLEFT
,
5
);
m_sdbSizer
=
new
wxStdDialogButtonSizer
();
m_sdbSizerOK
=
new
wxButton
(
this
,
wxID_OK
);
m_sdbSizer
->
AddButton
(
m_sdbSizerOK
);
m_sdbSizerCancel
=
new
wxButton
(
this
,
wxID_CANCEL
);
m_sdbSizer
->
AddButton
(
m_sdbSizerCancel
);
m_sdbSizer
->
Realize
();
bSizerMain
->
Add
(
m_sdbSizer
,
0
,
wxALL
|
wxEXPAND
,
5
);
this
->
SetSizer
(
bSizerMain
);
this
->
Layout
();
this
->
Centre
(
wxBOTH
);
// Connect Events
this
->
Connect
(
wxEVT_CLOSE_WINDOW
,
wxCloseEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClose
)
);
m_filterBox
->
Connect
(
wxEVT_COMMAND_TEXT_UPDATED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
textChangeInFilterBox
),
NULL
,
this
);
m_listBox
->
Connect
(
wxEVT_COMMAND_LIST
_ITEM_ACTIVATED
,
wxListEventHandler
(
EDA_LIST_DIALOG_BASE
::
onListItemActivated
),
NULL
,
this
);
m_listBox
->
Connect
(
wxEVT_COMMAND_LIST
_ITEM_SELECTED
,
wxListEventHandler
(
EDA_LIST_DIALOG_BASE
::
onListItemSelected
),
NULL
,
this
);
m_sdbSizerCancel
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onCancelClick
),
NULL
,
this
);
m_sdbSizerOK
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onOkClick
),
NULL
,
this
);
}
EDA_LIST_DIALOG_BASE
::~
EDA_LIST_DIALOG_BASE
()
{
// Disconnect Events
this
->
Disconnect
(
wxEVT_CLOSE_WINDOW
,
wxCloseEventHandler
(
EDA_LIST_DIALOG_BASE
::
onClose
)
);
m_filterBox
->
Disconnect
(
wxEVT_COMMAND_TEXT_UPDATED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
textChangeInFilterBox
),
NULL
,
this
);
m_listBox
->
Disconnect
(
wxEVT_COMMAND_LIST
_ITEM_ACTIVATED
,
wxListEventHandler
(
EDA_LIST_DIALOG_BASE
::
onListItemActivated
),
NULL
,
this
);
m_listBox
->
Disconnect
(
wxEVT_COMMAND_LIST
_ITEM_SELECTED
,
wxListEventHandler
(
EDA_LIST_DIALOG_BASE
::
onListItemSelected
),
NULL
,
this
);
m_sdbSizerCancel
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onCancelClick
),
NULL
,
this
);
m_sdbSizerOK
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
EDA_LIST_DIALOG_BASE
::
onOkClick
),
NULL
,
this
);
}
common/dialogs/dialog_list_selector_base.fbp
View file @
8421cace
This diff is collapsed.
Click to expand it.
common/dialogs/dialog_list_selector_base.h
View file @
8421cace
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __DIALOG_LIST_SELECTOR_BASE_H__
#define __DIALOG_LIST_SELECTOR_BASE_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class
DIALOG_SHIM
;
#include "dialog_shim.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/list
box.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class EDA_LIST_DIALOG_BASE
///////////////////////////////////////////////////////////////////////////////
class
EDA_LIST_DIALOG_BASE
:
public
DIALOG_SHIM
{
private
:
protected
:
wxStaticText
*
m_filterLabel
;
wxTextCtrl
*
m_filterBox
;
wxStaticText
*
m_staticText2
;
wxList
Box
*
m_listBox
;
wxStaticText
*
m_staticTextMsg
;
wxTextCtrl
*
m_messages
;
wxStdDialogButtonSizer
*
m_sdbSizer
;
wxButton
*
m_sdbSizerOK
;
wxButton
*
m_sdbSizerCancel
;
// Virtual event handlers, overide them in your derived class
virtual
void
onClose
(
wxCloseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
textChangeInFilterBox
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
on
ClickOnList
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
on
DClickOnList
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onCancelClick
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onOkClick
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
public
:
EDA_LIST_DIALOG_BASE
(
wxWindow
*
parent
,
wxWindowID
id
=
wxID_ANY
,
const
wxString
&
title
=
wxEmptyString
,
const
wxPoint
&
pos
=
wxDefaultPosition
,
const
wxSize
&
size
=
wxSize
(
329
,
398
),
long
style
=
wxDEFAULT_DIALOG_STYLE
|
wxRESIZE_BORDER
);
~
EDA_LIST_DIALOG_BASE
();
};
#endif //__DIALOG_LIST_SELECTOR_BASE_H__
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __DIALOG_LIST_SELECTOR_BASE_H__
#define __DIALOG_LIST_SELECTOR_BASE_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class
DIALOG_SHIM
;
#include "dialog_shim.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/list
ctrl.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class EDA_LIST_DIALOG_BASE
///////////////////////////////////////////////////////////////////////////////
class
EDA_LIST_DIALOG_BASE
:
public
DIALOG_SHIM
{
private
:
protected
:
wxStaticText
*
m_filterLabel
;
wxTextCtrl
*
m_filterBox
;
wxStaticText
*
m_staticText2
;
wxList
Ctrl
*
m_listBox
;
wxStaticText
*
m_staticTextMsg
;
wxTextCtrl
*
m_messages
;
wxStdDialogButtonSizer
*
m_sdbSizer
;
wxButton
*
m_sdbSizerOK
;
wxButton
*
m_sdbSizerCancel
;
// Virtual event handlers, overide them in your derived class
virtual
void
onClose
(
wxCloseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
textChangeInFilterBox
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
on
ListItemActivated
(
wxListEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
on
ListItemSelected
(
wxListEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onCancelClick
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onOkClick
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
public
:
EDA_LIST_DIALOG_BASE
(
wxWindow
*
parent
,
wxWindowID
id
=
wxID_ANY
,
const
wxString
&
title
=
wxEmptyString
,
const
wxPoint
&
pos
=
wxDefaultPosition
,
const
wxSize
&
size
=
wxSize
(
329
,
398
),
long
style
=
wxDEFAULT_DIALOG_STYLE
|
wxRESIZE_BORDER
);
~
EDA_LIST_DIALOG_BASE
();
};
#endif //__DIALOG_LIST_SELECTOR_BASE_H__
common/displlst.cpp
View file @
8421cace
...
...
@@ -7,35 +7,46 @@
#include <kicad_string.h>
#include <dialog_helpers.h>
EDA_LIST_DIALOG
::
EDA_LIST_DIALOG
(
EDA_DRAW_FRAME
*
aParent
,
const
wxString
&
aTitle
,
const
wxArrayString
&
aItemList
,
const
wxString
&
aRefText
,
void
(
*
aCallBackFunction
)(
wxString
&
Text
),
const
wxArrayString
&
aItemHeaders
,
const
std
::
vector
<
wxArrayString
>&
aItemList
,
const
wxString
&
aRefText
,
void
(
*
aCallBackFunction
)(
wxString
&
Text
),
bool
aSortList
)
:
EDA_LIST_DIALOG_BASE
(
aParent
,
wxID_ANY
,
aTitle
)
{
m_sortList
=
aSortList
;
m_sortList
=
aSortList
;
m_callBackFct
=
aCallBackFunction
;
m_itemsListCp
=
&
aItemList
;
for
(
unsigned
i
=
0
;
i
<
aItemHeaders
.
Count
();
i
++
)
{
wxListItem
column
;
column
.
SetId
(
i
);
column
.
SetText
(
aItemHeaders
.
Item
(
i
)
);
column
.
SetWidth
(
300
/
aItemHeaders
.
Count
()
);
EDA_LIST_DIALOG_BASE
::
m_listBox
->
InsertColumn
(
i
,
column
);
}
InsertItems
(
aItemList
,
0
);
if
(
m_sortList
)
sortList
();
if
(
!
aRefText
.
IsEmpty
()
)
// try to select the item matching aRefText
{
for
(
unsigned
ii
=
0
;
ii
<
aItemList
.
GetCount
();
ii
++
)
if
(
aItemList
[
ii
]
==
aRefText
)
for
(
unsigned
ii
=
0
;
ii
<
aItemList
.
size
();
ii
++
)
if
(
aItemList
[
ii
]
[
0
]
==
aRefText
)
{
m_listBox
->
Set
Selection
(
ii
);
m_listBox
->
Set
ItemState
(
ii
,
wxLIST_STATE_SELECTED
,
wxLIST_STATE_SELECTED
);
break
;
}
}
if
(
m_callBackFct
==
NULL
)
{
m_messages
->
Show
(
false
);
m_staticTextMsg
->
Show
(
false
);
m_messages
->
Show
(
false
);
m_staticTextMsg
->
Show
(
false
);
}
m_filterBox
->
SetFocus
();
...
...
@@ -56,17 +67,17 @@ void EDA_LIST_DIALOG::textChangeInFilterBox( wxCommandEvent& event )
wxString
filter
;
wxString
itemName
;
filter
=
wxT
(
"*"
)
+
m_filterBox
->
GetLineText
(
0
).
MakeLower
()
+
wxT
(
"*"
);
filter
=
wxT
(
"*"
)
+
m_filterBox
->
GetLineText
(
0
).
MakeLower
()
+
wxT
(
"*"
);
m_listBox
->
Clear
();
m_listBox
->
DeleteAllItems
();
for
(
unsigned
i
=
0
;
i
<
m_itemsListCp
->
GetCount
();
i
++
)
for
(
unsigned
i
=
0
;
i
<
m_itemsListCp
->
size
();
i
++
)
{
itemName
=
m_itemsListCp
->
Item
(
i
);
itemName
=
(
*
m_itemsListCp
)[
i
].
Item
(
0
);
if
(
itemName
.
MakeLower
().
Matches
(
filter
)
)
if
(
itemName
.
MakeLower
().
Matches
(
filter
)
)
{
m_listBox
->
Insert
(
m_itemsListCp
->
Item
(
i
),
m_listBox
->
GetCount
()
);
Append
(
(
*
m_itemsListCp
)[
i
]
);
}
}
...
...
@@ -76,20 +87,40 @@ void EDA_LIST_DIALOG::textChangeInFilterBox( wxCommandEvent& event )
wxString
EDA_LIST_DIALOG
::
GetTextSelection
()
{
wxString
text
=
m_listBox
->
GetStringSelection
();
long
item
=
-
1
;
item
=
m_listBox
->
GetNextItem
(
item
,
wxLIST_NEXT_ALL
,
wxLIST_STATE_SELECTED
);
wxString
text
=
m_listBox
->
GetItemText
(
item
);
return
text
;
}
void
EDA_LIST_DIALOG
::
Append
(
const
wx
String
&
item
)
void
EDA_LIST_DIALOG
::
Append
(
const
wx
ArrayString
&
itemList
)
{
m_listBox
->
Append
(
item
);
}
long
itemIndex
=
m_listBox
->
InsertItem
(
m_listBox
->
GetItemCount
(),
itemList
[
0
]
);
m_listBox
->
SetItemData
(
itemIndex
,
(
long
)
&
(
itemList
[
0
])
);
// Adding the next columns content
for
(
unsigned
i
=
1
;
i
<
itemList
.
size
();
i
++
)
{
m_listBox
->
SetItem
(
itemIndex
,
i
,
itemList
[
i
]
);
}
}
void
EDA_LIST_DIALOG
::
InsertItems
(
const
wxArrayString
&
itemlist
,
int
position
)
void
EDA_LIST_DIALOG
::
InsertItems
(
const
std
::
vector
<
wxArrayString
>&
itemList
,
int
position
)
{
m_listBox
->
InsertItems
(
itemlist
,
position
);
for
(
unsigned
i
=
0
;
i
<
itemList
.
size
();
i
++
)
{
long
itemIndex
=
m_listBox
->
InsertItem
(
position
+
i
,
itemList
[
i
].
Item
(
0
)
);
m_listBox
->
SetItemData
(
itemIndex
,
(
long
)
&
(
itemList
[
i
].
Item
(
0
)
)
);
// Adding the next columns content
for
(
unsigned
j
=
1
;
j
<
itemList
[
i
].
GetCount
();
j
++
)
{
m_listBox
->
SetItem
(
itemIndex
,
j
,
itemList
[
i
].
Item
(
j
)
);
}
}
if
(
m_sortList
)
sortList
();
...
...
@@ -102,21 +133,20 @@ void EDA_LIST_DIALOG::onCancelClick( wxCommandEvent& event )
}
void
EDA_LIST_DIALOG
::
on
ClickOnList
(
wxCommand
Event
&
event
)
void
EDA_LIST_DIALOG
::
on
ListItemSelected
(
wxList
Event
&
event
)
{
wxString
text
;
if
(
m_callBackFct
)
{
m_messages
->
Clear
();
text
=
m_listBox
->
GetString
Selection
();
wxString
text
=
GetText
Selection
();
m_callBackFct
(
text
);
m_messages
->
WriteText
(
text
);
}
}
void
EDA_LIST_DIALOG
::
on
DClickOnList
(
wxCommand
Event
&
event
)
void
EDA_LIST_DIALOG
::
on
ListItemActivated
(
wxList
Event
&
event
)
{
EndModal
(
wxID_OK
);
}
...
...
@@ -136,20 +166,15 @@ void EDA_LIST_DIALOG::onClose( wxCloseEvent& event )
/* Sort alphabetically, case insensitive.
*/
static
int
sortItems
(
const
wxString
&
item1
,
const
wxString
&
item2
)
{
return
StrNumCmp
(
item1
,
item2
,
INT_MAX
,
true
);
static
int
wxCALLBACK
MyCompareFunction
(
long
aItem1
,
long
aItem2
,
long
aSortData
)
{
wxString
*
component1Name
=
(
wxString
*
)
aItem1
;
wxString
*
component2Name
=
(
wxString
*
)
aItem2
;
return
StrNumCmp
(
*
component1Name
,
*
component2Name
,
INT_MAX
,
true
);
}
void
EDA_LIST_DIALOG
::
sortList
()
{
wxArrayString
list
=
m_listBox
->
GetStrings
();
if
(
list
.
IsEmpty
()
)
return
;
list
.
Sort
(
sortItems
);
m_listBox
->
Clear
();
m_listBox
->
Append
(
list
);
m_listBox
->
SortItems
(
MyCompareFunction
,
0
);
}
eeschema/class_library.cpp
View file @
8421cace
...
...
@@ -143,25 +143,50 @@ void CMP_LIBRARY::GetEntryNames( wxArrayString& aNames, bool aSort, bool aMakeUp
}
void
CMP_LIBRARY
::
SearchEntryNames
(
wxArrayString
&
aNames
,
/**
* Function sortFunction
* simple function used as comparator to sort a std::vector<wxArrayString>&.
*
* @param aItem1 is the first comparison parameter.
* @param aItem1 is the second.
* @return bool - which item should be put first in the sorted list.
*/
bool
sortFunction
(
wxArrayString
aItem1
,
wxArrayString
aItem2
)
{
return
(
aItem1
.
Item
(
0
)
<
aItem2
.
Item
(
0
)
);
}
void
CMP_LIBRARY
::
SearchEntryNames
(
std
::
vector
<
wxArrayString
>&
aNames
,
const
wxString
&
aNameSearch
,
const
wxString
&
aKeySearch
,
bool
aSort
)
{
LIB_ALIAS_MAP
::
iterator
it
;
for
(
it
=
aliases
.
begin
();
it
!=
aliases
.
end
();
it
++
)
for
(
it
=
aliases
.
begin
();
it
!=
aliases
.
end
();
it
++
)
{
if
(
!
aKeySearch
.
IsEmpty
()
&&
KeyWordOk
(
aKeySearch
,
(
*
it
).
second
->
GetKeyWords
()
)
)
aNames
.
Add
(
(
*
it
).
first
);
{
wxArrayString
item
;
item
.
Add
(
(
*
it
).
first
);
item
.
Add
(
GetLogicalName
()
);
aNames
.
push_back
(
item
);
}
if
(
!
aNameSearch
.
IsEmpty
()
&&
WildCompareString
(
aNameSearch
,
(
*
it
).
second
->
GetName
(),
false
)
)
aNames
.
Add
(
(
*
it
).
first
);
{
wxArrayString
item
;
item
.
Add
(
(
*
it
).
first
);
item
.
Add
(
GetLogicalName
()
);
aNames
.
push_back
(
item
);
}
}
if
(
aSort
)
aNames
.
Sort
(
);
std
::
sort
(
aNames
.
begin
(),
aNames
.
end
(),
sortFunction
);
}
...
...
@@ -172,7 +197,7 @@ void CMP_LIBRARY::SearchEntryNames( wxArrayString& aNames, const wxRegEx& aRe, b
LIB_ALIAS_MAP
::
iterator
it
;
for
(
it
=
aliases
.
begin
();
it
!=
aliases
.
end
();
it
++
)
for
(
it
=
aliases
.
begin
();
it
!=
aliases
.
end
();
it
++
)
{
if
(
aRe
.
Matches
(
(
*
it
).
second
->
GetKeyWords
()
)
)
aNames
.
Add
(
(
*
it
).
first
);
...
...
@@ -824,7 +849,7 @@ void CMP_LIBRARY::RemoveLibrary( const wxString& aName )
CMP_LIBRARY_LIST
::
iterator
i
;
for
(
i
=
libraryList
.
begin
();
i
<
libraryList
.
end
();
i
++
)
for
(
i
=
libraryList
.
begin
();
i
<
libraryList
.
end
();
i
++
)
{
if
(
i
->
GetName
().
CmpNoCase
(
aName
)
==
0
)
{
...
...
@@ -846,6 +871,7 @@ bool CMP_LIBRARY::LibraryExists( const CMP_LIBRARY* aLibptr )
return
false
;
}
CMP_LIBRARY
*
CMP_LIBRARY
::
FindLibrary
(
const
wxString
&
aName
)
{
BOOST_FOREACH
(
CMP_LIBRARY
&
lib
,
libraryList
)
...
...
@@ -925,7 +951,7 @@ void CMP_LIBRARY::RemoveCacheLibrary()
{
CMP_LIBRARY_LIST
::
iterator
i
;
for
(
i
=
libraryList
.
begin
();
i
<
libraryList
.
end
();
i
++
)
for
(
i
=
libraryList
.
begin
();
i
<
libraryList
.
end
();
i
++
)
{
if
(
i
->
isCache
)
libraryList
.
erase
(
i
--
);
...
...
eeschema/class_library.h
View file @
8421cace
...
...
@@ -212,7 +212,7 @@ public:
* @param aKeySearch - Key word search criteria.
* @param aSort - Sort names if true.
*/
void
SearchEntryNames
(
wxArrayString
&
aNames
,
void
SearchEntryNames
(
std
::
vector
<
wxArrayString
>
&
aNames
,
const
wxString
&
aNameSearch
=
wxEmptyString
,
const
wxString
&
aKeySearch
=
wxEmptyString
,
bool
aSort
=
true
);
...
...
eeschema/database.cpp
View file @
8421cace
...
...
@@ -32,15 +32,15 @@ void DisplayCmpDocAndKeywords( wxString& Name )
}
/*
* Displays a list of filterd components found in libraries for selection,
* Displays a list of filter
e
d components found in libraries for selection,
* Keys is a list of keywords to filter components which do not match these keywords
* If Keys is empty, list components that match BufName mask (with * and?)
*
* Returns the name of the selected component, or an
a
mpty string
* Returns the name of the selected component, or an
e
mpty string
*/
wxString
DataBaseGetName
(
EDA_DRAW_FRAME
*
frame
,
wxString
&
Keys
,
wxString
&
BufName
)
{
wxArrayString
nameList
;
std
::
vector
<
wxArrayString
>
nameList
;
wxString
msg
;
#ifndef KICAD_KEEPCASE
...
...
@@ -54,7 +54,7 @@ wxString DataBaseGetName( EDA_DRAW_FRAME* frame, wxString& Keys, wxString& BufNa
lib
.
SearchEntryNames
(
nameList
,
BufName
,
Keys
);
}
if
(
nameList
.
IsE
mpty
()
)
if
(
nameList
.
e
mpty
()
)
{
msg
=
_
(
"No components found matching "
);
...
...
@@ -74,10 +74,14 @@ wxString DataBaseGetName( EDA_DRAW_FRAME* frame, wxString& Keys, wxString& BufNa
return
wxEmptyString
;
}
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Component"
)
);
headers
.
Add
(
wxT
(
"Library"
)
);
// Show candidate list:
wxString
cmpname
;
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Component"
),
nameList
,
cmpname
,
DisplayCmpDocAndKeywords
);
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Component"
),
headers
,
nameList
,
cmpname
,
DisplayCmpDocAndKeywords
,
true
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
wxEmptyString
;
...
...
eeschema/selpart.cpp
View file @
8421cace
...
...
@@ -26,9 +26,20 @@ CMP_LIBRARY* SelectLibraryFromList( EDA_DRAW_FRAME* frame )
return
NULL
;
}
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Library"
)
);
libNamesList
=
CMP_LIBRARY
::
GetLibraryNames
();
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Library"
),
libNamesList
,
OldLibName
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
libNamesList
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
libNamesList
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Library"
),
headers
,
itemsToDisplay
,
OldLibName
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
NULL
;
...
...
@@ -62,7 +73,21 @@ int DisplayComponentsNamesInLib( EDA_DRAW_FRAME* frame,
Library
->
GetEntryNames
(
nameList
);
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Component"
),
nameList
,
OldName
,
DisplayCmpDocAndKeywords
);
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Component"
)
);
headers
.
Add
(
wxT
(
"Library"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
nameList
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
nameList
[
i
]
);
item
.
Add
(
Library
->
GetLogicalName
()
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
frame
,
_
(
"Select Component"
),
headers
,
itemsToDisplay
,
OldName
,
DisplayCmpDocAndKeywords
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
0
;
...
...
@@ -79,6 +104,7 @@ int GetNameOfPartToLoad( EDA_DRAW_FRAME* frame, CMP_LIBRARY* Library, wxString&
static
wxString
OldCmpName
;
ii
=
DisplayComponentsNamesInLib
(
frame
,
Library
,
BufName
,
OldCmpName
);
if
(
ii
<=
0
||
BufName
.
IsEmpty
()
)
return
0
;
...
...
include/dialog_helpers.h
View file @
8421cace
...
...
@@ -31,7 +31,7 @@ class EDA_LIST_DIALOG : public EDA_LIST_DIALOG_BASE
private
:
bool
m_sortList
;
void
(
*
m_callBackFct
)(
wxString
&
Text
);
const
wxArrayString
*
m_itemsListCp
;
const
std
::
vector
<
wxArrayString
>
*
m_itemsListCp
;
public
:
/**
...
...
@@ -44,23 +44,24 @@ public:
* @param aSortList = true to sort list items by alphabetic order.
*/
EDA_LIST_DIALOG
(
EDA_DRAW_FRAME
*
aParent
,
const
wxString
&
aTitle
,
const
wxArrayString
&
aItemList
,
const
wxString
&
aRefText
,
void
(
*
aCallBackFunction
)(
wxString
&
Text
)
=
NULL
,
const
wxArrayString
&
aItemHeaders
,
const
std
::
vector
<
wxArrayString
>&
aItemList
,
const
wxString
&
aRefText
,
void
(
*
aCallBackFunction
)(
wxString
&
Text
)
=
NULL
,
bool
aSortList
=
false
);
~
EDA_LIST_DIALOG
();
void
Append
(
const
wxString
&
aItemStr
);
void
InsertItems
(
const
wxArrayString
&
aItemList
,
int
aPosition
=
0
);
void
Append
(
const
wx
Array
String
&
aItemStr
);
void
InsertItems
(
const
std
::
vector
<
wxArrayString
>
&
aItemList
,
int
aPosition
=
0
);
wxString
GetTextSelection
();
private
:
void
onClose
(
wxCloseEvent
&
event
);
void
onCancelClick
(
wxCommandEvent
&
event
);
void
onOkClick
(
wxCommandEvent
&
event
);
void
on
ClickOnList
(
wxCommand
Event
&
event
);
void
on
DClickOnList
(
wxCommand
Event
&
event
);
void
on
ListItemSelected
(
wxList
Event
&
event
);
void
on
ListItemActivated
(
wxList
Event
&
event
);
void
textChangeInFilterBox
(
wxCommandEvent
&
event
);
void
sortList
();
};
...
...
pcbnew/librairi.cpp
View file @
8421cace
...
...
@@ -751,7 +751,19 @@ void FOOTPRINT_EDIT_FRAME::Select_Active_Library()
if
(
g_LibraryNames
.
GetCount
()
==
0
)
return
;
EDA_LIST_DIALOG
dlg
(
this
,
FMT_SELECT_LIB
,
g_LibraryNames
,
getLibNickName
()
);
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Library"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
g_LibraryNames
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
g_LibraryNames
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
this
,
FMT_SELECT_LIB
,
headers
,
itemsToDisplay
,
getLibNickName
()
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
;
...
...
pcbnew/loadcmp.cpp
View file @
8421cace
...
...
@@ -438,8 +438,20 @@ wxString PCB_BASE_FRAME::Select_1_Module_From_List( EDA_DRAW_FRAME* aWindow,
if
(
footprint_names_list
.
GetCount
()
)
{
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Module"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
footprint_names_list
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
footprint_names_list
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
msg
.
Printf
(
_
(
"Modules [%d items]"
),
(
int
)
footprint_names_list
.
GetCount
()
);
EDA_LIST_DIALOG
dlg
(
aWindow
,
msg
,
footprint_names_list
,
OldName
,
EDA_LIST_DIALOG
dlg
(
aWindow
,
msg
,
headers
,
itemsToDisplay
,
OldName
,
DisplayCmpDoc
);
if
(
dlg
.
ShowModal
()
==
wxID_OK
)
...
...
@@ -497,7 +509,18 @@ MODULE* FOOTPRINT_EDIT_FRAME::Select_1_Module_From_BOARD( BOARD* aPcb )
msg
.
Printf
(
_
(
"Modules [%d items]"
),
listnames
.
GetCount
()
);
EDA_LIST_DIALOG
dlg
(
this
,
msg
,
listnames
,
wxEmptyString
,
NULL
,
SORT_LIST
);
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Module"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
listnames
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
listnames
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
this
,
msg
,
headers
,
itemsToDisplay
,
wxEmptyString
,
NULL
,
SORT_LIST
);
if
(
dlg
.
ShowModal
()
==
wxID_OK
)
CmpName
=
dlg
.
GetTextSelection
();
...
...
pcbnew/modview.cpp
View file @
8421cace
...
...
@@ -84,8 +84,19 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event )
if
(
g_LibraryNames
.
GetCount
()
==
0
)
return
;
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Library"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
g_LibraryNames
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
g_LibraryNames
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
this
,
_
(
"Select Current Library:"
),
g_LibraryNames
,
m_libraryName
);
headers
,
itemsToDisplay
,
m_libraryName
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
;
...
...
pcbnew/netlist.cpp
View file @
8421cace
...
...
@@ -142,7 +142,7 @@ bool PCB_EDIT_FRAME::ReadPcbNetlist( const wxString& aNetlistFullFilename,
GetChars
(
aCmpFullFileName
)
);
aMessageWindow
->
AppendText
(
msg
+
wxT
(
"
\n
"
)
);
}
}
}
// Clear undo and redo lists to avoid inconsistencies between lists
GetScreen
()
->
ClearUndoRedoList
();
...
...
@@ -165,6 +165,7 @@ bool PCB_EDIT_FRAME::ReadPcbNetlist( const wxString& aNetlistFullFilename,
netList_Reader
.
ReadLibpartSectionSetOpt
(
false
);
bool
success
=
netList_Reader
.
ReadNetList
(
netfile
);
if
(
!
success
)
{
wxMessageBox
(
_
(
"Netlist read error"
)
);
...
...
@@ -217,7 +218,18 @@ MODULE* PCB_EDIT_FRAME::ListAndSelectModuleName( void )
for
(
;
Module
!=
NULL
;
Module
=
(
MODULE
*
)
Module
->
Next
()
)
listnames
.
Add
(
Module
->
GetReference
()
);
EDA_LIST_DIALOG
dlg
(
this
,
_
(
"Components"
),
listnames
,
wxEmptyString
);
wxArrayString
headers
;
headers
.
Add
(
wxT
(
"Module"
)
);
std
::
vector
<
wxArrayString
>
itemsToDisplay
;
// Conversion from wxArrayString to vector of ArrayString
for
(
unsigned
i
=
0
;
i
<
listnames
.
GetCount
();
i
++
)
{
wxArrayString
item
;
item
.
Add
(
listnames
[
i
]
);
itemsToDisplay
.
push_back
(
item
);
}
EDA_LIST_DIALOG
dlg
(
this
,
_
(
"Components"
),
headers
,
itemsToDisplay
,
wxEmptyString
);
if
(
dlg
.
ShowModal
()
!=
wxID_OK
)
return
NULL
;
...
...
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