]> git.saurik.com Git - wxWidgets.git/blame - src/motif/stattext.cpp
compilation fix: test correctly for filter string not being empty in MakeUserDataRec
[wxWidgets.git] / src / motif / stattext.cpp
CommitLineData
4bb6408c 1/////////////////////////////////////////////////////////////////////////////
7520f3da 2// Name: src/motif/stattext.cpp
4bb6408c
JS
3// Purpose: wxStaticText
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
65571936 9// Licence: wxWindows licence
4bb6408c
JS
10/////////////////////////////////////////////////////////////////////////////
11
1248b41f
MB
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
bcd055ae
JJ
15#ifdef __VMS
16#define XtDisplay XTDISPLAY
17#endif
18
47073128
WS
19#if wxUSE_STATTEXT
20
4bb6408c
JS
21#include "wx/stattext.h"
22
338dd992
JJ
23#ifdef __VMS__
24#pragma message disable nosimpint
25#endif
02e8b2f9 26#include <Xm/Label.h>
338dd992
JJ
27#ifdef __VMS__
28#pragma message enable nosimpint
29#endif
02e8b2f9 30
fe5de1ea
JS
31#include "wx/motif/private.h"
32
e933b5bc 33IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
4bb6408c
JS
34
35bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
36 const wxString& label,
37 const wxPoint& pos,
38 const wxSize& size,
39 long style,
40 const wxString& name)
41{
9a595736
MB
42 if( !CreateControl( parent, id, pos, size, style,
43 wxDefaultValidator, name ) )
44 return false;
4bb6408c 45
a4294b78 46 Widget parentWidget = (Widget) parent->GetClientWidget();
02e8b2f9 47
9a595736
MB
48 Widget borderWidget =
49 (Widget) wxCreateBorderWidget( (WXWidget)parentWidget, style );
ea57084d 50
73608949 51 m_labelWidget =
9b135950 52 XtVaCreateManagedWidget (wxConstCast(name.mb_str(), char),
73608949
MB
53 xmLabelWidgetClass,
54 borderWidget ? borderWidget : parentWidget,
55 wxFont::GetFontTag(), m_font.GetFontTypeC(XtDisplay(parentWidget)),
73608949
MB
56 XmNalignment, ((style & wxALIGN_RIGHT) ? XmALIGNMENT_END :
57 ((style & wxALIGN_CENTRE) ? XmALIGNMENT_CENTER :
58 XmALIGNMENT_BEGINNING)),
3fe5be6e 59 XmNrecomputeSize, ((style & wxST_NO_AUTORESIZE) ? TRUE : FALSE),
73608949 60 NULL);
02e8b2f9 61
6886fcfa 62 m_mainWidget = borderWidget ? borderWidget : m_labelWidget;
7227cefd 63
9a595736
MB
64 AttachWidget (parent, m_mainWidget, (WXWidget) NULL,
65 pos.x, pos.y, size.x, size.y);
02e8b2f9 66
0d57be45 67 ChangeBackgroundColour ();
4bb6408c 68
39bc0347
VZ
69 SetLabel(label);
70
96be256b 71 return true;
4bb6408c
JS
72}
73
fe5de1ea
JS
74void wxStaticText::SetLabel(const wxString& label)
75{
39bc0347
VZ
76 m_labelOrig = label; // save original label
77
78 // Motif does not support neither ellipsize nor markup in static text:
79 DoSetLabel(GetEllipsizedLabelWithoutMarkup());
80}
81
82// for wxST_ELLIPSIZE_* support:
83
84wxString wxStaticText::DoGetLabel() const
85{
86 XmString label = NULL;
87 XtVaGetValues((Widget)m_labelWidget, XmNlabelString, &label, NULL);
88
89 return wxXmStringToString(label);
90}
91
92void wxStaticText::DoSetLabel(const wxString& str)
93{
94 // build our own cleaned label
95 wxXmString label_str(RemoveMnemonics(str));
fe5de1ea
JS
96
97 // This variable means we don't need so many casts later.
98 Widget widget = (Widget) m_labelWidget;
99
fe5de1ea
JS
100 XtVaSetValues(widget,
101 XmNlabelString, label_str(),
102 XmNlabelType, XmSTRING,
103 NULL);
fe5de1ea 104}
47073128 105
39bc0347
VZ
106/*
107 FIXME: UpdateLabel() should be called on size events to allow correct
108 dynamic ellipsizing of the label
109*/
110
47073128 111#endif // wxUSE_STATTEXT