]> Dogcows Code - chaz/openbox/blobdiff - src/labelwidget.cc
use otk objects in the ob scripts by importing otk
[chaz/openbox] / src / labelwidget.cc
index 491deadccdf75120f0c938b664acb3b7f4e1d94a..020e8b73ca50d3e6acaef7ea9f0166a27d021a76 100644 (file)
 
 namespace ob {
 
-OBLabelWidget::OBLabelWidget(otk::OtkWidget *parent, OBWidget::WidgetType type)
-  : otk::OtkWidget(parent),
-    OBWidget(type)
+LabelWidget::LabelWidget(otk::Widget *parent, WidgetBase::WidgetType type)
+  : otk::Widget(parent),
+    WidgetBase(type)
 {
-  const otk::ScreenInfo *info = otk::OBDisplay::screenInfo(_screen);
-  _xftdraw = XftDrawCreate(otk::OBDisplay::display, _window, info->visual(),
-                           info->colormap());
 }
 
 
-OBLabelWidget::~OBLabelWidget()
+LabelWidget::~LabelWidget()
 {
-  XftDrawDestroy(_xftdraw);
 }
 
 
-void OBLabelWidget::setText(const std::string &text)
+void LabelWidget::setText(const otk::ustring &text)
 {
   _text = text;
   _dirty = true;
 }
 
 
-void OBLabelWidget::setTextures()
+void LabelWidget::setTextures()
 {
   if (_focused) {
-    setTexture(_style->getLabelFocus());
-    _text_color = _style->getTextFocus();
+    setTexture(_style->labelFocusBackground());
+    _text_color = _style->textFocusColor();
   } else {
-    setTexture(_style->getLabelUnfocus());
-    _text_color = _style->getTextUnfocus();
+    setTexture(_style->labelUnfocusBackground());
+    _text_color = _style->textUnfocusColor();
   }
 }
 
 
-void OBLabelWidget::setStyle(otk::Style *style)
+void LabelWidget::setStyle(otk::RenderStyle *style)
 {
-  OtkWidget::setStyle(style);
+  otk::Widget::setStyle(style);
   setTextures();
-  _font = style->getFont();
+  _font = style->labelFont();
+  _sidemargin = style->bevelWidth() * 2;
+  _justify = style->labelTextJustify();
+
   assert(_font);
-  _sidemargin = style->getBevelWidth() * 2;
-  _justify = style->textJustify();
 }
 
 
-void OBLabelWidget::focus()
+void LabelWidget::focus()
 {
-  otk::OtkWidget::focus();
+  otk::Widget::focus();
   setTextures();
 }
 
 
-void OBLabelWidget::unfocus()
+void LabelWidget::unfocus()
 {
-  otk::OtkWidget::unfocus();
+  otk::Widget::unfocus();
   setTextures();
 }
 
 
-void OBLabelWidget::update()
+void LabelWidget::renderForeground()
 {
-  OtkWidget::update();
+  bool draw = _dirty;
 
-  std::string t = _text;
-  int x = _sidemargin;    // x coord for the text
+  otk::Widget::renderForeground();
 
-  // find a string that will fit inside the area for text
-  int max_length = width() - _sidemargin * 2;
-  if (max_length <= 0) {
-    t = ""; // can't fit anything
-  } else {
-    size_t text_len = t.size();
-    int length;
+  if (draw) {
+    otk::ustring t = _text;
+    int x = _sidemargin;    // x coord for the text
+
+    // find a string that will fit inside the area for text
+    int max_length = width() - _sidemargin * 2;
+    if (max_length <= 0) {
+      t = ""; // can't fit anything
+    } else {
+      size_t text_len = t.size();
+      int length;
       
-    do {
-      t.resize(text_len);
-      length = _font->measureString(t);
-    } while (length > max_length && text_len-- > 0);
-
-    // justify the text
-    switch (_justify) {
-    case otk::Style::RightJustify:
-      x += max_length - length;
-      break;
-    case otk::Style::CenterJustify:
-      x += (max_length - length) / 2;
-      break;
-    case otk::Style::LeftJustify:
-      break;
+      do {
+        t.resize(text_len);
+        length = _font->measureString(t);
+      } while (length > max_length && text_len-- > 0);
+
+      // justify the text
+      switch (_justify) {
+      case otk::RenderStyle::RightJustify:
+        x += max_length - length;
+        break;
+      case otk::RenderStyle::CenterJustify:
+        x += (max_length - length) / 2;
+        break;
+      case otk::RenderStyle::LeftJustify:
+        break;
+      }
     }
-  }
 
-  _font->drawString(_xftdraw, x, 0, *_text_color, t);
+    otk::display->renderControl(_screen)->drawString
+      (*_surface, *_font, x, 0, *_text_color, t);
+  }
 }
 
 
-void OBLabelWidget::adjust()
+void LabelWidget::adjust()
 {
-  // XXX: adjust shit
+  // nothing to adjust. no children.
 }
 
 }
This page took 0.031985 seconds and 4 git commands to generate.