Assorted whitespace cleanup and typo fixes.
[haiku.git] / src / bin / WindowShade.cpp
blob1d2beface02904f57826266f8537d09040eb39b3
1 /*
2 * Copyright 2007-2011, Haiku Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
5 * Authors:
6 * François Revol, revol@free.fr
7 * Axel Dörfler, axeld@pinc-software.de
8 */
11 #include <getopt.h>
12 #include <stdio.h>
14 #include <Application.h>
15 #include <InterfaceDefs.h>
16 #include <String.h>
18 #include <private/interface/DecoratorPrivate.h>
21 using namespace BPrivate;
24 static int sColorWhich = -1;
25 static struct option const kLongOptions[] = {
26 {"activetab", required_argument, &sColorWhich, B_WINDOW_TAB_COLOR},
27 {"frame", required_argument, &sColorWhich, B_WINDOW_INACTIVE_TAB_COLOR}, //XXX:??
28 {"activeborder", required_argument, &sColorWhich, -1}, //XXX:??
29 {"inactiveborder", required_argument, &sColorWhich, -1}, //XXX:??
30 {"activetitle", required_argument, &sColorWhich, B_WINDOW_TEXT_COLOR},
31 {"inactivetitle", required_argument, &sColorWhich, B_WINDOW_INACTIVE_TEXT_COLOR},
32 //temporary stuff
33 // grep ' B_.*_COLOR' headers/os/interface/InterfaceDefs.h | awk '{ print "I(" substr(tolower($1),3) ", " $1 ")," }'
34 #define I(l,v) \
35 { #l, required_argument, &sColorWhich, v }, \
36 { #v, required_argument, &sColorWhich, v }
38 I(panel_background_color, B_PANEL_BACKGROUND_COLOR),
39 I(panel_text_color, B_PANEL_TEXT_COLOR),
40 I(document_background_color, B_DOCUMENT_BACKGROUND_COLOR),
41 I(document_text_color, B_DOCUMENT_TEXT_COLOR),
42 I(control_background_color, B_CONTROL_BACKGROUND_COLOR),
43 I(control_text_color, B_CONTROL_TEXT_COLOR),
44 I(control_border_color, B_CONTROL_BORDER_COLOR),
45 I(control_highlight_color, B_CONTROL_HIGHLIGHT_COLOR),
46 I(control_mark_color, B_CONTROL_MARK_COLOR)
47 I(navigation_base_color, B_NAVIGATION_BASE_COLOR),
48 I(navigation_pulse_color, B_NAVIGATION_PULSE_COLOR),
49 I(shine_color, B_SHINE_COLOR),
50 I(shadow_color, B_SHADOW_COLOR),
51 I(menu_background_color, B_MENU_BACKGROUND_COLOR),
52 I(menu_selected_background_color, B_MENU_SELECTED_BACKGROUND_COLOR),
53 I(menu_item_text_color, B_MENU_ITEM_TEXT_COLOR),
54 I(menu_selected_item_text_color, B_MENU_SELECTED_ITEM_TEXT_COLOR),
55 I(menu_selected_border_color, B_MENU_SELECTED_BORDER_COLOR),
56 I(list_background_color, B_LIST_BACKGROUND_COLOR),
57 I(list_selected_background_color, B_LIST_SELECTED_BACKGROUND_COLOR),
58 I(list_item_text_color, B_LIST_ITEM_TEXT_COLOR),
59 I(list_selected_item_text_color, B_LIST_SELECTED_ITEM_TEXT_COLOR),
60 I(scroll_bar_thumb_color, B_SCROLL_BAR_THUMB_COLOR),
61 I(tooltip_background_color, B_TOOL_TIP_BACKGROUND_COLOR),
62 I(tooltip_text_color, B_TOOL_TIP_TEXT_COLOR),
63 I(success_color, B_SUCCESS_COLOR),
64 I(failure_color, B_FAILURE_COLOR),
65 I(keyboard_navigation_color, B_KEYBOARD_NAVIGATION_COLOR),
66 I(menu_selection_background_color, B_MENU_SELECTION_BACKGROUND_COLOR),
67 I(desktop_color, B_DESKTOP_COLOR),
68 I(window_tab_color, B_WINDOW_TAB_COLOR),
69 I(window_text_color, B_WINDOW_TEXT_COLOR),
70 I(window_inactive_tab_color, B_WINDOW_INACTIVE_TAB_COLOR),
71 I(window_inactive_text_color, B_WINDOW_INACTIVE_TEXT_COLOR),
72 I(window_border_color, B_WINDOW_BORDER_COLOR),
73 I(window_inactive_border_color, B_WINDOW_INACTIVE_BORDER_COLOR),
74 {"sum", required_argument, 0, 's'},
75 {"refresh", no_argument, 0, 'r'},
76 {"help", no_argument, 0, 'h'},
77 {NULL}
81 extern const char *__progname;
82 static const char *sProgramName = __progname;
85 void
86 usage(void)
88 printf("%s [-sum md5sum] [colID colspec] [-refresh]\n", sProgramName);
89 printf("Tweak the default window decorator colors.\n");
90 printf("\t-sum deprecated option, kept for compatibility\n");
91 printf("\t-refresh refresh the entire display (force update)\n");
92 printf("\tcolID can be:\n");
93 printf("\t-activetab\n");
94 printf("\t-frame\n");
95 printf("\t-activeborder\n");
96 printf("\t-inactiveborder\n");
97 printf("\t-activetitle\n");
98 printf("\t-inactivetitle\n");
99 printf("\tcolspec is a 6 digit hexadecimal color number. \n"
100 "\t\t\t(rrggbb, html format)\n");
104 static int
105 UpdateUIColor(color_which which, const char *str)
107 rgb_color color;
108 unsigned int r, g, b;
109 if (which < 0)
110 return -1;
111 // parse
112 if (!str || !str[0])
113 return -1;
114 if (str[0] == '#')
115 str++;
116 if (sscanf(str, "%02x%02x%02x", &r, &g, &b) < 3)
117 return -1;
118 color.red = r;
119 color.green = g;
120 color.blue = b;
121 color.alpha = 255;
122 //printf("setting %d to {%d, %d, %d, %d}\n", which, r, g, b, 255);
123 set_ui_color(which, color);
124 return B_OK;
128 main(int argc, char **argv)
130 BApplication app("application/x-vnd.Haiku-WindowShade");
131 int c;
133 // parse command line parameters
135 while ((c = getopt_long_only(argc, argv, "h", kLongOptions, NULL)) != -1) {
136 switch (c) {
137 case 0:
138 UpdateUIColor((color_which)sColorWhich, optarg);
139 break;
140 case 'h':
141 usage();
142 return 0;
143 default:
144 usage();
145 return 1;
147 case 'r':
149 // TODO: refresh (but shouldn't be needed)
150 BString name;
151 if (get_decorator(name))
152 set_decorator(name);
153 break;
156 case 's':
157 // IGNORED, for compatibility with original app
158 break;
160 sColorWhich = -1;
163 return 0;