void MotifUI::SetDefaultResources(const Widget, const String *resources) { XrmDatabase rdb = NULL; int i; rdb = XrmGetStringDatabase(""); i = 0; while (resources[i]) { char *buf = new char[1000]; sprintf(buf, "%s%s", _name, resources[i]); XrmPutLineResource(&rdb, buf); i++; delete [] buf; } if (rdb) { XrmMergeDatabases(XtDatabase(display), &rdb); XrmSetDatabase(display, rdb); } }
int read_extra_resources(char *data_in) /* * Read in the data-specific resource file. */ { char fname[128]; int found = 0; int ok = 1; FILE *fp; static char *suffix = ".resources"; if (data_in != "" && strcmp(data_in, "stdin") != 0) { (void) strcpy(fname, data_in); (void) strcat(fname, suffix); if ( (fp = fopen(fname,"r")) != NULL) found = 1; } if (found) { XrmDatabase newdb; if ( (newdb = (XrmDatabase) XrmGetFileDatabase(fname)) != NULL ) { XrmDatabase dispdb; dispdb = XrmGetDatabase(display); XrmMergeDatabases(newdb, &dispdb); XrmSetDatabase(display, dispdb); } else { ok = 0; fprintf(stderr, "read_extra_resources: problem reading data-specific resource file\n"); exit(0); } /* * Close the data file */ if (fclose(fp) == EOF) fprintf(stderr, "read_extra_resources: error in fclose"); } return(ok); }
void theme_init(Display *display) { char b[1024], *tr; char *p, *q; XrmDatabase themedb, olddb; XrmValue vr; sprintf(b, "%s/theme", siag_basedir); themedb = XrmGetFileDatabase(b); if (!themedb) { /* use kde2 as default */ sprintf(b, "%s/common/themes/theme.kde2", datadir); themedb = XrmGetFileDatabase(b); } if (themedb) { olddb = XrmGetDatabase(display); XrmMergeDatabases(themedb, &olddb); XrmSetDatabase(display, olddb); if (XrmGetResource(olddb, "PIXPATH", XtNstring, &tr, &vr)) { strcpy(b, "PIXPATH="); p = b+strlen(b); q = vr.addr; while (*q) { if (q[0] == '.' && q[1] == '.' && q[2] == '.') { strcpy(p, datadir); p += strlen(p); q += 2; } else { *p++ = *q; } q++; } *p = '\0'; putenv(MwStrdup(b)); } if (XrmGetResource(olddb, "XAWM_THEME", XtNstring, &tr, &vr)) { sprintf(b, "XAWM_THEME=%s", vr.addr); putenv(MwStrdup(b)); } } }
XrmDatabase XtScreenDatabase( Screen *screen) { int scrno; Bool doing_def; XrmDatabase db, olddb; XtPerDisplay pd; Status do_fallback; char *scr_resources; Display *dpy = DisplayOfScreen(screen); DPY_TO_APPCON(dpy); LOCK_APP(app); LOCK_PROCESS; if (screen == DefaultScreenOfDisplay(dpy)) { scrno = DefaultScreen(dpy); doing_def = True; } else { scrno = XScreenNumberOfScreen(screen); doing_def = False; } pd = _XtGetPerDisplay(dpy); if ((db = pd->per_screen_db[scrno])) { UNLOCK_PROCESS; UNLOCK_APP(app); return (doing_def ? XrmGetDatabase(dpy) : db); } scr_resources = XScreenResourceString(screen); if (ScreenCount(dpy) == 1) { db = pd->cmd_db; pd->cmd_db = NULL; } else { db = CopyDB(pd->cmd_db); } { /* Environment defaults */ char filenamebuf[PATH_MAX]; char *filename; if (!(filename = getenv("XENVIRONMENT"))) { int len; #ifdef __MINGW32__ const char *slashDotXdefaultsDash = "/Xdefaults-"; #else const char *slashDotXdefaultsDash = "/.Xdefaults-"; #endif (void) GetRootDirName(filename = filenamebuf, PATH_MAX - strlen (slashDotXdefaultsDash) - 1); (void) strcat(filename, slashDotXdefaultsDash); len = strlen(filename); GetHostname (filename+len, PATH_MAX-len); } (void)XrmCombineFileDatabase(filename, &db, False); } if (scr_resources) { /* Screen defaults */ XrmCombineDatabase(XrmGetStringDatabase(scr_resources), &db, False); XFree(scr_resources); } /* Server or host defaults */ if (!pd->server_db) CombineUserDefaults(dpy, &db); else { (void) XrmCombineDatabase(pd->server_db, &db, False); pd->server_db = NULL; } if (!db) db = XrmGetStringDatabase(""); pd->per_screen_db[scrno] = db; olddb = XrmGetDatabase(dpy); /* set database now, for XtResolvePathname to use */ XrmSetDatabase(dpy, db); CombineAppUserDefaults(dpy, &db); do_fallback = 1; { /* System app-defaults */ char *filename; if ((filename = XtResolvePathname(dpy, "app-defaults", NULL, NULL, NULL, NULL, 0, NULL))) { do_fallback = !XrmCombineFileDatabase(filename, &db, False); XtFree(filename); } } /* now restore old database, if need be */ if (!doing_def) XrmSetDatabase(dpy, olddb); if (do_fallback && pd->appContext->fallback_resources) { /* Fallback defaults */ XrmDatabase fdb = NULL; String *res; for (res = pd->appContext->fallback_resources; *res; res++) XrmPutLineResource(&fdb, *res); (void)XrmCombineDatabase(fdb, &db, False); } UNLOCK_PROCESS; UNLOCK_APP(app); return db; }
void conf_init(void) { init_default_values(); gboolean keyoption = FALSE; Display *dpy = gdk_x11_display_get_xdisplay(gdk_display_get_default()); XrmInitialize(); char basename[12] = "/.Xdefaults"; char *filename = strcat(getpwuid(getuid())->pw_dir, basename); XrmSetDatabase(dpy, XrmGetFileDatabase(filename)); char *op; int i; Option o; for (i = 0; i < OPTION_COUNT; i++) { o = options[i]; if ((op = XGetDefault(dpy, "stjerm", o.long_name))) read_value(o.long_name, op); } char color[8]; for (i = 0; i < 16; i++) { sprintf(color, "color%d", i); if ((op = XGetDefault(dpy, "stjerm", color))) read_value(color, op); } for (i = 1; i < sargc; i++) { if (sargv != NULL) { if (!strcmp(sargv[i], "--help")) { print_help(); exit(1); } else if (!strcmp(sargv[i], "--info")) { print_info(); exit(1); } else if (!strcmp("--toggle", sargv[i])) { kill(get_stjerm_pid(), SIGUSR1); exit(1); } else if (!strcmp("--version", sargv[i]) || !strcmp("-v", sargv[i])){ print_version(); exit(1); } } if (i + 1>= sargc) break; read_value(sargv[i], sargv[i + 1]); } if (keyoption == FALSE && _key == 0) { printf("Hint: You started stjerm without specifying a shortcut key\n" " To show/hide stjerm run stjerm with the toggle option\n" " like this: stjerm --toggle"); } struct stat st; if (stat(_shell, &st) != 0) { fprintf(stderr, "ERROR: The shell '%s' can't be opened\n", _shell); exit(1); } if (_lines < 0) { fprintf(stderr, "ERROR: A scrollback line count < 0 is not allowed\n"); exit(1); } if (keyoption == TRUE && _key == 0) { fprintf(stderr, "ERROR: Wrong shortcut key is defined\n"); exit(1); } if (read_colors > 0 && read_colors < 16) { fprintf(stderr, "ERROR: Read only %d colors, not 16\n" "Specify a complete color palette\n", read_colors); exit(1); } signal(SIGUSR1, (__sighandler_t) mainwindow_toggle); int scrw = gdk_screen_get_width(gdk_screen_get_default()); int scrh = gdk_screen_get_height(gdk_screen_get_default()); if (_pos == POS_TOP) { _posx = (scrw - _width) / 2; _posy = 0; } else if (_pos == POS_BOTTOM) { _posx = (scrw - _width) / 2; _posy = scrh - _height; } else if (_pos == POS_LEFT) { _posx = 0; _posy = (scrh - _height) / 2; } else if (_pos == POS_RIGHT) { _posx = scrw - _width; _posy = (scrh - _height) / 2; } else if (_pos == POS_TOPLEFT) { _posx = 0; _posy = 0; } else if (_pos == POS_TOPRIGHT) { _posx = scrw - _width; _posy = 0; } else if (_pos == POS_BOTTOMLEFT) { _posx = 0; _posy = scrh - _height; } else if (_pos == POS_BOTTOMRIGHT) { _posx = scrw - _width; _posy = scrh - _height; } }