1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: OGLEdit palette
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
13 // #pragma implementation
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
27 #include <wx/laywin.h>
36 #include "cspalette.h"
39 #if defined(__WXGTK__) || defined(__WXMOTIF__)
40 #include "bitmaps/arrow.xpm"
41 #include "bitmaps/texttool.xpm"
45 * Object editor tool palette
49 csEditorToolPalette::csEditorToolPalette(wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
,
51 TOOLPALETTECLASS(parent
, id
, pos
, size
, style
)
53 m_currentlySelected
= -1;
55 SetMaxRowsCols(1, 1000);
58 bool csEditorToolPalette::OnLeftClick(int toolIndex
, bool toggled
)
60 // BEGIN mutual exclusivity code
61 if (toggled
&& (m_currentlySelected
!= -1) && (toolIndex
!= m_currentlySelected
))
62 ToggleTool(m_currentlySelected
, FALSE
);
65 m_currentlySelected
= toolIndex
;
66 else if (m_currentlySelected
== toolIndex
)
67 m_currentlySelected
= -1;
68 // END mutual exclusivity code
73 void csEditorToolPalette::OnMouseEnter(int toolIndex
)
76 if (toolIndex
== PALETTE_ARROW
)
78 else if (toolIndex
!= -1)
80 csSymbol
* symbol
= wxGetApp().GetSymbolDatabase()->FindSymbol(toolIndex
);
82 msg
= symbol
->GetName();
84 ((wxFrame
*) wxGetApp().GetTopWindow())->SetStatusText(msg
);
87 void csEditorToolPalette::SetSize(int x
, int y
, int width
, int height
, int sizeFlags
)
89 TOOLPALETTECLASS::SetSize(x
, y
, width
, height
, sizeFlags
);
92 void csEditorToolPalette::SetSelection(int sel
)
94 if ((sel
!= m_currentlySelected
) && (m_currentlySelected
!= -1))
96 ToggleTool(m_currentlySelected
, FALSE
);
98 m_currentlySelected
= sel
;
99 ToggleTool(m_currentlySelected
, TRUE
);
102 bool csApp::CreatePalette(wxFrame
*parent
)
104 // First create a layout window
105 wxSashLayoutWindow
* win
= new wxSashLayoutWindow(parent
, ID_LAYOUT_WINDOW_PALETTE
, wxDefaultPosition
, wxSize(200, 30), wxNO_BORDER
|wxSW_3D
|wxCLIP_CHILDREN
);
106 win
->SetDefaultSize(wxSize(10000, 40));
107 win
->SetOrientation(wxLAYOUT_HORIZONTAL
);
108 win
->SetAlignment(wxLAYOUT_TOP
);
109 win
->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE
));
110 win
->SetSashVisible(wxSASH_BOTTOM
, TRUE
);
112 m_diagramPaletteSashWindow
= win
;
114 m_diagramPaletteSashWindow
->Show(FALSE
);
116 // Load palette bitmaps
118 wxBitmap
PaletteArrow("arrowtool");
119 wxBitmap
TextTool("texttool");
120 wxSize
toolBitmapSize(32, 32);
121 #elif defined(__WXGTK__) || defined(__WXMOTIF__)
122 wxBitmap
PaletteArrow(arrow_xpm
);
123 wxBitmap
TextTool(texttool_xpm
);
124 wxSize
toolBitmapSize(22, 22);
127 csEditorToolPalette
*palette
= new csEditorToolPalette(m_diagramPaletteSashWindow
, ID_DIAGRAM_PALETTE
, wxPoint(0, 0), wxSize(-1, -1), wxTB_HORIZONTAL
|wxNO_BORDER
);
129 palette
->SetMargins(2, 2);
131 palette
->SetToolBitmapSize(toolBitmapSize
);
133 palette
->AddTool(PALETTE_ARROW
, PaletteArrow
, wxNullBitmap
, TRUE
, 0, -1, NULL
, "Pointer");
134 palette
->AddTool(PALETTE_TEXT_TOOL
, TextTool
, wxNullBitmap
, TRUE
, 0, -1, NULL
, "Text");
136 char** symbols
= new char*[20];
139 symbols
[noSymbols
] = "Wide Rectangle";
142 symbols
[noSymbols
] = "Thin Rectangle";
145 symbols
[noSymbols
] = "Triangle";
148 symbols
[noSymbols
] = "Octagon";
151 // For some reason, we're getting Gdk errors with
152 // some shapes, such as ones that use DrawEllipse.
154 symbols
[noSymbols
] = "Group";
157 symbols
[noSymbols
] = "Circle";
160 symbols
[noSymbols
] = "Circle shadow";
163 symbols
[noSymbols
] = "SemiCircle";
168 for (i
= 0; i
< noSymbols
; i
++)
170 csSymbol
* symbol
= GetSymbolDatabase()->FindSymbol(symbols
[i
]);
173 wxBitmap
* bitmap
= GetSymbolDatabase()->CreateToolBitmap(symbol
, toolBitmapSize
);
174 palette
->AddTool(symbol
->GetToolId(), *bitmap
, wxNullBitmap
, TRUE
, 0, -1, NULL
, symbol
->GetName());
182 wxNode
* node
= GetSymbolDatabase()->GetSymbols().First();
185 csSymbol
* symbol
= (csSymbol
*) node
->Data();
187 wxBitmap
* bitmap
= GetSymbolDatabase()->CreateToolBitmap(symbol
, toolBitmapSize
);
188 palette
->AddTool(symbol
->GetToolId(), *bitmap
, wxNullBitmap
, TRUE
, 0, -1, NULL
, symbol
->GetName());
198 palette
->SetSelection(PALETTE_ARROW
);
199 m_diagramPalette
= palette
;