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 #elif defined(__WXGTK__) || defined(__WXMOTIF__)
121 wxBitmap
PaletteArrow(arrow_xpm
);
122 wxBitmap
TextTool(texttool_xpm
);
125 csEditorToolPalette
*palette
= new csEditorToolPalette(m_diagramPaletteSashWindow
, ID_DIAGRAM_PALETTE
, wxPoint(0, 0), wxSize(-1, -1), wxTB_HORIZONTAL
|wxNO_BORDER
);
127 palette
->SetMargins(2, 2);
129 palette
->SetToolBitmapSize(wxSize(32, 32));
131 palette
->AddTool(PALETTE_ARROW
, PaletteArrow
, wxNullBitmap
, TRUE
, 0, -1, NULL
, "Pointer");
132 palette
->AddTool(PALETTE_TEXT_TOOL
, TextTool
, wxNullBitmap
, TRUE
, 0, -1, NULL
, "Text");
134 wxNode
* node
= GetSymbolDatabase()->GetSymbols().First();
137 csSymbol
* symbol
= (csSymbol
*) node
->Data();
138 wxBitmap
* bitmap
= GetSymbolDatabase()->CreateToolBitmap(symbol
);
139 palette
->AddTool(symbol
->GetToolId(), *bitmap
, wxNullBitmap
, TRUE
, 0, -1, NULL
, symbol
->GetName());
148 palette
->SetSelection(PALETTE_ARROW
);
149 m_diagramPalette
= palette
;