- resource.cache_max = 200;
- if (XrmGetResource(database, "session.cacheMax", "Session.CacheMax",
- &value_type, &value) &&
- sscanf(value.addr, "%lu", &long_value) == 1) {
- resource.cache_max = long_value;
- }
-}
-
-
-void Blackbox::load_rc(BScreen *screen) {
- XrmDatabase database = (XrmDatabase) 0;
-
- database = XrmGetFileDatabase(rc_file.c_str());
-
- XrmValue value;
- char *value_type, name_lookup[1024], class_lookup[1024];
- int screen_number = screen->getScreenNumber();
- int int_value;
-
- sprintf(name_lookup, "session.screen%d.fullMaximization", screen_number);
- sprintf(class_lookup, "Session.Screen%d.FullMaximization", screen_number);
- screen->saveFullMax(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveFullMax(True);
- }
-
- sprintf(name_lookup, "session.screen%d.focusNewWindows", screen_number);
- sprintf(class_lookup, "Session.Screen%d.FocusNewWindows", screen_number);
- screen->saveFocusNew(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveFocusNew(True);
- }
-
- sprintf(name_lookup, "session.screen%d.focusLastWindow", screen_number);
- sprintf(class_lookup, "Session.Screen%d.focusLastWindow", screen_number);
- screen->saveFocusLast(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveFocusLast(True);
- }
-
- sprintf(name_lookup, "session.screen%d.rowPlacementDirection",
- screen_number);
- sprintf(class_lookup, "Session.Screen%d.RowPlacementDirection",
- screen_number);
- screen->saveRowPlacementDirection(BScreen::LeftRight);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "righttoleft", value.size)) {
- screen->saveRowPlacementDirection(BScreen::RightLeft);
- }
-
- sprintf(name_lookup, "session.screen%d.colPlacementDirection",
- screen_number);
- sprintf(class_lookup, "Session.Screen%d.ColPlacementDirection",
- screen_number);
- screen->saveColPlacementDirection(BScreen::TopBottom);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "bottomtotop", value.size)) {
- screen->saveColPlacementDirection(BScreen::BottomTop);
- }
-
- sprintf(name_lookup, "session.screen%d.workspaces", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Workspaces", screen_number);
- screen->saveWorkspaces(1);
- if (XrmGetResource(database, name_lookup, class_lookup,
- &value_type, &value) &&
- sscanf(value.addr, "%d", &int_value) == 1 &&
- int_value > 0 && int_value < 128) {
- screen->saveWorkspaces(int_value);
- }
-
- sprintf(name_lookup, "session.screen%d.toolbar.widthPercent",
- screen_number);
- sprintf(class_lookup, "Session.Screen%d.Toolbar.WidthPercent",
- screen_number);
- screen->saveToolbarWidthPercent(66);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- sscanf(value.addr, "%d", &int_value) == 1 &&
- int_value > 0 && int_value <= 100) {
- screen->saveToolbarWidthPercent(int_value);
- }
-
- sprintf(name_lookup, "session.screen%d.toolbar.placement", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Toolbar.Placement", screen_number);
- screen->saveToolbarPlacement(Toolbar::BottomCenter);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- if (! strncasecmp(value.addr, "TopLeft", value.size))
- screen->saveToolbarPlacement(Toolbar::TopLeft);
- else if (! strncasecmp(value.addr, "BottomLeft", value.size))
- screen->saveToolbarPlacement(Toolbar::BottomLeft);
- else if (! strncasecmp(value.addr, "TopCenter", value.size))
- screen->saveToolbarPlacement(Toolbar::TopCenter);
- else if (! strncasecmp(value.addr, "TopRight", value.size))
- screen->saveToolbarPlacement(Toolbar::TopRight);
- else if (! strncasecmp(value.addr, "BottomRight", value.size))
- screen->saveToolbarPlacement(Toolbar::BottomRight);
- }
- screen->removeWorkspaceNames();
-
- sprintf(name_lookup, "session.screen%d.workspaceNames", screen_number);
- sprintf(class_lookup, "Session.Screen%d.WorkspaceNames", screen_number);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- string search = value.addr;
- string::const_iterator it = search.begin(),
- end = search.end();
- while (1) {
- string::const_iterator tmp = it; // current string.begin()
- it = std::find(tmp, end, ','); // look for comma between tmp and end
- screen->addWorkspaceName(string(tmp, it)); // string = search[tmp:it]
- if (it == end) break;
- ++it;
- }
- }
-
- sprintf(name_lookup, "session.screen%d.toolbar.onTop", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Toolbar.OnTop", screen_number);
- screen->saveToolbarOnTop(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveToolbarOnTop(True);
- }
-
- sprintf(name_lookup, "session.screen%d.toolbar.autoHide", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Toolbar.autoHide", screen_number);
- screen->saveToolbarAutoHide(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveToolbarAutoHide(True);
- }
-
- sprintf(name_lookup, "session.screen%d.focusModel", screen_number);
- sprintf(class_lookup, "Session.Screen%d.FocusModel", screen_number);
- screen->saveSloppyFocus(True);
- screen->saveAutoRaise(False);
- screen->saveClickRaise(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- string fmodel = value.addr;
-
- if (fmodel.find("ClickToFocus") != string::npos) {
- screen->saveSloppyFocus(False);
- } else {
- // must be sloppy
-
- if (fmodel.find("AutoRaise") != string::npos)
- screen->saveAutoRaise(True);
- if (fmodel.find("ClickRaise") != string::npos)
- screen->saveClickRaise(True);
- }
- }
-
- sprintf(name_lookup, "session.screen%d.windowPlacement", screen_number);
- sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number);
- screen->savePlacementPolicy(BScreen::RowSmartPlacement);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- if (! strncasecmp(value.addr, "RowSmartPlacement", value.size))
- /* pass */;
- else if (! strncasecmp(value.addr, "ColSmartPlacement", value.size))
- screen->savePlacementPolicy(BScreen::ColSmartPlacement);
- else if (! strncasecmp(value.addr, "CascadePlacement", value.size))
- screen->savePlacementPolicy(BScreen::CascadePlacement);
- }
-
- sprintf(name_lookup, "session.screen%d.slit.placement", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Slit.Placement", screen_number);
- screen->saveSlitPlacement(Slit::CenterRight);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- if (! strncasecmp(value.addr, "TopLeft", value.size))
- screen->saveSlitPlacement(Slit::TopLeft);
- else if (! strncasecmp(value.addr, "CenterLeft", value.size))
- screen->saveSlitPlacement(Slit::CenterLeft);
- else if (! strncasecmp(value.addr, "BottomLeft", value.size))
- screen->saveSlitPlacement(Slit::BottomLeft);
- else if (! strncasecmp(value.addr, "TopCenter", value.size))
- screen->saveSlitPlacement(Slit::TopCenter);
- else if (! strncasecmp(value.addr, "BottomCenter", value.size))
- screen->saveSlitPlacement(Slit::BottomCenter);
- else if (! strncasecmp(value.addr, "TopRight", value.size))
- screen->saveSlitPlacement(Slit::TopRight);
- else if (! strncasecmp(value.addr, "BottomRight", value.size))
- screen->saveSlitPlacement(Slit::BottomRight);
- }
-
- sprintf(name_lookup, "session.screen%d.slit.direction", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number);
- screen->saveSlitDirection(Slit::Vertical);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "Horizontal", value.size)) {
- screen->saveSlitDirection(Slit::Horizontal);
- }
-
- sprintf(name_lookup, "session.screen%d.slit.onTop", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Slit.OnTop", screen_number);
- screen->saveSlitOnTop(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "True", value.size)) {
- screen->saveSlitOnTop(True);
- }
-
- sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number);
- sprintf(class_lookup, "Session.Screen%d.Slit.AutoHide", screen_number);
- screen->saveSlitAutoHide(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- ! strncasecmp(value.addr, "true", value.size)) {
- screen->saveSlitAutoHide(True);
- }
-
-#ifdef HAVE_STRFTIME
- sprintf(name_lookup, "session.screen%d.strftimeFormat", screen_number);
- sprintf(class_lookup, "Session.Screen%d.StrftimeFormat", screen_number);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- screen->saveStrftimeFormat(value.addr);
- } else {
- screen->saveStrftimeFormat("%I:%M %p");
- }
-#else // HAVE_STRFTIME
- sprintf(name_lookup, "session.screen%d.dateFormat", screen_number);
- sprintf(class_lookup, "Session.Screen%d.DateFormat", screen_number);
- screen->saveDateFormat(B_AmericanDate);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value)) {
- if (! strncasecmp(value.addr, "european", value.size))
- screen->saveDateFormat(B_EuropeanDate);
- }
-
- sprintf(name_lookup, "session.screen%d.clockFormat", screen_number);
- sprintf(class_lookup, "Session.Screen%d.ClockFormat", screen_number);
- screen->saveClock24Hour(False);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- sscanf(value.addr, "%d", &int_value) == 1 && int_value == 24) {
- screen->saveClock24Hour(True);
- }
-#endif // HAVE_STRFTIME
-
- sprintf(name_lookup, "session.screen%d.edgeSnapThreshold", screen_number);
- sprintf(class_lookup, "Session.Screen%d.EdgeSnapThreshold", screen_number);
- if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
- &value) &&
- sscanf(value.addr, "%d", &int_value) == 1) {
- screen->saveEdgeSnapThreshold(int_value);
- }
-
- screen->saveImageDither(True);
- if (XrmGetResource(database, "session.imageDither", "Session.ImageDither",
- &value_type, &value) &&
- ! strncasecmp("false", value.addr, value.size)) {
- screen->saveImageDither(False);
- }
-
- screen->saveOpaqueMove(False);
- if (XrmGetResource(database, "session.opaqueMove", "Session.OpaqueMove",
- &value_type, &value) &&
- ! strncasecmp("true", value.addr, value.size)) {
- screen->saveOpaqueMove(True);
- }
-
- XrmDestroyDatabase(database);
-}
-
-
-void Blackbox::reload_rc(void) {
- load_rc();
- reconfigure();