From 35cf32850ef01877fc9fb528a42c051e1c7e1817 Mon Sep 17 00:00:00 2001 From: fluxgen Date: Tue, 29 Oct 2002 16:09:37 +0000 Subject: function name change, changed to FbTk Font --- src/Toolbar.cc | 290 ++++++++++++++++++--------------------------------------- 1 file changed, 91 insertions(+), 199 deletions(-) diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 010198e..e4d6b1d 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Toolbar.cc,v 1.36 2002/10/25 21:05:01 fluxgen Exp $ +// $Id: Toolbar.cc,v 1.37 2002/10/29 16:09:37 fluxgen Exp $ #include "Toolbar.hh" @@ -75,12 +75,8 @@ do_auto_hide(scrn->doToolbarAutoHide()), screen(scrn), image_ctrl(scrn->getImageControl()), clock_timer(this), // get the clock updating every minute +hide_timer(&hide_handler), iconbar(0) { - - - - fluxbox = Fluxbox::instance(); - timeval delay; delay.tv_sec = 1; delay.tv_usec = 0; @@ -88,15 +84,14 @@ iconbar(0) { clock_timer.start(); hide_handler.toolbar = this; - hide_timer = new BTimer(&hide_handler); - hide_timer->setTimeout(fluxbox->getAutoRaiseDelay()); - hide_timer->fireOnce(true); + hide_timer.setTimeout(Fluxbox::instance()->getAutoRaiseDelay()); + hide_timer.fireOnce(true); frame.grab_x = frame.grab_y = 0; toolbarmenu = new Toolbarmenu(this); - display = fluxbox->getXDisplay(); + display = BaseDisplay::getXDisplay(); XSetWindowAttributes attrib; unsigned long create_mask = CWBackPixmap | CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask; @@ -109,6 +104,8 @@ iconbar(0) { attrib.event_mask = ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask; + Fluxbox * const fluxbox = Fluxbox::instance(); + frame.window = XCreateWindow(display, screen->getRootWindow(), 0, 0, 1, 1, 0, screen->getDepth(), InputOutput, screen->getVisual(), @@ -180,7 +177,7 @@ Toolbar::~Toolbar() { if (frame.button) image_ctrl->removeImage(frame.button); if (frame.pbutton) image_ctrl->removeImage(frame.pbutton); - + Fluxbox * const fluxbox = Fluxbox::instance(); fluxbox->removeToolbarSearch(frame.window); fluxbox->removeToolbarSearch(frame.workspace_label); @@ -197,7 +194,6 @@ Toolbar::~Toolbar() { XDestroyWindow(display, frame.window); - delete hide_timer; delete toolbarmenu; if (iconbar) delete iconbar; @@ -246,14 +242,7 @@ void Toolbar::reconfigure() { frame.width = screen->getWidth() * screen->getToolbarWidthPercent() / 100; #endif // XINERAMA - I18n *i18n = I18n::instance(); - - if (i18n->multibyte()) - frame.height = - screen->getToolbarStyle()->font.set_extents->max_ink_extent.height; - else - frame.height = screen->getToolbarStyle()->font.fontstruct->ascent + - screen->getToolbarStyle()->font.fontstruct->descent; + frame.height = screen->getToolbarStyle()->font.height(); frame.button_w = frame.height; frame.height += 2; frame.label_h = frame.height; @@ -310,8 +299,8 @@ void Toolbar::reconfigure() { break; } - #ifdef HAVE_STRFTIME - time_t ttmp = time(NULL); +#ifdef HAVE_STRFTIME + time_t ttmp = time(0); struct tm *tt = 0; if (ttmp != -1) { @@ -325,15 +314,7 @@ void Toolbar::reconfigure() { memset(time_string, '0', len); *(time_string + len) = '\0'; - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, time_string, len, - &ink, &logical); - frame.clock_w = logical.width; - } else - frame.clock_w = XTextWidth(screen->getToolbarStyle()->font.fontstruct, - time_string, len); - + frame.clock_w = screen->getToolbarStyle()->font.textWidth(time_string, len); frame.clock_w += (frame.bevel_w * 4); delete [] time_string; @@ -341,35 +322,26 @@ void Toolbar::reconfigure() { frame.clock_w = 0; } else frame.clock_w = 0; - #else // !HAVE_STRFTIME +#else // !HAVE_STRFTIME - frame.clock_w = - XTextWidth(screen->getToolbarStyle()->font.fontstruct, - i18n->getMessage( + frame.clock_w = screen->getToolbarStyle()->font.textWidth( + i18n->getMessage( ToolbarSet, ToolbarNoStrftimeLength, "00:00000"), strlen(i18n->getMessage( ToolbarSet, ToolbarNoStrftimeLength, "00:00000"))) + (frame.bevel_w * 4); - #endif // HAVE_STRFTIME +#endif // HAVE_STRFTIME unsigned int i; unsigned int w = 0; frame.workspace_label_w = 0; for (i = 0; i < screen->getCount(); i++) { - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - screen->getWorkspace(i)->name().c_str(), - screen->getWorkspace(i)->name().size(), - &ink, &logical); - w = logical.width; - } else - w = XTextWidth(screen->getToolbarStyle()->font.fontstruct, - screen->getWorkspace(i)->name().c_str(), - screen->getWorkspace(i)->name().size()); + w = screen->getToolbarStyle()->font.textWidth( + screen->getWorkspace(i)->name().c_str(), + screen->getWorkspace(i)->name().size()); w += (frame.bevel_w * 4); @@ -578,11 +550,11 @@ void Toolbar::checkClock(bool redraw, bool date) { if (redraw) { XClearWindow(display, frame.clock); - #ifdef HAVE_STRFTIME +#ifdef HAVE_STRFTIME char t[1024]; if (! strftime(t, 1024, screen->getStrftimeFormat(), tt)) return; - #else // !HAVE_STRFTIME +#else // !HAVE_STRFTIME char t[9]; if (date) { // format the date... with special consideration for y2k ;) @@ -602,52 +574,39 @@ void Toolbar::checkClock(bool redraw, bool date) { (tt->tm_year >= 100) ? tt->tm_year - 100 : tt->tm_year); } } else { - if (screen->isClock24Hour()) - sprintf(t, - i18n->getMessage( - ToolbarSet, ToolbarNoStrftimeTimeFormat24, - " %02d:%02d "), - frame.hour, frame.minute); - else - sprintf(t, - i18n->getMessage( - ToolbarSet, ToolbarNoStrftimeTimeFormat12, - "%02d:%02d %sm"), - ((frame.hour > 12) ? frame.hour - 12 : - ((frame.hour == 0) ? 12 : frame.hour)), frame.minute, - ((frame.hour >= 12) ? - i18n->getMessage( - ToolbarSet, ToolbarNoStrftimeTimeFormatP, - "p") : - i18n->getMessage( - ToolbarSet, ToolbarNoStrftimeTimeFormatA, + if (screen->isClock24Hour()) { + sprintf(t, + i18n->getMessage( + ToolbarSet, ToolbarNoStrftimeTimeFormat24, + " %02d:%02d "), + frame.hour, frame.minute); + } else { + sprintf(t, + i18n->getMessage( + ToolbarSet, ToolbarNoStrftimeTimeFormat12, + "%02d:%02d %sm"), + ((frame.hour > 12) ? frame.hour - 12 : + ((frame.hour == 0) ? 12 : frame.hour)), frame.minute, + ((frame.hour >= 12) ? + i18n->getMessage( + ToolbarSet, ToolbarNoStrftimeTimeFormatP, + "p") : + i18n->getMessage( + ToolbarSet, ToolbarNoStrftimeTimeFormatA, "a"))); + } } - #endif // HAVE_STRFTIME +#endif // HAVE_STRFTIME int dx = (frame.bevel_w * 2), dlen = strlen(t); unsigned int l; - I18n *i18n = I18n::instance(); - - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - t, dlen, &ink, &logical); - l = logical.width; - } else - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, t, dlen); + l = screen->getToolbarStyle()->font.textWidth(t, dlen); l += (frame.bevel_w * 4); if (l > frame.clock_w) { for (; dlen >= 0; dlen--) { - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - t, dlen, &ink, &logical); - l = logical.width; - } else - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, t, dlen); + l = screen->getToolbarStyle()->font.textWidth(t, dlen); l += (frame.bevel_w * 4); if (l < frame.clock_w) @@ -656,7 +615,7 @@ void Toolbar::checkClock(bool redraw, bool date) { } - switch (screen->getToolbarStyle()->font.justify) { + switch (screen->getToolbarStyle()->justify) { case DrawUtil::Font::RIGHT: dx += frame.clock_w - l; break; @@ -667,17 +626,12 @@ void Toolbar::checkClock(bool redraw, bool date) { break; } - if (i18n->multibyte()) { - XmbDrawString(display, frame.clock, - screen->getToolbarStyle()->font.set, - screen->getToolbarStyle()->c_text_gc, dx, 1 - - screen->getToolbarStyle()->font.set_extents->max_ink_extent.y, - t, dlen); - } else { - XDrawString(display, frame.clock, - screen->getToolbarStyle()->c_text_gc, dx, - screen->getToolbarStyle()->font.fontstruct->ascent + 1, t, dlen); - } + screen->getToolbarStyle()->font.drawText( + frame.clock, + screen->getScreenNumber(), + screen->getToolbarStyle()->c_text_gc, + t, dlen, + dx, 1 + screen->getToolbarStyle()->font.ascent()); } } @@ -693,27 +647,14 @@ void Toolbar::redrawWindowLabel(bool redraw) { int dx = (frame.bevel_w * 2), dlen = foc->getTitle().size(); unsigned int l; - I18n *i18n = I18n::instance(); - - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, foc->getTitle().c_str(), dlen, - &ink, &logical); - l = logical.width; - } else - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle().c_str(), dlen); + + l = screen->getToolbarStyle()->font.textWidth(foc->getTitle().c_str(), dlen); l += (frame.bevel_w * 4); if (l > frame.window_label_w) { for (; dlen >= 0; dlen--) { - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - foc->getTitle().c_str(), dlen, &ink, &logical); - l = logical.width; - } else - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, foc->getTitle().c_str(), dlen); + l = screen->getToolbarStyle()->font.textWidth(foc->getTitle().c_str(), dlen); l += (frame.bevel_w * 4); @@ -721,7 +662,7 @@ void Toolbar::redrawWindowLabel(bool redraw) { break; } } - switch (screen->getToolbarStyle()->font.justify) { + switch (screen->getToolbarStyle()->justify) { case DrawUtil::Font::RIGHT: dx += frame.window_label_w - l; break; @@ -732,18 +673,12 @@ void Toolbar::redrawWindowLabel(bool redraw) { default: break; } - - if (i18n->multibyte()) - XmbDrawString(display, frame.window_label, - screen->getToolbarStyle()->font.set, - screen->getToolbarStyle()->w_text_gc, dx, 1 - - screen->getToolbarStyle()->font.set_extents->max_ink_extent.y, - foc->getTitle().c_str(), dlen); - else - XDrawString(display, frame.window_label, - screen->getToolbarStyle()->w_text_gc, dx, - screen->getToolbarStyle()->font.fontstruct->ascent + 1, - foc->getTitle().c_str(), dlen); + screen->getToolbarStyle()->font.drawText( + frame.window_label, + screen->getScreenNumber(), + screen->getToolbarStyle()->w_text_gc, + foc->getTitle().c_str(), dlen, + dx, 1 + screen->getToolbarStyle()->font.ascent()); } else XClearWindow(display, frame.window_label); } @@ -754,43 +689,19 @@ void Toolbar::redrawWorkspaceLabel(bool redraw) { if (redraw) XClearWindow(display, frame.workspace_label); - /* DrawString( - display, frame.label, screen->getToolbarStyle()->l_text_gc, - &screen->getToolbarStyle()->font, - frame.workspace_label_w, frame.width, - frame.bevel_w, - const_cast(screen->getCurrentWorkspace()->name().c_str()));*/ - + int dx = (frame.bevel_w * 2), dlen = screen->getCurrentWorkspace()->name().size(); unsigned int l; - I18n *i18n = I18n::instance(); - - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - screen->getCurrentWorkspace()->name().c_str(), dlen, - &ink, &logical); - l = logical.width; - } else - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, - screen->getCurrentWorkspace()->name().c_str(), dlen); + l = screen->getToolbarStyle()->font.textWidth(screen->getCurrentWorkspace()->name().c_str(), dlen); l += (frame.bevel_w * 4); if (l > frame.workspace_label_w) { for (; dlen >= 0; dlen--) { - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - screen->getCurrentWorkspace()->name().c_str(), dlen, - &ink, &logical); - l = logical.width; - } else { - l = XTextWidth(screen->getToolbarStyle()->font.fontstruct, - screen->getCurrentWorkspace()->name().c_str(), dlen); - } + l = screen->getToolbarStyle()->font.textWidth( + screen->getCurrentWorkspace()->name().c_str(), dlen); l += (frame.bevel_w * 4); @@ -799,7 +710,7 @@ void Toolbar::redrawWorkspaceLabel(bool redraw) { } } - switch (screen->getToolbarStyle()->font.justify) { + switch (screen->getToolbarStyle()->justify) { case DrawUtil::Font::RIGHT: dx += frame.workspace_label_w - l; break; @@ -810,19 +721,13 @@ void Toolbar::redrawWorkspaceLabel(bool redraw) { default: break; } - - if (i18n->multibyte()) { - XmbDrawString(display, frame.workspace_label, - screen->getToolbarStyle()->font.set, - screen->getToolbarStyle()->l_text_gc, dx, 1 - - screen->getToolbarStyle()->font.set_extents->max_ink_extent.y, - (char *) screen->getCurrentWorkspace()->name().c_str(), dlen); - } else { - XDrawString(display, frame.workspace_label, - screen->getToolbarStyle()->l_text_gc, dx, - screen->getToolbarStyle()->font.fontstruct->ascent + 1, - (char *) screen->getCurrentWorkspace()->name().c_str(), dlen); - } + + screen->getToolbarStyle()->font.drawText( + frame.workspace_label, + screen->getScreenNumber(), + screen->getToolbarStyle()->l_text_gc, + screen->getCurrentWorkspace()->name().c_str(), dlen, + dx, 1 + screen->getToolbarStyle()->font.ascent()); } } @@ -907,7 +812,7 @@ void Toolbar::redrawPrevWindowButton(bool pressed, bool redraw) { pts[2].x = 0; pts[2].y = -4; XFillPolygon(display, frame.pwbutton, screen->getToolbarStyle()->b_pic_gc, - pts, 3, Convex, CoordModePrevious); + pts, 3, Convex, CoordModePrevious); } @@ -956,7 +861,7 @@ void Toolbar::edit() { RevertToPointerRoot : RevertToParent), CurrentTime); XClearWindow(display, frame.workspace_label); //clear workspace text - + Fluxbox * const fluxbox = Fluxbox::instance(); fluxbox->setNoFocus(true); if (fluxbox->getFocusedWindow()) //disable focus on current focused window fluxbox->getFocusedWindow()->setFocusFlag(false); @@ -1087,9 +992,11 @@ void Toolbar::enterNotifyEvent(XCrossingEvent *) { return; if (hidden) { - if (! hide_timer->isTiming()) hide_timer->start(); + if (! hide_timer.isTiming()) + hide_timer.start(); } else { - if (hide_timer->isTiming()) hide_timer->stop(); + if (hide_timer.isTiming()) + hide_timer.stop(); } } @@ -1098,9 +1005,9 @@ void Toolbar::leaveNotifyEvent(XCrossingEvent *) { return; if (hidden) { - if (hide_timer->isTiming()) hide_timer->stop(); + if (hide_timer.isTiming()) hide_timer.stop(); } else if (! toolbarmenu->isVisible()) { - if (! hide_timer->isTiming()) hide_timer->start(); + if (! hide_timer.isTiming()) hide_timer.start(); } } @@ -1131,7 +1038,7 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { editing = false; - + Fluxbox * const fluxbox = Fluxbox::instance(); fluxbox->setNoFocus(false); if (fluxbox->getFocusedWindow()) { fluxbox->getFocusedWindow()->setInputFocus(); @@ -1167,33 +1074,18 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { XClearWindow(display, frame.workspace_label); int l = new_workspace_name.size(), tw, x; - I18n *i18n = I18n::instance(); - - if (i18n->multibyte()) { - XRectangle ink, logical; - XmbTextExtents(screen->getToolbarStyle()->font.set, - new_workspace_name.c_str(), l, &ink, &logical); - tw = logical.width; - } else { - tw = XTextWidth(screen->getToolbarStyle()->font.fontstruct, - new_workspace_name.c_str(), l); - } - x = (frame.workspace_label_w - tw) / 2; + + tw = screen->getToolbarStyle()->font.textWidth(new_workspace_name.c_str(), l); + x = (frame.workspace_label_w - tw) / 2; if (x < (signed) frame.bevel_w) x = frame.bevel_w; + screen->getToolbarStyle()->font.drawText( + frame.workspace_label, + screen->getScreenNumber(), + screen->getWindowStyle()->l_text_focus_gc, + new_workspace_name.c_str(), l, + x, 1 + screen->getToolbarStyle()->font.ascent()); - if (i18n->multibyte()) { - XmbDrawString(display, frame.workspace_label, - screen->getToolbarStyle()->font.set, - screen->getWindowStyle()->l_text_focus_gc, x, 1 - - screen->getToolbarStyle()->font.set_extents->max_ink_extent.y, - new_workspace_name.c_str(), l); - } else { - XDrawString(display, frame.workspace_label, - screen->getWindowStyle()->l_text_focus_gc, x, - screen->getToolbarStyle()->font.fontstruct->ascent + 1, - new_workspace_name.c_str(), l); - } XDrawRectangle(display, frame.workspace_label, screen->getWindowStyle()->l_text_focus_gc, x + tw, 0, 1, frame.label_h - 1); -- cgit v0.11.2