]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/control.cpp
fixes
[wxWidgets.git] / src / motif / control.cpp
index aa0baba9eba3ffa8e1eb090a9cb62975f5cc8c8a..64369b26d2bbe35e239ce45c58974fffbf210653 100644 (file)
@@ -14,6 +14,9 @@
 #endif
 
 #include "wx/control.h"
+#include "wx/utils.h"
+
+#include <Xm/Xm.h>
 
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
@@ -28,6 +31,7 @@ wxControl::wxControl()
     m_backgroundColour = *wxWHITE;
     m_foregroundColour = *wxBLACK;
     m_callback = 0;
+    m_inSetValue = FALSE;
 }
 
 wxControl::~wxControl()
@@ -44,13 +48,44 @@ wxControl::~wxControl()
 
 void wxControl::SetLabel(const wxString& label)
 {
-    // TODO
+    Widget widget = (Widget) GetLabelWidget() ;
+    if (!widget)
+        return;
+    wxStripMenuCodes((char*) (const char*) label, wxBuffer);
+
+    XmString text = XmStringCreateSimple (wxBuffer);
+    XtVaSetValues (widget,
+                   XmNlabelString, text,
+            XmNlabelType, XmSTRING,
+                NULL);
+    XmStringFree (text);
 }
 
 wxString wxControl::GetLabel() const
 {
-    // TODO
-    return wxString("");
+    Widget widget = (Widget) GetLabelWidget() ;
+    if (!widget)
+        return wxEmptyString;
+
+    XmString text;
+    char *s;
+    XtVaGetValues (widget,
+                XmNlabelString, &text,
+                NULL);
+
+    if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s))
+    {
+        wxString str(s);
+        XtFree (s);
+        XmStringFree(text);
+        return str;
+    }
+    else
+    {
+        XmStringFree(text);
+        return wxEmptyString;
+    }
 }
 
 void wxControl::ProcessCommand (wxCommandEvent & event)