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
f477464f
Commit
f477464f
authored
Dec 09, 2012
by
Dick Hollenbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
embellish fp_lib_table editor with beginnings of cut, copy, paste
parent
9a806749
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
237 additions
and
45 deletions
+237
-45
fp_lib_table.cpp
common/fp_lib_table.cpp
+7
-7
dialog_fp_lib_table.cpp
pcbnew/dialogs/dialog_fp_lib_table.cpp
+198
-26
dialog_fp_lib_table_base.cpp
pcbnew/dialogs/dialog_fp_lib_table_base.cpp
+18
-2
dialog_fp_lib_table_base.fbp
pcbnew/dialogs/dialog_fp_lib_table_base.fbp
+10
-10
dialog_fp_lib_table_base.h
pcbnew/dialogs/dialog_fp_lib_table_base.h
+4
-0
No files found.
common/fp_lib_table.cpp
View file @
f477464f
...
@@ -59,7 +59,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
...
@@ -59,7 +59,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
T
tok
;
T
tok
;
// This table may be nested within a larger s-expression, or not.
// This table may be nested within a larger s-expression, or not.
// Allow for parser of that optional
outter
s-epression to have looked ahead.
// Allow for parser of that optional
containing
s-epression to have looked ahead.
if
(
in
->
CurTok
()
!=
T_fp_lib_table
)
if
(
in
->
CurTok
()
!=
T_fp_lib_table
)
{
{
in
->
NeedLEFT
();
in
->
NeedLEFT
();
...
@@ -84,7 +84,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
...
@@ -84,7 +84,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
if
(
(
tok
=
in
->
NextTok
()
)
!=
T_lib
)
if
(
(
tok
=
in
->
NextTok
()
)
!=
T_lib
)
in
->
Expecting
(
T_lib
);
in
->
Expecting
(
T_lib
);
// (name
LOGICAL_
NAME)
// (name
NICK
NAME)
in
->
NeedLEFT
();
in
->
NeedLEFT
();
if
(
(
tok
=
in
->
NextTok
()
)
!=
T_name
)
if
(
(
tok
=
in
->
NextTok
()
)
!=
T_name
)
...
@@ -97,7 +97,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
...
@@ -97,7 +97,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
in
->
NeedRIGHT
();
in
->
NeedRIGHT
();
// After (name), remaining (lib) elements are order independent, and in
// After (name), remaining (lib) elements are order independent, and in
//
the future, perhaps optional. Flexibility for future changes
.
//
some cases optional
.
bool
sawType
=
false
;
bool
sawType
=
false
;
bool
sawOpts
=
false
;
bool
sawOpts
=
false
;
...
@@ -191,12 +191,12 @@ void FP_LIB_TABLE::Format( OUTPUTFORMATTER* out, int nestLevel ) const
...
@@ -191,12 +191,12 @@ void FP_LIB_TABLE::Format( OUTPUTFORMATTER* out, int nestLevel ) const
void
FP_LIB_TABLE
::
ROW
::
Format
(
OUTPUTFORMATTER
*
out
,
int
nestLevel
)
const
void
FP_LIB_TABLE
::
ROW
::
Format
(
OUTPUTFORMATTER
*
out
,
int
nestLevel
)
const
throw
(
IO_ERROR
)
throw
(
IO_ERROR
)
{
{
out
->
Print
(
nestLevel
,
"(lib (name %s)(
descr %s)(uri %s)(type %s)(options
%s))
\n
"
,
out
->
Print
(
nestLevel
,
"(lib (name %s)(
type %s)(uri %s)(options %s)(descr
%s))
\n
"
,
out
->
Quotew
(
GetNickName
()
).
c_str
(),
out
->
Quotew
(
GetNickName
()
).
c_str
(),
out
->
Quotew
(
GetDescr
()
).
c_str
(),
out
->
Quotew
(
GetFullURI
()
).
c_str
(),
out
->
Quotew
(
GetType
()
).
c_str
(),
out
->
Quotew
(
GetType
()
).
c_str
(),
out
->
Quotew
(
GetOptions
()
).
c_str
()
out
->
Quotew
(
GetFullURI
()
).
c_str
(),
out
->
Quotew
(
GetOptions
()
).
c_str
(),
out
->
Quotew
(
GetDescr
()
).
c_str
()
);
);
}
}
...
...
pcbnew/dialogs/dialog_fp_lib_table.cpp
View file @
f477464f
...
@@ -28,7 +28,8 @@
...
@@ -28,7 +28,8 @@
#include <dialog_fp_lib_table_base.h>
#include <dialog_fp_lib_table_base.h>
#include <fp_lib_table.h>
#include <fp_lib_table.h>
#include <wx/grid.h>
#include <wx/grid.h>
#include <wx/clipbrd.h>
#include <wx/tokenzr.h>
/**
/**
* Class FP_TBL_MODEL
* Class FP_TBL_MODEL
...
@@ -39,6 +40,16 @@ class FP_TBL_MODEL : public wxGridTableBase, public FP_LIB_TABLE
...
@@ -39,6 +40,16 @@ class FP_TBL_MODEL : public wxGridTableBase, public FP_LIB_TABLE
{
{
public
:
public
:
enum
COL_ORDER
// grid column order, established here by this sequence
{
COL_NICKNAME
,
COL_URI
,
COL_TYPE
,
COL_OPTIONS
,
COL_DESCR
,
COL_COUNT
// keep as last
};
/**
/**
* Constructor FP_TBL_MODEL
* Constructor FP_TBL_MODEL
* is a copy constructor that builds a wxGridTableBase (table model) by wrapping
* is a copy constructor that builds a wxGridTableBase (table model) by wrapping
...
@@ -52,7 +63,7 @@ public:
...
@@ -52,7 +63,7 @@ public:
//-----<wxGridTableBase overloads>-------------------------------------------
//-----<wxGridTableBase overloads>-------------------------------------------
int
GetNumberRows
()
{
return
rows
.
size
();
}
int
GetNumberRows
()
{
return
rows
.
size
();
}
int
GetNumberCols
()
{
return
4
;
}
int
GetNumberCols
()
{
return
COL_COUNT
;
}
wxString
GetValue
(
int
aRow
,
int
aCol
)
wxString
GetValue
(
int
aRow
,
int
aCol
)
{
{
...
@@ -62,10 +73,11 @@ public:
...
@@ -62,10 +73,11 @@ public:
switch
(
aCol
)
switch
(
aCol
)
{
{
case
0
:
return
r
.
GetNickName
();
case
COL_NICKNAME
:
return
r
.
GetNickName
();
case
1
:
return
r
.
GetFullURI
();
case
COL_URI
:
return
r
.
GetFullURI
();
case
2
:
return
r
.
GetType
();
case
COL_TYPE
:
return
r
.
GetType
();
case
3
:
return
r
.
GetOptions
();
case
COL_OPTIONS
:
return
r
.
GetOptions
();
case
COL_DESCR
:
return
r
.
GetDescr
();
default
:
default
:
;
// fall thru to wxEmptyString
;
// fall thru to wxEmptyString
}
}
...
@@ -82,10 +94,11 @@ public:
...
@@ -82,10 +94,11 @@ public:
switch
(
aCol
)
switch
(
aCol
)
{
{
case
0
:
r
.
SetNickName
(
aValue
);
break
;
case
COL_NICKNAME
:
r
.
SetNickName
(
aValue
);
break
;
case
1
:
r
.
SetFullURI
(
aValue
);
break
;
case
COL_URI
:
r
.
SetFullURI
(
aValue
);
break
;
case
2
:
r
.
SetType
(
aValue
);
break
;
case
COL_TYPE
:
r
.
SetType
(
aValue
);
break
;
case
3
:
r
.
SetOptions
(
aValue
);
break
;
case
COL_OPTIONS
:
r
.
SetOptions
(
aValue
);
break
;
case
COL_DESCR
:
r
.
SetDescr
(
aValue
);
break
;
}
}
}
}
}
}
...
@@ -169,19 +182,24 @@ public:
...
@@ -169,19 +182,24 @@ public:
{
{
switch
(
aCol
)
switch
(
aCol
)
{
{
case
0
:
return
_
(
"Nickname"
);
case
COL_NICKNAME
:
return
_
(
"Nickname"
);
case
1
:
return
_
(
"Library Path"
);
case
COL_URI
:
return
_
(
"Library Path"
);
case
2
:
return
_
(
"Plugin"
);
case
COL_TYPE
:
return
_
(
"Plugin"
);
case
3
:
return
_
(
"Options"
);
case
COL_OPTIONS
:
return
_
(
"Options"
);
case
COL_DESCR
:
return
_
(
"Description"
);
default
:
return
wxEmptyString
;
default
:
return
wxEmptyString
;
}
}
}
}
//-----</wxGridTableBase overloads>------------------------------------------
//-----</wxGridTableBase overloads>------------------------------------------
};
};
// It works for table data on clipboard for an excell spreadsheet,
// why not us too for now.
#define COL_SEP wxT( '\t' )
#define ROW_SEP wxT( '\n' )
/**
/**
* Class DIALOG_FP_LIB_TABLE
* Class DIALOG_FP_LIB_TABLE
...
@@ -192,19 +210,31 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
...
@@ -192,19 +210,31 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
{
{
typedef
FP_LIB_TABLE
::
ROW
ROW
;
typedef
FP_LIB_TABLE
::
ROW
ROW
;
/* row & col "selection" acquisition, not currently used but works.
enum
{
ID_CUT
,
// = wxID_HIGHEST + 1,
ID_COPY
,
ID_PASTE
,
};
// row & col "selection" acquisition
// selected area by cell coordinate and count
// selected area by cell coordinate and count
int
selRowStart
;
int
selRowStart
;
int
selColStart
;
int
selColStart
;
int
selRowCount
;
int
selRowCount
;
int
selColCount
;
int
selColCount
;
/// Gets the selected area into a sensible recta
b
le of sel{Row,Col}{Start,Count} above.
/// Gets the selected area into a sensible recta
ng
le of sel{Row,Col}{Start,Count} above.
void
getSelectedArea
()
void
getSelectedArea
()
{
{
wxGridCellCoordsArray
topLeft
=
m_cur_grid
->
GetSelectionBlockTopLeft
();
wxGridCellCoordsArray
topLeft
=
m_cur_grid
->
GetSelectionBlockTopLeft
();
wxGridCellCoordsArray
botRight
=
m_cur_grid
->
GetSelectionBlockBottomRight
();
wxGridCellCoordsArray
botRight
=
m_cur_grid
->
GetSelectionBlockBottomRight
();
wxArrayInt
cols
=
m_cur_grid
->
GetSelectedCols
();
wxArrayInt
rows
=
m_cur_grid
->
GetSelectedRows
();
D
(
printf
(
"topLeft.Count():%zd botRight:Count():%zd
\n
"
,
topLeft
.
Count
(),
botRight
.
Count
()
);)
if
(
topLeft
.
Count
()
&&
botRight
.
Count
()
)
if
(
topLeft
.
Count
()
&&
botRight
.
Count
()
)
{
{
selRowStart
=
topLeft
[
0
].
GetRow
();
selRowStart
=
topLeft
[
0
].
GetRow
();
...
@@ -213,6 +243,20 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
...
@@ -213,6 +243,20 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
selRowCount
=
botRight
[
0
].
GetRow
()
-
selRowStart
+
1
;
selRowCount
=
botRight
[
0
].
GetRow
()
-
selRowStart
+
1
;
selColCount
=
botRight
[
0
].
GetCol
()
-
selColStart
+
1
;
selColCount
=
botRight
[
0
].
GetCol
()
-
selColStart
+
1
;
}
}
else
if
(
cols
.
Count
()
)
{
selColStart
=
cols
[
0
];
selColCount
=
cols
.
Count
();
selRowStart
=
0
;
selRowCount
=
m_cur_grid
->
GetNumberRows
();
}
else
if
(
rows
.
Count
()
)
{
selColStart
=
0
;
selColCount
=
m_cur_grid
->
GetNumberCols
();
selRowStart
=
rows
[
0
];
selRowCount
=
rows
.
Count
();
}
else
else
{
{
selRowStart
=
-
1
;
selRowStart
=
-
1
;
...
@@ -221,19 +265,113 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
...
@@ -221,19 +265,113 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
selColCount
=
0
;
selColCount
=
0
;
}
}
D(printf("selRowStart:%d selColStart:%d selRowCount:%d selColCount:%d\n",
// D(printf("selRowStart:%d selColStart:%d selRowCount:%d selColCount:%d\n", selRowStart, selColStart, selRowCount, selColCount );)
selRowStart, selColStart, selRowCount, selColCount );)
}
void
rightClickCellPopupMenu
()
{
wxMenu
menu
;
menu
.
Append
(
ID_CUT
,
_
(
"Cut"
),
_
(
"Clear selected cells"
)
);
menu
.
Append
(
ID_COPY
,
_
(
"Copy"
),
_
(
"Copy selected cells to clipboard"
)
);
menu
.
Append
(
ID_PASTE
,
_
(
"Paste"
),
_
(
"Paste clipboard cells to matrix at current cell"
)
);
getSelectedArea
();
// if nothing is selected, diable cut and copy.
if
(
!
selRowCount
&&
!
selColCount
)
{
menu
.
Enable
(
ID_CUT
,
false
);
menu
.
Enable
(
ID_COPY
,
false
);
}
// if there is no current cell cursor, disable paste.
if
(
m_cur_row
==
-
1
||
m_cur_col
==
-
1
)
menu
.
Enable
(
ID_PASTE
,
false
);
PopupMenu
(
&
menu
);
// passOnFocus();
}
// the user clicked on a popup menu choice:
void
onPopupSelection
(
wxCommandEvent
&
event
)
{
int
menuId
=
event
.
GetId
();
// assume getSelectedArea() was called by rightClickPopupMenu() and there's
// no way to have gotten here without that having been called.
switch
(
menuId
)
{
case
ID_CUT
:
case
ID_COPY
:
if
(
wxTheClipboard
->
Open
()
)
{
wxGridTableBase
*
tbl
=
m_cur_grid
->
GetTable
();
wxString
txt
;
for
(
int
row
=
selRowStart
;
row
<
selRowStart
+
selRowCount
;
++
row
)
{
for
(
int
col
=
selColStart
;
col
<
selColStart
+
selColCount
;
++
col
)
{
txt
+=
tbl
->
GetValue
(
row
,
col
);
if
(
col
<
selColStart
+
selColCount
-
1
)
// that was not last column
txt
+=
COL_SEP
;
if
(
menuId
==
ID_CUT
)
tbl
->
SetValue
(
row
,
col
,
wxEmptyString
);
}
txt
+=
ROW_SEP
;
}
wxTheClipboard
->
SetData
(
new
wxTextDataObject
(
txt
)
);
wxTheClipboard
->
Close
();
m_cur_grid
->
ForceRefresh
();
}
break
;
case
ID_PASTE
:
D
(
printf
(
"paste
\n
"
);)
if
(
wxTheClipboard
->
Open
()
)
{
if
(
wxTheClipboard
->
IsSupported
(
wxDF_TEXT
)
)
{
wxGridTableBase
*
tbl
=
m_cur_grid
->
GetTable
();
wxTextDataObject
data
;
wxTheClipboard
->
GetData
(
data
);
wxStringTokenizer
rows
(
data
.
GetText
(),
ROW_SEP
,
wxTOKEN_RET_EMPTY
);
for
(
int
row
=
m_cur_row
;
rows
.
HasMoreTokens
();
++
row
)
{
wxString
rowTxt
=
rows
.
GetNextToken
();
wxStringTokenizer
cols
(
rowTxt
,
COL_SEP
,
wxTOKEN_RET_EMPTY
);
for
(
int
col
=
m_cur_col
;
cols
.
HasMoreTokens
();
++
col
)
{
wxString
cellTxt
=
cols
.
GetNextToken
();
tbl
->
SetValue
(
row
,
col
,
cellTxt
);
}
}
}
wxTheClipboard
->
Close
();
m_cur_grid
->
ForceRefresh
();
}
break
;
}
}
}
*/
//-----<event handlers>----------------------------------
//-----<event handlers>----------------------------------
void
pageChangedHandler
(
wxAuiNotebookEvent
&
event
)
void
pageChangedHandler
(
wxAuiNotebookEvent
&
event
)
{
{
int
pageNdx
=
m_auinotebook
->
GetSelection
();
int
pageNdx
=
m_auinotebook
->
GetSelection
();
m_cur_grid
=
pageNdx
==
0
?
m_global_grid
:
m_project_grid
;
m_cur_grid
=
(
pageNdx
==
0
)
?
m_global_grid
:
m_project_grid
;
D
(
printf
(
"%s cur_grid is %s
\n
"
,
__func__
,
pageNdx
==
0
?
"global"
:
"project"
);)
}
}
void
appendRowHandler
(
wxMouseEvent
&
event
)
void
appendRowHandler
(
wxMouseEvent
&
event
)
...
@@ -336,8 +474,33 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
...
@@ -336,8 +474,33 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
EndModal
(
dialogRet
);
EndModal
(
dialogRet
);
}
}
//-----</event handlers>---------------------------------
void
onGridCellLeftClick
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
void
onGridCellLeftDClick
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
void
onGridCellRightClick
(
wxGridEvent
&
event
)
{
rightClickCellPopupMenu
();
}
void
onGridCmdSelectCell
(
wxGridEvent
&
event
)
{
m_cur_row
=
event
.
GetRow
();
m_cur_col
=
event
.
GetCol
();
D
(
printf
(
"change cursor(%d,%d)
\n
"
,
m_cur_row
,
m_cur_col
);)
// somebody else wants this
event
.
Skip
();
}
//-----</event handlers>---------------------------------
// caller's tables are modified only on OK button.
// caller's tables are modified only on OK button.
FP_LIB_TABLE
*
m_global
;
FP_LIB_TABLE
*
m_global
;
...
@@ -349,6 +512,10 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
...
@@ -349,6 +512,10 @@ class DIALOG_FP_LIB_TABLE : public DIALOG_FP_LIB_TABLE_BASE
wxGrid
*
m_cur_grid
;
///< changed based on tab choice
wxGrid
*
m_cur_grid
;
///< changed based on tab choice
// wxGrid makes it difficult to know if the cursor is yet visible,
// use this to solve that, initial values are -1
int
m_cur_row
;
///< cursor position
int
m_cur_col
;
public
:
public
:
DIALOG_FP_LIB_TABLE
(
wxFrame
*
aParent
,
FP_LIB_TABLE
*
aGlobal
,
FP_LIB_TABLE
*
aProject
)
:
DIALOG_FP_LIB_TABLE
(
wxFrame
*
aParent
,
FP_LIB_TABLE
*
aGlobal
,
FP_LIB_TABLE
*
aProject
)
:
...
@@ -356,7 +523,9 @@ public:
...
@@ -356,7 +523,9 @@ public:
m_global
(
aGlobal
),
m_global
(
aGlobal
),
m_project
(
aProject
),
m_project
(
aProject
),
m_global_model
(
*
aGlobal
),
m_global_model
(
*
aGlobal
),
m_project_model
(
*
aProject
)
m_project_model
(
*
aProject
),
m_cur_row
(
-
1
),
m_cur_col
(
-
1
)
{
{
m_global_grid
->
SetTable
(
(
wxGridTableBase
*
)
&
m_global_model
);
m_global_grid
->
SetTable
(
(
wxGridTableBase
*
)
&
m_global_model
);
m_project_grid
->
SetTable
(
(
wxGridTableBase
*
)
&
m_project_model
);
m_project_grid
->
SetTable
(
(
wxGridTableBase
*
)
&
m_project_model
);
...
@@ -367,6 +536,9 @@ public:
...
@@ -367,6 +536,9 @@ public:
m_path_subs_grid
->
AutoSizeColumns
(
false
);
m_path_subs_grid
->
AutoSizeColumns
(
false
);
Connect
(
ID_CUT
,
ID_PASTE
,
wxEVT_COMMAND_MENU_SELECTED
,
wxCommandEventHandler
(
DIALOG_FP_LIB_TABLE
::
onPopupSelection
),
NULL
,
this
);
// fire pageChangedHandler() so m_cur_grid gets set
// fire pageChangedHandler() so m_cur_grid gets set
wxAuiNotebookEvent
uneventful
;
wxAuiNotebookEvent
uneventful
;
pageChangedHandler
(
uneventful
);
pageChangedHandler
(
uneventful
);
...
...
pcbnew/dialogs/dialog_fp_lib_table_base.cpp
View file @
f477464f
...
@@ -34,7 +34,7 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
...
@@ -34,7 +34,7 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
m_global_grid
=
new
wxGrid
(
m_global_panel
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_global_grid
=
new
wxGrid
(
m_global_panel
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
// Grid
// Grid
m_global_grid
->
CreateGrid
(
1
,
4
);
m_global_grid
->
CreateGrid
(
1
,
5
);
m_global_grid
->
EnableEditing
(
true
);
m_global_grid
->
EnableEditing
(
true
);
m_global_grid
->
EnableGridLines
(
true
);
m_global_grid
->
EnableGridLines
(
true
);
m_global_grid
->
EnableDragGridSize
(
true
);
m_global_grid
->
EnableDragGridSize
(
true
);
...
@@ -70,7 +70,7 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
...
@@ -70,7 +70,7 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
m_project_grid
=
new
wxGrid
(
m_project_panel
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_project_grid
=
new
wxGrid
(
m_project_panel
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
// Grid
// Grid
m_project_grid
->
CreateGrid
(
1
,
4
);
m_project_grid
->
CreateGrid
(
1
,
5
);
m_project_grid
->
EnableEditing
(
true
);
m_project_grid
->
EnableEditing
(
true
);
m_project_grid
->
EnableGridLines
(
true
);
m_project_grid
->
EnableGridLines
(
true
);
m_project_grid
->
EnableDragGridSize
(
true
);
m_project_grid
->
EnableDragGridSize
(
true
);
...
@@ -199,6 +199,14 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
...
@@ -199,6 +199,14 @@ DIALOG_FP_LIB_TABLE_BASE::DIALOG_FP_LIB_TABLE_BASE( wxWindow* parent, wxWindowID
// Connect Events
// Connect Events
m_auinotebook
->
Connect
(
wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED
,
wxAuiNotebookEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
pageChangedHandler
),
NULL
,
this
);
m_auinotebook
->
Connect
(
wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED
,
wxAuiNotebookEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
pageChangedHandler
),
NULL
,
this
);
m_global_grid
->
Connect
(
wxEVT_GRID_CELL_LEFT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftClick
),
NULL
,
this
);
m_global_grid
->
Connect
(
wxEVT_GRID_CELL_LEFT_DCLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftDClick
),
NULL
,
this
);
m_global_grid
->
Connect
(
wxEVT_GRID_CELL_RIGHT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellRightClick
),
NULL
,
this
);
m_global_grid
->
Connect
(
wxEVT_GRID_SELECT_CELL
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCmdSelectCell
),
NULL
,
this
);
m_project_grid
->
Connect
(
wxEVT_GRID_CELL_LEFT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftClick
),
NULL
,
this
);
m_project_grid
->
Connect
(
wxEVT_GRID_CELL_LEFT_DCLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftDClick
),
NULL
,
this
);
m_project_grid
->
Connect
(
wxEVT_GRID_CELL_RIGHT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellRightClick
),
NULL
,
this
);
m_project_grid
->
Connect
(
wxEVT_GRID_SELECT_CELL
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCmdSelectCell
),
NULL
,
this
);
m_append_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
appendRowHandler
),
NULL
,
this
);
m_append_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
appendRowHandler
),
NULL
,
this
);
m_delete_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
deleteRowHandler
),
NULL
,
this
);
m_delete_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
deleteRowHandler
),
NULL
,
this
);
m_move_up_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
moveUpHandler
),
NULL
,
this
);
m_move_up_button
->
Connect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
moveUpHandler
),
NULL
,
this
);
...
@@ -211,6 +219,14 @@ DIALOG_FP_LIB_TABLE_BASE::~DIALOG_FP_LIB_TABLE_BASE()
...
@@ -211,6 +219,14 @@ DIALOG_FP_LIB_TABLE_BASE::~DIALOG_FP_LIB_TABLE_BASE()
{
{
// Disconnect Events
// Disconnect Events
m_auinotebook
->
Disconnect
(
wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED
,
wxAuiNotebookEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
pageChangedHandler
),
NULL
,
this
);
m_auinotebook
->
Disconnect
(
wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED
,
wxAuiNotebookEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
pageChangedHandler
),
NULL
,
this
);
m_global_grid
->
Disconnect
(
wxEVT_GRID_CELL_LEFT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftClick
),
NULL
,
this
);
m_global_grid
->
Disconnect
(
wxEVT_GRID_CELL_LEFT_DCLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftDClick
),
NULL
,
this
);
m_global_grid
->
Disconnect
(
wxEVT_GRID_CELL_RIGHT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellRightClick
),
NULL
,
this
);
m_global_grid
->
Disconnect
(
wxEVT_GRID_SELECT_CELL
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCmdSelectCell
),
NULL
,
this
);
m_project_grid
->
Disconnect
(
wxEVT_GRID_CELL_LEFT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftClick
),
NULL
,
this
);
m_project_grid
->
Disconnect
(
wxEVT_GRID_CELL_LEFT_DCLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellLeftDClick
),
NULL
,
this
);
m_project_grid
->
Disconnect
(
wxEVT_GRID_CELL_RIGHT_CLICK
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCellRightClick
),
NULL
,
this
);
m_project_grid
->
Disconnect
(
wxEVT_GRID_SELECT_CELL
,
wxGridEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
onGridCmdSelectCell
),
NULL
,
this
);
m_append_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
appendRowHandler
),
NULL
,
this
);
m_append_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
appendRowHandler
),
NULL
,
this
);
m_delete_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
deleteRowHandler
),
NULL
,
this
);
m_delete_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
deleteRowHandler
),
NULL
,
this
);
m_move_up_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
moveUpHandler
),
NULL
,
this
);
m_move_up_button
->
Disconnect
(
wxEVT_LEFT_DOWN
,
wxMouseEventHandler
(
DIALOG_FP_LIB_TABLE_BASE
::
moveUpHandler
),
NULL
,
this
);
...
...
pcbnew/dialogs/dialog_fp_lib_table_base.fbp
View file @
f477464f
...
@@ -464,7 +464,7 @@
...
@@ -464,7 +464,7 @@
<property
name=
"col_label_size"
>
30
</property>
<property
name=
"col_label_size"
>
30
</property>
<property
name=
"col_label_values"
></property>
<property
name=
"col_label_values"
></property>
<property
name=
"col_label_vert_alignment"
>
wxALIGN_CENTRE
</property>
<property
name=
"col_label_vert_alignment"
>
wxALIGN_CENTRE
</property>
<property
name=
"cols"
>
4
</property>
<property
name=
"cols"
>
5
</property>
<property
name=
"column_sizes"
></property>
<property
name=
"column_sizes"
></property>
<property
name=
"context_help"
></property>
<property
name=
"context_help"
></property>
<property
name=
"context_menu"
>
1
</property>
<property
name=
"context_menu"
>
1
</property>
...
@@ -524,9 +524,9 @@
...
@@ -524,9 +524,9 @@
<event
name=
"OnEnterWindow"
></event>
<event
name=
"OnEnterWindow"
></event>
<event
name=
"OnEraseBackground"
></event>
<event
name=
"OnEraseBackground"
></event>
<event
name=
"OnGridCellChange"
></event>
<event
name=
"OnGridCellChange"
></event>
<event
name=
"OnGridCellLeftClick"
></event>
<event
name=
"OnGridCellLeftClick"
>
onGridCellLeftClick
</event>
<event
name=
"OnGridCellLeftDClick"
></event>
<event
name=
"OnGridCellLeftDClick"
>
onGridCellLeftDClick
</event>
<event
name=
"OnGridCellRightClick"
></event>
<event
name=
"OnGridCellRightClick"
>
onGridCellRightClick
</event>
<event
name=
"OnGridCellRightDClick"
></event>
<event
name=
"OnGridCellRightDClick"
></event>
<event
name=
"OnGridCmdCellChange"
></event>
<event
name=
"OnGridCmdCellChange"
></event>
<event
name=
"OnGridCmdCellLeftClick"
></event>
<event
name=
"OnGridCmdCellLeftClick"
></event>
...
@@ -543,7 +543,7 @@
...
@@ -543,7 +543,7 @@
<event
name=
"OnGridCmdLabelRightDClick"
></event>
<event
name=
"OnGridCmdLabelRightDClick"
></event>
<event
name=
"OnGridCmdRangeSelect"
></event>
<event
name=
"OnGridCmdRangeSelect"
></event>
<event
name=
"OnGridCmdRowSize"
></event>
<event
name=
"OnGridCmdRowSize"
></event>
<event
name=
"OnGridCmdSelectCell"
></event>
<event
name=
"OnGridCmdSelectCell"
>
onGridCmdSelectCell
</event>
<event
name=
"OnGridColSize"
></event>
<event
name=
"OnGridColSize"
></event>
<event
name=
"OnGridEditorCreated"
></event>
<event
name=
"OnGridEditorCreated"
></event>
<event
name=
"OnGridEditorHidden"
></event>
<event
name=
"OnGridEditorHidden"
></event>
...
@@ -693,7 +693,7 @@
...
@@ -693,7 +693,7 @@
<property
name=
"col_label_size"
>
30
</property>
<property
name=
"col_label_size"
>
30
</property>
<property
name=
"col_label_values"
></property>
<property
name=
"col_label_values"
></property>
<property
name=
"col_label_vert_alignment"
>
wxALIGN_CENTRE
</property>
<property
name=
"col_label_vert_alignment"
>
wxALIGN_CENTRE
</property>
<property
name=
"cols"
>
4
</property>
<property
name=
"cols"
>
5
</property>
<property
name=
"column_sizes"
></property>
<property
name=
"column_sizes"
></property>
<property
name=
"context_help"
></property>
<property
name=
"context_help"
></property>
<property
name=
"context_menu"
>
1
</property>
<property
name=
"context_menu"
>
1
</property>
...
@@ -753,9 +753,9 @@
...
@@ -753,9 +753,9 @@
<event
name=
"OnEnterWindow"
></event>
<event
name=
"OnEnterWindow"
></event>
<event
name=
"OnEraseBackground"
></event>
<event
name=
"OnEraseBackground"
></event>
<event
name=
"OnGridCellChange"
></event>
<event
name=
"OnGridCellChange"
></event>
<event
name=
"OnGridCellLeftClick"
></event>
<event
name=
"OnGridCellLeftClick"
>
onGridCellLeftClick
</event>
<event
name=
"OnGridCellLeftDClick"
></event>
<event
name=
"OnGridCellLeftDClick"
>
onGridCellLeftDClick
</event>
<event
name=
"OnGridCellRightClick"
></event>
<event
name=
"OnGridCellRightClick"
>
onGridCellRightClick
</event>
<event
name=
"OnGridCellRightDClick"
></event>
<event
name=
"OnGridCellRightDClick"
></event>
<event
name=
"OnGridCmdCellChange"
></event>
<event
name=
"OnGridCmdCellChange"
></event>
<event
name=
"OnGridCmdCellLeftClick"
></event>
<event
name=
"OnGridCmdCellLeftClick"
></event>
...
@@ -772,7 +772,7 @@
...
@@ -772,7 +772,7 @@
<event
name=
"OnGridCmdLabelRightDClick"
></event>
<event
name=
"OnGridCmdLabelRightDClick"
></event>
<event
name=
"OnGridCmdRangeSelect"
></event>
<event
name=
"OnGridCmdRangeSelect"
></event>
<event
name=
"OnGridCmdRowSize"
></event>
<event
name=
"OnGridCmdRowSize"
></event>
<event
name=
"OnGridCmdSelectCell"
></event>
<event
name=
"OnGridCmdSelectCell"
>
onGridCmdSelectCell
</event>
<event
name=
"OnGridColSize"
></event>
<event
name=
"OnGridColSize"
></event>
<event
name=
"OnGridEditorCreated"
></event>
<event
name=
"OnGridEditorCreated"
></event>
<event
name=
"OnGridEditorHidden"
></event>
<event
name=
"OnGridEditorHidden"
></event>
...
...
pcbnew/dialogs/dialog_fp_lib_table_base.h
View file @
f477464f
...
@@ -61,6 +61,10 @@ class DIALOG_FP_LIB_TABLE_BASE : public DIALOG_SHIM
...
@@ -61,6 +61,10 @@ class DIALOG_FP_LIB_TABLE_BASE : public DIALOG_SHIM
// Virtual event handlers, overide them in your derived class
// Virtual event handlers, overide them in your derived class
virtual
void
pageChangedHandler
(
wxAuiNotebookEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
pageChangedHandler
(
wxAuiNotebookEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onGridCellLeftClick
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onGridCellLeftDClick
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onGridCellRightClick
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
onGridCmdSelectCell
(
wxGridEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
appendRowHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
appendRowHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
deleteRowHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
deleteRowHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
moveUpHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
moveUpHandler
(
wxMouseEvent
&
event
)
{
event
.
Skip
();
}
...
...
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