void preferences_dialog_init (void) { // General preferences init_toggle ("echo_checkbutton", PREF_ECHO); init_toggle ("sneak_checkbutton", PREF_AUTO_SNEAK); init_toggle ("log_checkbutton", PREF_AUTO_LOG); init_spin ("text_buffer_size_spinbutton", PREF_TEXT_BUFFER_SIZE); init_spin ("command_size_spinbutton", PREF_COMMAND_SIZE); init_spin ("history_size_spinbutton", PREF_COMMAND_HISTORY_SIZE); init_entry ("script_prefix_entry", PREF_SCRIPT_PREFIX); // Colors init_color ("monster_text_box", PREF_MONSTER_TEXT_COLOR); init_color ("monster_base_box", PREF_MONSTER_BASE_COLOR); init_font ("monster_font_box", PREF_MONSTER_FONT); init_color ("title_text_box", PREF_TITLE_TEXT_COLOR); init_color ("title_base_box", PREF_TITLE_BASE_COLOR); init_font ("title_font_box", PREF_TITLE_FONT); init_color ("echo_text_box", PREF_ECHO_TEXT_COLOR); init_color ("echo_base_box", PREF_ECHO_BASE_COLOR); init_font ("echo_font_box", PREF_ECHO_FONT); init_color ("default_text_box", PREF_DEFAULT_TEXT_COLOR); init_color ("default_base_box", PREF_DEFAULT_BASE_COLOR); init_font ("default_font_box", PREF_DEFAULT_FONT); // Paths init_file ("script_path_filechooserbutton", PREF_SCRIPT_PATH); init_file ("log_path_filechooserbutton", PREF_LOG_PATH); }
static void * compass_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); XGCValues gcv; st->dpy = dpy; st->window = window; st->delay = get_integer_resource (st->dpy, "delay", "Integer"); st->dbuf = get_boolean_resource (st->dpy, "doubleBuffer", "Boolean"); # ifdef HAVE_JWXYZ /* Don't second-guess Quartz's double-buffering */ st->dbuf = False; # endif XGetWindowAttributes (st->dpy, st->window, &st->xgwa); st->size2 = MIN(st->xgwa.width, st->xgwa.height); if (st->xgwa.width > st->xgwa.height * 5 || /* goofy aspect ratio */ st->xgwa.height > st->xgwa.width * 5) st->size2 = MAX(st->xgwa.width, st->xgwa.height); { int max = 600; if (st->xgwa.width > 2560) max *= 2; /* Retina displays */ if (st->size2 > max) st->size2 = max; } st->size = (st->size2 / 2) * 0.8; st->x = st->xgwa.width/2; st->y = st->xgwa.height/2; if (st->dbuf) { #ifdef HAVE_DOUBLE_BUFFER_EXTENSION st->b = st->backb = xdbe_get_backbuffer (st->dpy, st->window, XdbeUndefined); #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ if (!st->b) { st->x = st->size2/2; st->y = st->size2/2; st->ba = XCreatePixmap (st->dpy, st->window, st->size2, st->size2, st->xgwa.depth); st->bb = XCreatePixmap (st->dpy, st->window, st->size2, st->size2, st->xgwa.depth); st->b = st->ba; } } else { st->b = st->window; } st->discs[0] = (struct disc *) calloc (1, sizeof (struct disc)); st->discs[1] = (struct disc *) calloc (1, sizeof (struct disc)); st->discs[2] = (struct disc *) calloc (1, sizeof (struct disc)); st->discs[3] = 0; gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "foreground", "Foreground"); gcv.line_width = MAX(2, (st->size/60)); gcv.join_style = JoinBevel; st->discs[0]->draw = draw_ticks; st->discs[0]->gc = XCreateGC (st->dpy, st->b, GCForeground|GCLineWidth|GCJoinStyle, &gcv); init_spin (st->discs[0]); gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "arrow2Foreground", "Foreground"); gcv.line_width = MAX(4, (st->size / 30)); st->discs[1]->draw = draw_thick_arrow; st->discs[1]->gc = XCreateGC (st->dpy, st->b, GCForeground|GCLineWidth, &gcv); init_spin (st->discs[1]); gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "arrow1Foreground", "Foreground"); gcv.line_width = MAX(4, (st->size / 30)); st->discs[2]->draw = draw_thin_arrow; st->discs[2]->gc = XCreateGC (st->dpy, st->b, GCForeground|GCLineWidth, &gcv); init_spin (st->discs[2]); gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "pointerForeground", "Foreground"); st->ptr_gc = XCreateGC (st->dpy, st->b, GCForeground|GCLineWidth, &gcv); gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "background", "Background"); st->erase_gc = XCreateGC (st->dpy, st->b, GCForeground, &gcv); if (st->ba) XFillRectangle (st->dpy, st->ba, st->erase_gc, 0, 0, st->size2, st->size2); if (st->bb) XFillRectangle (st->dpy, st->bb, st->erase_gc, 0, 0, st->size2, st->size2); return st; }