5 #define YUILogComponent "gtk"
11 #define AUTO_WRAP_WIDTH 100
12 #define AUTO_WRAP_HEIGHT 20
17 YGLabel (YWidget *parent,
const std::string &text,
bool heading,
bool outputField)
18 : YLabel (NULL, text, heading, outputField),
19 YGWidget (
this, parent, GTK_TYPE_LABEL, NULL), _layoutPass1Width(0), _layoutPass1Height(0)
21 # if GTK_CHECK_VERSION (3, 14, 0)
22 gtk_widget_set_halign (getWidget(), GTK_ALIGN_START);
23 gtk_widget_set_valign (getWidget(), GTK_ALIGN_CENTER);
25 gtk_misc_set_alignment (GTK_MISC (getWidget()), 0.0, 0.5);
29 gtk_label_set_selectable (GTK_LABEL (getWidget()), TRUE);
30 gtk_label_set_single_line_mode (GTK_LABEL (getWidget()), TRUE);
31 YGUtils::setWidgetFont (getWidget(), PANGO_STYLE_ITALIC, PANGO_WEIGHT_NORMAL,
35 YGUtils::setWidgetFont (getWidget(), PANGO_STYLE_NORMAL, PANGO_WEIGHT_BOLD,
40 virtual void setText (
const std::string &label)
42 YLabel::setText (label);
43 gtk_label_set_label (GTK_LABEL (getWidget()), label.c_str());
44 std::string::size_type i = label.find (
'\n', 0);
46 if (!isOutputField()) {
47 bool selectable = i != std::string::npos && i != label.size()-1;
48 gtk_label_set_selectable (GTK_LABEL (getWidget()), selectable);
53 void setAutoWrap(
bool autoWrap )
56 YLabel::setAutoWrap( autoWrap );
57 gtk_label_set_line_wrap (GTK_LABEL (getWidget()), gboolean(autoWrap));
58 gtk_label_set_single_line_mode (GTK_LABEL (getWidget()), gboolean(!autoWrap));
62 virtual bool setKeyboardFocus() {
63 return doSetKeyboardFocus();
66 virtual void setEnabled (
bool enabled)
67 { YLabel::setEnabled (enabled);
68 doSetEnabled (enabled);
71 virtual int preferredWidth()
79 int lpass = layoutPass();
83 width = _layoutPass1Width + 2;
87 width = doPreferredSize (YD_HORIZ);
91 width = doPreferredSize (YD_HORIZ);
94 return (width > AUTO_WRAP_WIDTH ? width : AUTO_WRAP_WIDTH);
97 virtual int preferredHeight()
103 if ( layoutPass() != 1 )
105 height = _layoutPass1Height + 4;
109 height = doPreferredSize (YD_VERT);
114 height = doPreferredSize (YD_VERT);
117 return (height > AUTO_WRAP_HEIGHT ? height : AUTO_WRAP_HEIGHT);
121 virtual void setSize (
int width,
int height)
125 int lpass = layoutPass();
127 if (lpass == 1 || _layoutPass1Width <= 0)
129 _layoutPass1Width = width;
130 gint minimum_height, natural_height;
132 gtk_widget_get_preferred_height_for_width
137 _layoutPass1Height = natural_height;
140 doSetSize (width, height);
143 YGWIDGET_IMPL_USE_BOLD (YLabel)
145 int _layoutPass1Width;
146 int _layoutPass1Height;
149 YLabel *YGWidgetFactory::createLabel (YWidget *parent,
150 const std::string &text,
bool heading,
bool outputField)
151 {
return new YGLabel (parent, text, heading, outputField); }