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
5d2817ff
Commit
5d2817ff
authored
Oct 21, 2007
by
g_harland
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sizers now provided within the "Colors" dialog box
parent
3d82623c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
158 additions
and
108 deletions
+158
-108
change_log.txt
change_log.txt
+6
-0
selcolor.cpp
common/selcolor.cpp
+152
-108
No files found.
change_log.txt
View file @
5d2817ff
...
...
@@ -4,6 +4,12 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2007-Oct-21 UPDATE Geoff Harland <gharlandau@yahoo.com.au>
================================================================================
+ eeschema & pcbnew & gerbview
* Sizers have now been provided within the "Colors" dialog box.
2007-Oct-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+ pcbnew
...
...
common/selcolor.cpp
View file @
5d2817ff
/****************
********
/
/*
SETCOLOR.CPP
*/
/****************
********
/
/****************/
/*
SETCOLOR.CPP
*/
/****************/
/* Affichage et selection de la palette des couleurs disponibles
* dans une frame
*/
...
...
@@ -12,9 +12,11 @@
#include "common.h"
#include "colors.h"
#include "wx/statline.h"
enum
colors_id
{
ID_COLOR_BLACK
=
2000
,
// ID_COLOR_ = ID_COLOR_BLACK a ID_COLOR_BLACK + 31
ID_COLOR_BLACK
=
2000
,
// ID_COLOR_ = ID_COLOR_BLACK a ID_COLOR_BLACK + 31
};
...
...
@@ -27,23 +29,24 @@ class WinEDA_SelColorFrame: public wxDialog
private
:
public
:
// Constructor and destructor
WinEDA_SelColorFrame
(
wxWindow
*
parent
,
const
wxPoint
&
framepos
,
int
OldColor
);
~
WinEDA_SelColorFrame
()
{};
// Constructor and destructor
WinEDA_SelColorFrame
(
wxWindow
*
parent
,
const
wxPoint
&
framepos
,
int
OldColor
);
~
WinEDA_SelColorFrame
()
{};
private
:
void
OnCancel
(
wxCommandEvent
&
event
);
void
SelColor
(
wxCommandEvent
&
event
);
DECLARE_EVENT_TABLE
()
void
OnCancel
(
wxCommandEvent
&
event
);
void
SelColor
(
wxCommandEvent
&
event
);
DECLARE_EVENT_TABLE
()
};
/* Construction de la table des evenements pour FrameClassMain */
BEGIN_EVENT_TABLE
(
WinEDA_SelColorFrame
,
wxDialog
)
EVT_BUTTON
(
wxID_CANCEL
,
WinEDA_SelColorFrame
::
OnCancel
)
EVT_COMMAND_RANGE
(
ID_COLOR_BLACK
,
ID_COLOR_BLACK
+
31
,
wxEVT_COMMAND_BUTTON_CLICKED
,
WinEDA_SelColorFrame
::
SelColor
)
EVT_BUTTON
(
wxID_CANCEL
,
WinEDA_SelColorFrame
::
OnCancel
)
EVT_COMMAND_RANGE
(
ID_COLOR_BLACK
,
ID_COLOR_BLACK
+
31
,
wxEVT_COMMAND_BUTTON_CLICKED
,
WinEDA_SelColorFrame
::
SelColor
)
END_EVENT_TABLE
()
...
...
@@ -54,105 +57,147 @@ int DisplayColorFrame(wxWindow * parent, int OldColor)
wxPoint
framepos
;
int
color
;
wxGetMousePosition
(
&
framepos
.
x
,
&
framepos
.
y
);
wxGetMousePosition
(
&
framepos
.
x
,
&
framepos
.
y
);
WinEDA_SelColorFrame
*
frame
=
new
WinEDA_SelColorFrame
(
parent
,
framepos
,
OldColor
);
color
=
frame
->
ShowModal
();
frame
->
Destroy
();
if
(
color
>
NBCOLOR
)
color
=
-
1
;
return
color
;
WinEDA_SelColorFrame
*
frame
=
new
WinEDA_SelColorFrame
(
parent
,
framepos
,
OldColor
);
color
=
frame
->
ShowModal
();
frame
->
Destroy
();
if
(
color
>
NBCOLOR
)
color
=
-
1
;
return
color
;
}
/*******************************************************************/
WinEDA_SelColorFrame
::
WinEDA_SelColorFrame
(
wxWindow
*
parent
,
const
wxPoint
&
framepos
,
int
OldColor
)
:
wxDialog
(
parent
,
-
1
,
_
(
"Colors"
),
framepos
,
wxSize
(
375
,
240
)
,
DIALOG_STYLE
)
WinEDA_SelColorFrame
::
WinEDA_SelColorFrame
(
wxWindow
*
parent
,
const
wxPoint
&
framepos
,
int
OldColor
)
:
wxDialog
(
parent
,
-
1
,
_
(
"Colors"
),
framepos
,
wxDefaultSize
,
DIALOG_STYLE
)
/*******************************************************************/
{
#define START_Y 10
wxBitmapButton
*
BitmapButton
;
wxButton
*
Button
;
wxBoxSizer
*
OuterBoxSizer
=
NULL
;
wxBoxSizer
*
MainBoxSizer
=
NULL
;
wxBoxSizer
*
ColumnBoxSizer
=
NULL
;
wxBoxSizer
*
RowBoxSizer
=
NULL
;
wxBitmapButton
*
BitmapButton
=
NULL
;
wxStaticText
*
text
=
NULL
;
wxStaticLine
*
line
=
NULL
;
wxButton
*
Button
=
NULL
;
int
ii
,
butt_ID
,
buttcolor
;
wxPoint
pos
;
int
w
=
20
,
h
=
20
;
wxStaticText
*
text
;
int
right
,
bottom
,
line_height
;
bool
ColorFound
=
false
;
SetFont
(
*
g_DialogFont
);
SetReturnCode
(
-
1
);
bottom
=
pos
.
x
=
5
;
right
=
pos
.
y
=
START_Y
;
line_height
=
h
;
for
(
ii
=
0
;
ColorRefs
[
ii
].
m_Name
!=
NULL
;
ii
++
)
{
butt_ID
=
ID_COLOR_BLACK
+
ii
;
wxMemoryDC
iconDC
;
wxBitmap
ButtBitmap
(
w
,
h
);
wxBrush
Brush
;
iconDC
.
SelectObject
(
ButtBitmap
);
buttcolor
=
ColorRefs
[
ii
].
m_Numcolor
;
iconDC
.
SetPen
(
*
wxBLACK_PEN
);
Brush
.
SetColour
(
ColorRefs
[
buttcolor
].
m_Red
,
ColorRefs
[
buttcolor
].
m_Green
,
ColorRefs
[
buttcolor
].
m_Blue
);
Brush
.
SetStyle
(
wxSOLID
);
iconDC
.
SetBrush
(
Brush
);
iconDC
.
SetBackground
(
*
wxGREY_BRUSH
);
iconDC
.
Clear
();
iconDC
.
DrawRoundedRectangle
(
0
,
0
,
w
,
h
,
(
double
)
h
/
3
);
text
=
new
wxStaticText
(
this
,
-
1
,
ColorRefs
[
ii
].
m_Name
,
wxPoint
(
pos
.
x
+
2
+
w
,
pos
.
y
),
wxSize
(
-
1
,
-
1
),
0
);
line_height
=
MAX
(
line_height
,
text
->
GetRect
().
GetHeight
()
);
right
=
MAX
(
right
,
text
->
GetRect
().
GetRight
()
);
bottom
=
MAX
(
bottom
,
text
->
GetRect
().
GetBottom
()
);
BitmapButton
=
new
wxBitmapButton
(
this
,
butt_ID
,
ButtBitmap
,
wxPoint
(
pos
.
x
,
pos
.
y
-
(
h
-
line_height
)
/
2
),
wxSize
(
w
,
h
)
);
// Set focus to this button if its color matches the
// color which had been selected previously (for
// whichever layer's color is currently being edited).
if
(
OldColor
==
buttcolor
)
{
ColorFound
=
true
;
BitmapButton
->
SetFocus
();
}
pos
.
y
+=
line_height
+
5
;
if
(
ii
==
7
||
ii
==
15
)
{
pos
.
x
=
right
+
10
;
pos
.
y
=
START_Y
;
}
}
pos
.
x
=
140
;
// Provide a Cancel button as well, so that this dialog
// box can also be cancelled by pressing the Esc key.
Button
=
new
wxButton
(
this
,
wxID_CANCEL
,
_
(
"Cancel"
),
pos
);
Button
->
SetForegroundColour
(
*
wxBLUE
);
// Set focus to the Cancel button if the currently selected color
// does not match any of the colors provided by this dialog box.
// (That shouldn't ever happen in practice though.)
if
(
!
ColorFound
)
Button
->
SetFocus
();
SetClientSize
(
wxSize
(
right
+
10
,
bottom
+
40
)
);
SetFont
(
*
g_DialogFont
);
SetReturnCode
(
-
1
);
OuterBoxSizer
=
new
wxBoxSizer
(
wxVERTICAL
);
SetSizer
(
OuterBoxSizer
);
MainBoxSizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
OuterBoxSizer
->
Add
(
MainBoxSizer
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxLEFT
|
wxRIGHT
|
wxTOP
,
5
);
for
(
ii
=
0
;
ColorRefs
[
ii
].
m_Name
!=
NULL
;
ii
++
)
{
// Provide a separate column for every eight buttons (and
// their associated text strings)
if
(
ii
%
8
==
0
)
{
ColumnBoxSizer
=
new
wxBoxSizer
(
wxVERTICAL
);
MainBoxSizer
->
Add
(
ColumnBoxSizer
,
0
,
wxALIGN_TOP
|
wxTOP
,
5
);
}
// Provide a sizer for each button and its associated text string
RowBoxSizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
ColumnBoxSizer
->
Add
(
RowBoxSizer
,
0
,
wxALIGN_LEFT
,
5
);
butt_ID
=
ID_COLOR_BLACK
+
ii
;
wxMemoryDC
iconDC
;
wxBitmap
ButtBitmap
(
w
,
h
);
wxBrush
Brush
;
iconDC
.
SelectObject
(
ButtBitmap
);
buttcolor
=
ColorRefs
[
ii
].
m_Numcolor
;
iconDC
.
SetPen
(
*
wxBLACK_PEN
);
Brush
.
SetColour
(
ColorRefs
[
buttcolor
].
m_Red
,
ColorRefs
[
buttcolor
].
m_Green
,
ColorRefs
[
buttcolor
].
m_Blue
);
Brush
.
SetStyle
(
wxSOLID
);
iconDC
.
SetBrush
(
Brush
);
iconDC
.
SetBackground
(
*
wxGREY_BRUSH
);
iconDC
.
Clear
();
iconDC
.
DrawRoundedRectangle
(
0
,
0
,
w
,
h
,
(
double
)
h
/
3
);
BitmapButton
=
new
wxBitmapButton
(
this
,
butt_ID
,
ButtBitmap
,
wxDefaultPosition
,
wxSize
(
w
,
h
)
);
RowBoxSizer
->
Add
(
BitmapButton
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxLEFT
|
wxBOTTOM
,
5
);
// Set focus to this button if its color matches the
// color which had been selected previously (for
// whichever layer's color is currently being edited).
if
(
OldColor
==
buttcolor
)
{
ColorFound
=
true
;
BitmapButton
->
SetFocus
();
}
text
=
new
wxStaticText
(
this
,
-
1
,
ColorRefs
[
ii
].
m_Name
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
RowBoxSizer
->
Add
(
text
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxLEFT
|
wxRIGHT
|
wxBOTTOM
,
5
);
}
// Provide a Cancel button as well, so that this dialog
// box can also be cancelled by pressing the Esc key
// (and also provide a horizontal static line to separate
// that button from all of the other buttons).
line
=
new
wxStaticLine
(
this
,
-
1
,
wxDefaultPosition
,
wxDefaultSize
,
wxLI_HORIZONTAL
);
OuterBoxSizer
->
Add
(
line
,
0
,
wxGROW
|
wxLEFT
|
wxRIGHT
|
wxTOP
,
5
);
#ifdef 0
BottomBoxSizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
OuterBoxSizer
->
Add
(
BottomBoxSizer
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
5
);
Button
=
new
wxButton
(
this
,
wxID_OK
,
_
(
"OK"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
Button
->
SetForegroundColour
(
*
wxRED
);
BottomBoxSizer
->
Add
(
Button
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
5
);
Button
=
new
wxButton
(
this
,
wxID_CANCEL
,
_
(
"Cancel"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
Button
->
SetForegroundColour
(
*
wxBLUE
);
BottomBoxSizer
->
Add
(
Button
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
5
);
// Dialog boxes usually contain both an "OK" button and a "Cancel" button (and sometimes
// also contain an "Apply" button). The previous code implements an additional sizer
// (to contain such buttons), then installs that sizer into the outermost sizer, then
// implements "OK" and "Cancel" buttons, and then installs those buttons into that sizer.
//
// However, as this particular dialog does not contain an "OK" button (nor an "Apply"
// button), it is not necessary to provide an additional sizer to contain (just) a
// "Cancel" button; that button can be installed directly into the outermost sizer
// instead. (Note that a value of 10 has been specified for the margin surrounding that
// button; that provides the same outcome as specifying the customary value of 5 for both
// that button, and the BottomBoxSizer that it would otherwise be installed within.)
#endif
Button
=
new
wxButton
(
this
,
wxID_CANCEL
,
_
(
"Cancel"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
Button
->
SetForegroundColour
(
*
wxBLUE
);
OuterBoxSizer
->
Add
(
Button
,
0
,
wxALIGN_CENTER_HORIZONTAL
|
wxALL
,
10
);
// Set focus to the Cancel button if the currently selected color
// does not match any of the colors provided by this dialog box.
// (That shouldn't ever happen in practice though.)
if
(
!
ColorFound
)
Button
->
SetFocus
();
// Resize the dialog
if
(
GetSizer
())
{
GetSizer
()
->
SetSizeHints
(
this
);
}
}
...
...
@@ -162,10 +207,10 @@ void WinEDA_SelColorFrame::OnCancel(wxCommandEvent& WXUNUSED(event))
/* Called by the Cancel button
*/
{
// Setting the return value to -1 indicates that the
// dialog box has been cancelled (and thus that the
// previously selected color is to be retained).
EndModal
(
-
1
);
// Setting the return value to -1 indicates that the
// dialog box has been cancelled (and thus that the
// previously selected color is to be retained).
EndModal
(
-
1
);
}
...
...
@@ -175,6 +220,5 @@ void WinEDA_SelColorFrame::SelColor(wxCommandEvent& event)
{
int
id
=
event
.
GetId
();
EndModal
(
id
-
ID_COLOR_BLACK
);
EndModal
(
id
-
ID_COLOR_BLACK
);
}
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