// resource.cc for bbsload - an tool to display the load in X11. // // Copyright (c) 1998-1999 John Kennis, j.m.b.m.kennis@tue.nl // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // (See the included file COPYING / GPL-2.0) // //#include #include "resource.hh" #include "blackboxstyle.hh" Resource::Resource(ToolWindow * toolwindow): BaseResource(toolwindow) { frame.font = NULL; label.font = NULL; Load(); } Resource::~Resource() { Clean(); } void Resource::Clean() { if (label.font) XFreeFont(bbtool->dpy, label.font); if (frame.font) XFreeFont(bbtool->dpy, frame.font); // if (menu.font) // XFreeFont(bbtool->dpy, menu.font); } void Resource::LoadBBToolResource(void) { XrmValue value; char * value_type; if (XrmGetResource(resource_db, "bbapm.autoConfig", "Bbapm.Autoconfig", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) style.auto_config = True; else style.auto_config = False; } else { style.auto_config = False; } #ifdef DEBUG cerr << "style.autoconfig = " << style.auto_config << endl; #endif SizeAndPosition(); Frame(); Show(); #ifdef DEBUG cerr << "show.label = " << show.label << endl; #endif if (show.label) Label(); // if (show.label) LoadBar(); CheckSettings(); } void Resource::Frame() { XrmValue value; char * value_type; readDatabaseTexture("bbapm.frame", "Bbapm.Frame", BB_FRAME, "Toolbar", "slategrey", "darkslategrey", BImage_Raised | BImage_Gradient | BImage_Vertical | BImage_Bevel1, &frame.texture); if (XrmGetResource(resource_db, "bbapm.bevelWidth", "bbapm.BevelWidth", &value_type, &value)) { if (sscanf(value.addr, "%u", &frame.bevelWidth) != 1) frame.bevelWidth = 4; else if (frame.bevelWidth == 0) frame.bevelWidth = 4; } else if (XrmGetResource(resource_db, BB_BEVELWIDTH, "TitleFont", &value_type, &value)) { if (sscanf(value.addr, "%u", &frame.bevelWidth) != 1) frame.bevelWidth = 4; else if (frame.bevelWidth == 0) frame.bevelWidth = 4; } else frame.bevelWidth = 4; } void Resource::SizeAndPosition() { XrmValue value; char * value_type; unsigned int w, h; char positionstring[11]; if (!(bbtool->withdrawn)) { if (XrmGetResource(resource_db, "bbapm.withdrawn", "Bbapm.Withdrawn", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) bbtool->withdrawn = True; else bbtool->withdrawn = False; } else bbtool->withdrawn = False; } if (!(bbtool->shape)) { if (XrmGetResource(resource_db, "bbapm.shape", "Bbapm.Shape", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) bbtool->shape = True; else bbtool->shape = False; } else bbtool->shape = bbtool->withdrawn; } if (!(bbtool->position)) { if (!(XrmGetResource(resource_db, "bbapm.position", "Bbapm.Position", &value_type, &value))) { strncpy(positionstring, "-0-0", 5); } else { strncpy(positionstring, value.addr, strlen(value.addr) + 1); } } else { strncpy(positionstring, bbtool->position, strlen(bbtool->position) + 1); } position.mask = XParseGeometry(positionstring, &position.x, &position.y, &w, &h); if (!(position.mask & XValue)) position.x = 0; if (!(position.mask & YValue)) position.y = 0; /* * need this to compute the height */ const char * defaultFont = "-*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*"; if (frame.font) { XFreeFont(bbtool->dpy, frame.font); frame.font = 0; } if (XrmGetResource(resource_db, "bbapm.heightBy.font", "bbapm.heightBy.Font", &value_type, &value)) { if ((frame.font = XLoadQueryFont(bbtool->dpy, value.addr)) == NULL) { fprintf(stderr, " blackbox: couldn't load font '%s'\n" " ... reverting to default font.", value.addr); if ((frame.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } else if (XrmGetResource(resource_db, BB_FONT, "TitleFont", &value_type, &value)) { if ((frame.font = XLoadQueryFont(bbtool->dpy, value.addr)) == NULL) { fprintf(stderr, " blackbox: couldn't load font '%s'\n" " ... reverting to default font.", value.addr); if ((frame.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } else { if ((frame.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } void Resource::CheckSettings() { XrmValue value; char * value_type; if (XrmGetResource(resource_db, "bbapm.checkDelay", "Bbapm.CheckDelay", &value_type, &value)) { if (sscanf(value.addr, "%lu", &report.check_delay) != 1) report.check_delay = 5; else if (report.check_delay == 0) report.check_delay = 5; } else report.check_delay = 5; if (XrmGetResource(resource_db, "bbapm.raised", "Bbapm.Raised", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) bbtool->raised = True; else bbtool->raised = False; } else bbtool->raised = True; } void Resource::Label(void) { XrmValue value; char * value_type; /* * text-label resources */ if (XrmGetResource(resource_db, "bbapm.label.transparent", "Bbapm.label.Transparent", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) label.transparent = True; else label.transparent = False; } else label.transparent = False; readDatabaseTexture("bbapm.label", "Bbapm.Label", BB_LABEL, "Toolbar.Label", "slategrey", "darkslategrey", BImage_Sunken | BImage_Gradient | BImage_Vertical | BImage_Bevel1, &label.texture); if (show.label_percentage) { readDatabaseColor("bbapm.percentage.label.textColor", "Bbapm.Percentage.Label.TextColor", BB_LABEL_TEXTCOLOR, "Toolbar.TextColor", "LightGrey", &label.percentage_textColor); } if (show.label_time) { readDatabaseColor("bbapm.time.label.textColor", "Bbapm.Time.Label.TextColor", BB_LABEL_TEXTCOLOR, "Toolbar.TextColor", "LightGrey", &label.time_textColor); } readDatabaseColor("bbapm.seperator.textColor", "Bbapm.Seperator.TextColor", BB_LABEL_TEXTCOLOR, "Toolbar.TextColor", "LightGrey", &label.seperator_textColor); const char * defaultFont = "-*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*"; if (label.font) { XFreeFont(bbtool->dpy, label.font); label.font = 0; } if (XrmGetResource(resource_db, "bbapm.label.font", "Bbapm.Label.Font", &value_type, &value)) { if ((label.font = XLoadQueryFont(bbtool->dpy, value.addr)) == NULL) { fprintf(stderr, " blackbox: couldn't load font '%s'\n" " ... reverting to default font.", value.addr); if ((label.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } else if (XrmGetResource(resource_db, BB_FONT, "TitleFont", &value_type, &value)) { if ((label.font = XLoadQueryFont(bbtool->dpy, value.addr)) == NULL) { fprintf(stderr, " blackbox: couldn't load font '%s'\n" " ... reverting to default font.", value.addr); if ((label.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } else { if ((label.font = XLoadQueryFont(bbtool->dpy, defaultFont)) == NULL) { fprintf(stderr, "blackbox: couldn't load default font. please check to\n" "make sure the necessary font is installed '%s'\n", defaultFont); exit(2); } } } void Resource::Show() { XrmValue value; char * value_type; show.label = False; /* * what to show.resources */ if (XrmGetResource(resource_db, "bbapm.show.percentage.label", "Bbapm.Show.Percentage.Label", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) { show.label_percentage = True; show.label = True; } else show.label_percentage = False; } else show.label_percentage = False; if (XrmGetResource(resource_db, "bbapm.show.percentage.loadbar", "Bbapm.Show.Percentage.Loadbar", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) { show.percentage = True; } else show.percentage = False; } else show.percentage = False; if (XrmGetResource(resource_db, "bbapm.show.loading", "Bbapm.Show.Loading", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) { show.loading = True; show.label = True; } else show.loading = False; } else show.loading = False; if (XrmGetResource(resource_db, "bbapm.show.loading.time", "Bbapm.Show.Loading.Time", &value_type, &value)) { if (sscanf(value.addr, "%u", &show.loadingTime) != 1) { show.loadingTime = 1; } else show.loadingTime = 1; } else show.loadingTime = 1; if (XrmGetResource(resource_db, "bbapm.show.time.label", "Bbapm.Show.Time.label", &value_type, &value)) { if (!strncasecmp("true", value.addr, value.size)) { show.label_time = True; show.label = True; } else show.label_time = False; } else show.label_time = False; #ifdef DEBUG cerr << "Resource::Show() result: "<