virtual ~wxToolBar();
// override/implement base class virtuals
- virtual wxToolBarTool *FindToolForPosition(wxCoord x, wxCoord y) const;
+ virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
virtual bool Realize();
// implementation from now on
// find tool by widget
- wxToolBarTool *FindToolByWidget(WXWidget w) const;
+ wxToolBarToolBase *FindToolByWidget(WXWidget w) const;
protected:
// common part of all ctors
void Init();
// implement base class pure virtuals
- virtual bool DoInsertTool(size_t pos, wxToolBarTool *tool);
- virtual bool DoDeleteTool(size_t pos, wxToolBarTool *tool);
-
- virtual void DoEnableTool(wxToolBarTool *tool, bool enable);
- virtual void DoToggleTool(wxToolBarTool *tool, bool toggle);
- virtual void DoSetToggle(wxToolBarTool *tool, bool toggle);
+ virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
+ virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
+
+ virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
+ virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
+ virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
+
+ virtual wxToolBarToolBase *CreateTool(int id,
+ const wxBitmap& bitmap1,
+ const wxBitmap& bitmap2,
+ bool toggle,
+ wxObject *clientData,
+ const wxString& shortHelpString,
+ const wxString& longHelpString);
+ virtual wxToolBarToolBase *CreateTool(wxControl *control);
private:
DECLARE_DYNAMIC_CLASS(wxToolBar)
// wxToolBarTool
// ----------------------------------------------------------------------------
-wxToolBarToolBase *wxToolBarToolBase::New(wxToolBar *tbar,
- int id,
- const wxBitmap& bitmap1,
- const wxBitmap& bitmap2,
- bool toggle,
- wxObject *clientData,
- const wxString& shortHelpString,
- const wxString& longHelpString)
+wxToolBarToolBase *wxToolBar::CreateTool(int id,
+ const wxBitmap& bitmap1,
+ const wxBitmap& bitmap2,
+ bool toggle,
+ wxObject *clientData,
+ const wxString& shortHelpString,
+ const wxString& longHelpString)
{
- return new wxToolBarTool(tbar, id, bitmap1, bitmap2, toggle,
+ return new wxToolBarTool(this, id, bitmap1, bitmap2, toggle,
clientData, shortHelpString, longHelpString);
}
-wxToolBarToolBase *wxToolBarToolBase::New(wxToolBar *tbar, wxControl *control)
+wxToolBarToolBase *wxToolBar::CreateTool(wxControl *control)
{
- return new wxToolBarTool(tbar, control);
+ return new wxToolBarTool(this, control);
}
void wxToolBarTool::Init()
wxToolBarTool::~wxToolBarTool()
{
- XtDestroyWidget(m_widget);
- XmDestroyPixmap(DefaultScreenOfDisplay((Display*)wxGetDisplay()), m_pixmap);
+ if ( m_widget )
+ XtDestroyWidget(m_widget);
+ if ( m_pixmap )
+ XmDestroyPixmap(DefaultScreenOfDisplay((Display*)wxGetDisplay()),
+ m_pixmap);
}
// ----------------------------------------------------------------------------
insensPixmap2 = XCreateInsensitivePixmap((Display*) wxGetDisplay(), pixmap2);
}
+ tool->SetPixmap(pixmap2);
+
XtVaSetValues (button,
XmNindicatorOn, False,
XmNshadowThickness, 2,
pixmap2 = (Pixmap) bmp.GetArmPixmap(button);
}
+
+ tool->SetPixmap(pixmap2);
+
// Normal button
XtVaSetValues(button,
XmNlabelPixmap, pixmap,
XmNarmPixmap, pixmap2,
NULL);
}
+
XtManageChild(button);
{
return TRUE;
}
-wxToolBarTool *wxToolBar::FindToolForPosition(wxCoord WXUNUSED(x),
- wxCoord WXUNUSED(y)) const
+wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord WXUNUSED(x),
+ wxCoord WXUNUSED(y)) const
{
wxFAIL_MSG( _T("TODO") );
- return (wxToolBarTool *)NULL;
+ return (wxToolBarToolBase *)NULL;
}
-bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos), wxToolBarTool *tool)
+bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos), wxToolBarToolBase *tool)
{
tool->Attach(this);
return TRUE;
}
-bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarTool *tool)
+bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *tool)
{
tool->Detach();
return TRUE;
}
-void wxToolBar::DoEnableTool(wxToolBarTool *tool, bool enable)
+void wxToolBar::DoEnableTool(wxToolBarToolBase *toolBase, bool enable)
{
+ wxToolBarTool *tool = (wxToolBarTool *)toolBase;
+
XtSetSensitive(tool->GetButtonWidget(), (Boolean) enable);
}
-void wxToolBar::DoToggleTool(wxToolBarTool *tool, bool toggle)
+void wxToolBar::DoToggleTool(wxToolBarToolBase *toolBase, bool toggle)
{
+ wxToolBarTool *tool = (wxToolBarTool *)toolBase;
+
XmToggleButtonSetState(tool->GetButtonWidget(), (Boolean) toggle, False);
}
-void wxToolBar::DoSetToggle(wxToolBarTool *tool, bool toggle)
+void wxToolBar::DoSetToggle(wxToolBarToolBase * WXUNUSED(tool),
+ bool WXUNUSED(toggle))
{
- wxFAIL_MSG( _T("TODO") );
+ // nothing to do
}
// ----------------------------------------------------------------------------
// Motif callbacks
// ----------------------------------------------------------------------------
-wxToolBarTool *wxToolBar::FindToolByWidget(WXWidget w) const
+wxToolBarToolBase *wxToolBar::FindToolByWidget(WXWidget w) const
{
wxToolBarToolsList::Node* node = m_tools.GetFirst();
while ( node )
node = node->GetNext();
}
- return (wxToolBarTool *)NULL;
+ return (wxToolBarToolBase *)NULL;
}
static void wxToolButtonCallback(Widget w,
XtPointer WXUNUSED(ptr))
{
wxToolBar *toolBar = (wxToolBar *) clientData;
- wxToolBarTool *tool = toolBar->FindToolByWidget((WXWidget) w);
+ wxToolBarToolBase *tool = toolBar->FindToolByWidget((WXWidget) w);
if ( !tool )
return;
static const int delayMilli = 800;
wxToolBar* toolBar = (wxToolBar*) client_data;
- wxToolBarTool *tool = toolBar->FindToolByWidget((WXWidget) w);
+ wxToolBarToolBase *tool = toolBar->FindToolByWidget((WXWidget) w);
if ( !tool )
return;