#include "wx/wx.h"
#include "wx/app.h"
#include "wx/timer.h"
-#include "wx/motif/toolbar.h"
+#include "wx/toolbar.h"
#include <Xm/Xm.h>
#include <Xm/PushBG.h>
Widget parentWidget = (Widget) parent->GetClientWidget();
Widget toolbar = XtVaCreateManagedWidget("toolbar",
- xmFormWidgetClass, parentWidget,
+ xmBulletinBoardWidgetClass, (Widget) parentWidget,
+ XmNmarginWidth, 0,
+ XmNmarginHeight, 0,
+ XmNresizePolicy, XmRESIZE_NONE,
+ NULL);
+/*
+ Widget toolbar = XtVaCreateManagedWidget("toolbar",
+ xmFormWidgetClass, (Widget) m_clientWidget,
XmNtraversalOn, False,
XmNhorizontalSpacing, 0,
XmNverticalSpacing, 0,
XmNmarginWidth, 0,
XmNmarginHeight, 0,
NULL);
+*/
m_mainWidget = (WXWidget) toolbar;
// Separator spacing
const int separatorSize = GetToolSeparation(); // 8;
+ wxSize margins = GetToolMargins();
+ int marginX = margins.x;
+ int marginY = margins.y;
+
+ int currentX = marginX;
+ int currentY = marginY;
+
+ int buttonHeight = 0;
int currentSpacing = 0;
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR)
- currentSpacing = separatorSize;
+ currentX += separatorSize;
else if (tool->m_bitmap1.Ok())
{
Widget button = (Widget) 0;
if (tool->m_isToggle)
{
- button = XtVaCreateManagedWidget("toggleButton",
+ button = XtVaCreateWidget("toggleButton",
xmToggleButtonWidgetClass, (Widget) m_mainWidget,
- XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
- XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
- XmNleftOffset, currentSpacing,
- XmNtopAttachment, XmATTACH_FORM,
+ XmNx, currentX, XmNy, currentY,
// XmNpushButtonEnabled, True,
XmNmultiClick, XmMULTICLICK_KEEP,
XmNlabelType, XmPIXMAP,
NULL);
XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback,
(XtPointer) this);
+
+ XtVaSetValues ((Widget) button,
+ XmNselectColor, m_backgroundColour.AllocColour(XtDisplay((Widget) button)),
+ NULL);
}
else
{
- button = XtVaCreateManagedWidget("button",
+ button = XtVaCreateWidget("button",
xmPushButtonWidgetClass, (Widget) m_mainWidget,
- XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
- XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
- XmNleftOffset, currentSpacing,
- XmNtopAttachment, XmATTACH_FORM,
+ XmNx, currentX, XmNy, currentY,
XmNpushButtonEnabled, True,
XmNmultiClick, XmMULTICLICK_KEEP,
XmNlabelType, XmPIXMAP,
(XtPointer) this);
}
+ DoChangeBackgroundColour((WXWidget) button, m_backgroundColour, TRUE);
+
// For each button, if there is a mask, we must create
// a new wxBitmap that has the correct background colour
// for the button. Otherwise the background will just be
XmNarmPixmap, pixmap2,
NULL);
}
+ XtManageChild(button);
+
+ Dimension width, height;
+ XtVaGetValues(button, XmNwidth, & width, XmNheight, & height,
+ NULL);
+ currentX += width + marginX;
+ buttonHeight = wxMax(buttonHeight, height);
XtAddEventHandler (button, EnterWindowMask | LeaveWindowMask,
False, wxToolButtonPopupCallback, (XtPointer) this);
node = node->Next();
}
+ SetSize(-1, -1, currentX, buttonHeight + 2*marginY);
+
return TRUE;
}
wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap,
bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2)
{
- wxToolBarTool *tool = new wxToolBarTool(index, bitmap, (wxBitmap *)NULL, toggle, xPos, yPos, helpString1, helpString2);
+ wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2);
tool->m_clientData = clientData;
if (xPos > -1)
else
tool->m_y = m_yMargin;
- tool->SetSize(GetDefaultButtonWidth(), GetDefaultButtonHeight());
+ wxSize size = GetToolSize();
+ tool->SetSize(size.x, size.y);
m_tools.Append((long)index, tool);
return tool;
{
WXWidget widget = (WXWidget) node->Data();
if (widget == w)
- return (int) node->key.integer;
+ return (int) node->GetKeyInteger();
node = node->Next();
}
return -1;
return (WXWidget) node->Data();
}
+WXWidget wxToolBar::GetTopWidget() const
+{
+ return m_mainWidget;
+}
+
+WXWidget wxToolBar::GetClientWidget() const
+{
+ return m_mainWidget;
+}
+
+WXWidget wxToolBar::GetMainWidget() const
+{
+ return m_mainWidget;
+}
+
+
void wxToolButtonCallback (Widget w, XtPointer clientData,
XtPointer ptr)
{
return;
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
if (tool->m_isToggle)
- tool->m_toggleState = toolBar->GetToolState(index);
+ tool->m_toggleState = !tool->m_toggleState;
(void) toolBar->OnLeftClick(index, tool->m_toggleState);
}