add contrib directory & contents

This commit is contained in:
marschap committed 2006-02-25 18:23:24 +00:00
1 parent d0d8b1d9f1
commit 26904e9637
38 files changed
+6449

No files matched your search

+28
View File
@@ -0,0 +1,28 @@
What do these patches do ?
==========================
1. HKEY - Hybrid Right/Left Key option in LCDd.conf
If selected, the same config works on 4 or 6 key pads, any key wakes up
the menus, the keys behave a bit more intuitively and if you have a menu
w/ only ring or slider you can't get stuck in them on a 4 key system.
Ultimately, I wonder if the key processing could be simplified a bit, it
currently has 3 levels, that might be able to be flattened, I've been
pondering it and don't have a simple sol'n yet, but feel like there's
one there, so I'll keep thinking on it for now.
2. OPT - adds options to the LCDd.conf for;
storing the default display string on the CFontz633.c, we use this to
put up a "starting" message for reboot for example.
setting the main menu name - which show's up on the LCD menu list, we
give it a more meaningful name like "admin" for the menus, instead of
"lcdproc"
setting the goodbye msg - which we set to "shutting down", instead of
"Thanks for using lcdproc+linux"
3. SEG - adds the ability to get a stack trace for the LCDd daemon. I
didn't actually catch a useful trace w/ it, but might be a nice
diagnostic ability or not worth the trouble, maybe gdb's just easier
when you need?
+547
View File
@@ -0,0 +1,547 @@
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/menu.c server.HKEY/menu.c
--- server/menu.c 2006-01-26 19:47:59.000000000 -0800
+++ server.HKEY/menu.c 2006-02-21 09:21:25.000000000 -0800
@@ -39,6 +39,13 @@
#include "screen.h"
#include "widget.h"
+#ifndef HKEY //hybrid keys
+#include "shared/configfile.h"
+
+extern int hybrid_left_key;
+extern int hybrid_right_key;
+#endif //HKEY
+
/** Basicly a patched version of LL_GetByIndex() that ignores hidden
* entries completely. (But it takes a menu as an argument.) */
static void *
@@ -559,12 +566,86 @@ MenuResult menu_process_input(Menu *menu
return MENURESULT_ERROR;
switch (token) {
+ case MENUTOKEN_LEFT:
+ if (!extended)
+ return MENURESULT_NONE;
+#ifndef HKEY //hybrid key left
+ /*
+ * hybrid left key just fall through to menu key
+ */
+ if (!hybrid_left_key) {
+ subitem = menu_get_subitem (menu, menu->data.menu.selector_pos);
+ if (subitem == NULL)
+ break;
+ switch (subitem->type) {
+ case MENUITEM_CHECKBOX:
+ /* note: this dangerous looking code works since
+ * CheckboxValue is an enum >= 0. */
+ if (subitem->data.checkbox.allow_gray) {
+ subitem->data.checkbox.value = (subitem->data.checkbox.value - 1) % 3;
+ }
+ else {
+ subitem->data.checkbox.value = (subitem->data.checkbox.value - 1) % 2;
+ }
+ if (subitem->event_func)
+ subitem->event_func (subitem, MENUEVENT_UPDATE);
+ return MENURESULT_NONE;
+ case MENUITEM_RING:
+ /* ring: jump to the end if beginning is reached */
+ subitem->data.ring.value = (subitem->data.ring.value < 1)
+ ? LL_Length (subitem->data.ring.strings) - 1
+ : (subitem->data.ring.value - 1) % LL_Length (subitem->data.ring.strings);
+ if (subitem->event_func)
+ subitem->event_func (subitem, MENUEVENT_UPDATE);
+ return MENURESULT_NONE;
+ default:
+ break;
+ }
+ return MENURESULT_NONE;
+ }
+#endif //HKEY
case MENUTOKEN_MENU:
subitem = menu_get_item_for_predecessor_check(menu);
if ( ! subitem)
return MENURESULT_ERROR;
return menuitem_predecessor2menuresult(
subitem->predecessor_id, MENURESULT_CLOSE);
+ case MENUTOKEN_RIGHT:
+#ifndef HKEY //hybrid key right
+ /*
+ * hybrid right key just fall through to enter key
+ */
+ if (!hybrid_right_key) {
+ if (!extended) /* Can you get a MENUTOKEN_RIGHT w/o a RightKey defined, this code maybe be unecessary */
+ return MENURESULT_NONE;
+
+ subitem = menu_get_subitem(menu, menu->data.menu.selector_pos);
+ if (subitem == NULL)
+ break;
+ switch (subitem->type) {
+ case MENUITEM_CHECKBOX:
+ if (subitem->data.checkbox.allow_gray) {
+ subitem->data.checkbox.value = (subitem->data.checkbox.value + 1) % 3;
+ }
+ else {
+ subitem->data.checkbox.value = (subitem->data.checkbox.value + 1) % 2;
+ }
+ if (subitem->event_func)
+ subitem->event_func (subitem, MENUEVENT_UPDATE);
+ return MENURESULT_NONE;
+ case MENUITEM_RING:
+ subitem->data.ring.value = (subitem->data.ring.value + 1) % LL_Length (subitem->data.ring.strings);
+ if (subitem->event_func)
+ subitem->event_func (subitem, MENUEVENT_UPDATE);
+ return MENURESULT_NONE;
+ case MENUITEM_MENU:
+ return MENURESULT_ENTER;
+ default:
+ break;
+ }
+ return MENURESULT_NONE;
+ }
+#endif //HKEY
case MENUTOKEN_ENTER:
subitem = menu_get_subitem (menu, menu->data.menu.selector_pos);
if (!subitem)
@@ -609,6 +690,18 @@ MenuResult menu_process_input(Menu *menu
menu->data.menu.scroll --;
}
else if (menu->data.menu.selector_pos == 0) {
+#ifndef HKEY //hybrid key left
+ if ( hybrid_left_key ) {
+ /*
+ * If this menu has only checkbox's and/or rings
+ * need a key to get back from this menu on a 4 key pad
+ */
+ subitem = menu_get_item_for_predecessor_check(menu);
+ if ( subitem && ((subitem->type == MENUITEM_CHECKBOX) || (subitem->type == MENUITEM_RING)))
+ return menuitem_predecessor2menuresult(
+ subitem->predecessor_id, MENURESULT_CLOSE);
+ }
+#endif // HKEY
// wrap around to last menu entry
menu->data.menu.selector_pos = menu_visible_item_count(menu) - 1;
menu->data.menu.scroll = menu->data.menu.selector_pos + 2 - display_props->height;
@@ -626,67 +719,6 @@ MenuResult menu_process_input(Menu *menu
menu->data.menu.scroll = 0;
}
return MENURESULT_NONE;
- case MENUTOKEN_LEFT:
- if (!extended)
- return MENURESULT_NONE;
-
- subitem = menu_get_subitem (menu, menu->data.menu.selector_pos);
- if (subitem == NULL)
- break;
- switch (subitem->type) {
- case MENUITEM_CHECKBOX:
- /* note: this dangerous looking code works since
- * CheckboxValue is an enum >= 0. */
- if (subitem->data.checkbox.allow_gray) {
- subitem->data.checkbox.value = (subitem->data.checkbox.value - 1) % 3;
- }
- else {
- subitem->data.checkbox.value = (subitem->data.checkbox.value - 1) % 2;
- }
- if (subitem->event_func)
- subitem->event_func (subitem, MENUEVENT_UPDATE);
- return MENURESULT_NONE;
- case MENUITEM_RING:
- /* ring: jump to the end if beginning is reached */
- subitem->data.ring.value = (subitem->data.ring.value < 1)
- ? LL_Length (subitem->data.ring.strings) - 1
- : (subitem->data.ring.value - 1) % LL_Length (subitem->data.ring.strings);
- if (subitem->event_func)
- subitem->event_func (subitem, MENUEVENT_UPDATE);
- return MENURESULT_NONE;
- default:
- break;
- }
- return MENURESULT_NONE;
- case MENUTOKEN_RIGHT:
- if (!extended)
- return MENURESULT_NONE;
-
- subitem = menu_get_subitem(menu, menu->data.menu.selector_pos);
- if (subitem == NULL)
- break;
- switch (subitem->type) {
- case MENUITEM_CHECKBOX:
- if (subitem->data.checkbox.allow_gray) {
- subitem->data.checkbox.value = (subitem->data.checkbox.value + 1) % 3;
- }
- else {
- subitem->data.checkbox.value = (subitem->data.checkbox.value + 1) % 2;
- }
- if (subitem->event_func)
- subitem->event_func (subitem, MENUEVENT_UPDATE);
- return MENURESULT_NONE;
- case MENUITEM_RING:
- subitem->data.ring.value = (subitem->data.ring.value + 1) % LL_Length (subitem->data.ring.strings);
- if (subitem->event_func)
- subitem->event_func (subitem, MENUEVENT_UPDATE);
- return MENURESULT_NONE;
- case MENUITEM_MENU:
- return MENURESULT_ENTER;
- default:
- break;
- }
- return MENURESULT_NONE;
case MENUTOKEN_OTHER:
/* TODO: move to the selected number and enter it */
return MENURESULT_NONE;
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/menuitem.c server.HKEY/menuitem.c
--- server/menuitem.c 2006-01-26 19:47:59.000000000 -0800
+++ server.HKEY/menuitem.c 2006-02-21 09:22:53.000000000 -0800
@@ -84,6 +84,10 @@ const IpSstringProperties IPinfo[] = {
{ 39, ':', 16, 4, 65535, { 4096, 256, 16, 1, 0 }, "%04x", verify_ipv6, "0:0:0:0:0:0:0:0" }
};
+#ifndef HKEY // hybrid keys
+extern int hybrid_left_key;
+extern int hybrid_right_key;
+#endif //HKEY
/******** MENU UTILITY FUNCTIONS ********/
@@ -983,26 +987,38 @@ MenuResult menuitem_process_input_slider
return MENURESULT_ERROR;
switch (token) {
- case MENUTOKEN_MENU:
- return menuitem_predecessor2menuresult(
- item->predecessor_id, MENURESULT_CLOSE);
- case MENUTOKEN_ENTER:
- return menuitem_successor2menuresult(
- item->successor_id, MENURESULT_CLOSE);
case MENUTOKEN_UP:
case MENUTOKEN_RIGHT:
- item->data.slider.value = min (item->data.slider.maxvalue,
+#ifndef HKEY //hybrid key right
+ if ( !hybrid_right_key || token == MENUTOKEN_UP ) {
+#endif /*HKEY*/
+ item->data.slider.value = min (item->data.slider.maxvalue,
item->data.slider.value + item->data.slider.stepsize);
- if (item->event_func)
- item->event_func (item, MENUEVENT_PLUS);
- return MENURESULT_NONE;
+ if (item->event_func)
+ item->event_func (item, MENUEVENT_PLUS);
+ return MENURESULT_NONE;
+#ifndef HKEY //hybrid key right
+ } /* hybrid right key fall through to enter */
+#endif /*HKEY*/
+ case MENUTOKEN_ENTER:
+ return menuitem_successor2menuresult(
+ item->successor_id, MENURESULT_CLOSE);
case MENUTOKEN_DOWN:
case MENUTOKEN_LEFT:
- item->data.slider.value = max (item->data.slider.minvalue,
+#ifndef HKEY //hybrid key left
+ if ( !hybrid_left_key || token == MENUTOKEN_DOWN ) {
+#endif /*HKEY*/
+ item->data.slider.value = max (item->data.slider.minvalue,
item->data.slider.value - item->data.slider.stepsize);
- if (item->event_func)
- item->event_func (item, MENUEVENT_MINUS);
- return MENURESULT_NONE;
+ if (item->event_func)
+ item->event_func (item, MENUEVENT_MINUS);
+ return MENURESULT_NONE;
+#ifndef HKEY //hybrid key left
+ } /* hybrid left key fall through to menu */
+#endif /*HKEY*/
+ case MENUTOKEN_MENU:
+ return menuitem_predecessor2menuresult(
+ item->predecessor_id, MENURESULT_CLOSE);
case MENUTOKEN_OTHER:
default:
break;
@@ -1037,6 +1053,21 @@ MenuResult menuitem_process_input_numeri
item->data.numeric.error_code = 0;
switch (token) {
+ case MENUTOKEN_LEFT:
+ /* The user wants to go to back a digit */
+ if (pos > 0) {
+ item->data.numeric.edit_pos--;
+ if (item->data.numeric.edit_offs > item->data.numeric.edit_pos)
+ item->data.numeric.edit_offs = item->data.numeric.edit_pos;
+#ifndef HKEY //hybrid key left
+ if( hybrid_left_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_left_key ) return MENURESULT_NONE;
+ /* fall through to MENU */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
case MENUTOKEN_MENU:
if (pos == 0) {
return menuitem_predecessor2menuresult(
@@ -1047,6 +1078,21 @@ MenuResult menuitem_process_input_numeri
menuitem_reset_numeric(item);
}
return MENURESULT_NONE;
+ case MENUTOKEN_RIGHT:
+ /* The user wants to go to next digit */
+ if (str[pos] != '\0' && pos < max_len) {
+ item->data.numeric.edit_pos++;
+ if (pos >= display_props->width - 2)
+ item->data.numeric.edit_offs++;
+#ifndef HKEY //hybrid key right
+ if( hybrid_right_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_right_key ) return MENURESULT_NONE;
+ /* fall through to ENTER */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
case MENUTOKEN_ENTER:
if ((extended) || (str[pos] == '\0')) {
int value;
@@ -1131,22 +1177,6 @@ MenuResult menuitem_process_input_numeri
}
}
return MENURESULT_NONE;
- case MENUTOKEN_RIGHT:
- /* The user wants to go to next digit */
- if (str[pos] != '\0' && pos < max_len) {
- item->data.numeric.edit_pos++;
- if (pos >= display_props->width - 2)
- item->data.numeric.edit_offs++;
- }
- return MENURESULT_NONE;
- case MENUTOKEN_LEFT:
- /* The user wants to go to back a digit */
- if (pos > 0) {
- item->data.numeric.edit_pos--;
- if (item->data.numeric.edit_offs > item->data.numeric.edit_pos)
- item->data.numeric.edit_offs = item->data.numeric.edit_pos;
- }
- return MENURESULT_NONE;
case MENUTOKEN_OTHER:
if (pos >= max_len) {
/* We're not allowed to add anything anymore */
@@ -1196,6 +1226,21 @@ MenuResult menuitem_process_input_alpha
item->data.alpha.error_code = 0;
switch (token) {
+ case MENUTOKEN_LEFT:
+ /* The user wants to go to back a digit */
+ if (pos > 0) {
+ item->data.alpha.edit_pos--;
+ if (item->data.alpha.edit_offs > item->data.alpha.edit_pos)
+ item->data.alpha.edit_offs = item->data.alpha.edit_pos;
+#ifndef HKEY //hybrid key left
+ if( hybrid_left_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_left_key ) return MENURESULT_NONE;
+ /* fall through to MENU */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
case MENUTOKEN_MENU:
if (pos == 0) {
return menuitem_predecessor2menuresult(
@@ -1206,6 +1251,22 @@ MenuResult menuitem_process_input_alpha
menuitem_reset_alpha(item);
}
return MENURESULT_NONE;
+ case MENUTOKEN_RIGHT:
+ /* The user wants to go to next digit */
+ if (str[item->data.alpha.edit_pos] != '\0' &&
+ pos < item->data.alpha.maxlength - 1) {
+ item->data.alpha.edit_pos++;
+ if (pos >= display_props->width - 2)
+ item->data.alpha.edit_offs++;
+#ifndef HKEY //hybrid key right
+ if( hybrid_right_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_right_key ) return MENURESULT_NONE;
+ /* fall through to ENTER */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
case MENUTOKEN_ENTER:
if ((extended) || (str[item->data.alpha.edit_pos] == '\0')) {
/* The user completed his input */
@@ -1278,23 +1339,6 @@ MenuResult menuitem_process_input_alpha
}
}
return MENURESULT_NONE;
- case MENUTOKEN_RIGHT:
- /* The user wants to go to next digit */
- if (str[item->data.alpha.edit_pos] != '\0' &&
- pos < item->data.alpha.maxlength - 1) {
- item->data.alpha.edit_pos++;
- if (pos >= display_props->width - 2)
- item->data.alpha.edit_offs++;
- }
- return MENURESULT_NONE;
- case MENUTOKEN_LEFT:
- /* The user wants to go to back a digit */
- if (pos > 0) {
- item->data.alpha.edit_pos--;
- if (item->data.alpha.edit_offs > item->data.alpha.edit_pos)
- item->data.alpha.edit_offs = item->data.alpha.edit_pos;
- }
- return MENURESULT_NONE;
case MENUTOKEN_OTHER:
if (pos >= item->data.alpha.maxlength) {
/* We're not allowed to add anything anymore */
@@ -1333,7 +1377,24 @@ MenuResult menuitem_process_input_ip (Me
item->data.ip.error_code = 0;
switch (token) {
- case MENUTOKEN_MENU:
+ case MENUTOKEN_LEFT:
+ /* The user wants to go to back a digit */
+ if (pos > 0) {
+ item->data.ip.edit_pos--;
+ if (str[item->data.ip.edit_pos] == ipinfo->sep)
+ item->data.ip.edit_pos--;
+ if (item->data.ip.edit_offs > item->data.ip.edit_pos)
+ item->data.ip.edit_offs = item->data.ip.edit_pos;
+#ifndef HKEY //hybrid key left
+ if( hybrid_left_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_left_key ) return MENURESULT_NONE;
+ /* fall through to MENU */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
+ case MENUTOKEN_MENU:
if (pos == 0) {
return menuitem_predecessor2menuresult(
item->predecessor_id, MENURESULT_CLOSE);
@@ -1343,6 +1404,22 @@ MenuResult menuitem_process_input_ip (Me
menuitem_reset_ip(item);
}
return MENURESULT_NONE;
+ case MENUTOKEN_RIGHT:
+ if (pos < item->data.ip.maxlength - 1) {
+ item->data.ip.edit_pos++;
+ if (str[item->data.ip.edit_pos] == ipinfo->sep)
+ item->data.ip.edit_pos++;
+ while (item->data.ip.edit_pos - item->data.ip.edit_offs > display_props->width - 2)
+ item->data.ip.edit_offs++;
+#ifndef HKEY //hybrid key right
+ if( hybrid_right_key ) return MENURESULT_NONE;
+ }
+ if( !hybrid_right_key ) return MENURESULT_NONE;
+ /* fall through to ENTER */
+#else
+ }
+ return MENURESULT_NONE;
+#endif /*HKEY*/
case MENUTOKEN_ENTER:
if (extended || (pos >= item->data.ip.maxlength - 1)) {
// remove the leading spaces/zeros in each octet-representing string
@@ -1409,25 +1486,6 @@ MenuResult menuitem_process_input_ip (Me
snprintf(numstr, 5, ipinfo->format, num);
memcpy(&str[pos - (pos % (ipinfo->width + 1))], numstr, ipinfo->width);
return MENURESULT_NONE;
- case MENUTOKEN_RIGHT:
- if (pos < item->data.ip.maxlength - 1) {
- item->data.ip.edit_pos++;
- if (str[item->data.ip.edit_pos] == ipinfo->sep)
- item->data.ip.edit_pos++;
- while (item->data.ip.edit_pos - item->data.ip.edit_offs > display_props->width - 2)
- item->data.ip.edit_offs++;
- }
- return MENURESULT_NONE;
- case MENUTOKEN_LEFT:
- /* The user wants to go to back a digit */
- if (pos > 0) {
- item->data.ip.edit_pos--;
- if (str[item->data.ip.edit_pos] == ipinfo->sep)
- item->data.ip.edit_pos--;
- if (item->data.ip.edit_offs > item->data.ip.edit_pos)
- item->data.ip.edit_offs = item->data.ip.edit_pos;
- }
- return MENURESULT_NONE;
case MENUTOKEN_OTHER:
/* process other keys */
if ((strlen(key) == 1) &&
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/menuscreens.c server.HKEY/menuscreens.c
--- server/menuscreens.c 2006-01-26 19:47:59.000000000 -0800
+++ server.HKEY/menuscreens.c 2006-02-21 09:33:21.000000000 -0800
@@ -48,6 +48,15 @@ char * down_key;
char * left_key;
char * right_key;
+#ifndef HKEY //hybrid keys
+/*
+ * hybrid left becomes menu key at left edge of screen
+ * hybrid right becomes enter key at right edge of screen
+ */
+int hybrid_left_key = 0;
+int hybrid_right_key = 0;
+#endif //HKEY
+
Screen * menuscreen = NULL;
MenuItem * active_menuitem = NULL;
/** the "real" main_menu */
@@ -91,6 +100,11 @@ int menuscreens_init()
if (tmp)
right_key = strdup(tmp);
+#ifndef HKEY //get hybrid keys from config file
+ hybrid_right_key = config_get_bool ("menu", "HybridRightKey", 0, 0);
+ hybrid_left_key = config_get_bool ("menu", "HybridLeftKey", 0, 0);
+#endif
+
/* Now reserve keys */
input_reserve_key (menu_key, true, NULL);
@@ -186,6 +200,11 @@ void menuscreen_inform_item_modified (Me
bool is_menu_key (char * key)
{
+#ifndef HKEY //hybrid keys, any key wake-up menus
+ /* any key wakes up menus */
+ if (key && ( hybrid_left_key || hybrid_right_key ))
+ return true;
+#endif //HKEY
if (menu_key && key && strcmp (key, menu_key) == 0)
return true;
else
@@ -466,28 +485,28 @@ void menuscreen_create_menu ()
menu_add_item (options_menu, driver_menu);
if (contrast_avail) {
int contrast = driver->get_contrast(driver);
-
+
/* menu's client is NULL since we're in the server */
slider = menuitem_create_slider ("contrast", contrast_handler, "Contrast",
- NULL, "min", "max", 0, 1000, 25, contrast);
+ NULL, "min", "max", 0, 1000, 25, contrast);
menu_add_item (driver_menu, slider);
}
if (brightness_avail) {
int onbrightness = driver->get_brightness (driver, BACKLIGHT_ON);
int offbrightness = driver->get_brightness (driver, BACKLIGHT_OFF);
-
+
slider = menuitem_create_slider ("onbrightness", brightness_handler, "On Brightness",
- NULL, "min", "max", 0, 1000, 25, onbrightness);
+ NULL, "min", "max", 0, 1000, 25, onbrightness);
menu_add_item (driver_menu, slider);
slider = menuitem_create_slider ("offbrightness", brightness_handler, "Off Brightness",
- NULL, "min", "max", 0, 1000, 25, offbrightness);
+ NULL, "min", "max", 0, 1000, 25, offbrightness);
menu_add_item (driver_menu, slider);
}
}
}
-#ifdef LCDPROC_TESTMENUS
+#ifdef LCDPROC_TESTMENUS
test_menu = menu_create ("test", NULL, "Test menu", NULL);
menu_add_item (main_menu, test_menu);
+243
View File
@@ -0,0 +1,243 @@
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/drivers/CFontz633.c server.OPT/drivers/CFontz633.c
--- server/drivers/CFontz633.c 2006-01-26 19:47:59.000000000 -0800
+++ server.OPT/drivers/CFontz633.c 2006-02-21 19:35:27.000000000 -0800
@@ -131,6 +131,9 @@ static void CFontz633_init_vbar (Driver
static void CFontz633_init_hbar (Driver *drvthis);
static void CFontz633_no_live_report (Driver *drvthis);
static void CFontz633_hardware_clear (Driver *drvthis);
+#ifndef OPT //store boot screen
+static void CFontz633_store_boot_state (Driver *drvthis);
+#endif //OPT
/*
@@ -305,6 +308,16 @@ CFontz633_init (Driver *drvthis)
CFontz633_no_live_report (drvthis);
CFontz633_hardware_clear (drvthis);
+#ifndef OPT //store boot screen
+ /* get and store the power on boot line, repurposing the "size" buffer */
+ strncpy(size, drvthis->config_get_string (drvthis->name, "BootDisplay", 0, "" ), sizeof(size));
+ if ( size[0] ) {
+ CFontz633_string (drvthis, 1, 1, size);
+ CFontz633_flush (drvthis);
+ CFontz633_store_boot_state (drvthis);
+ }
+#endif //OPT
+
report (RPT_DEBUG, "%s: done\n", __FUNCTION__);
return 0;
@@ -1118,3 +1131,15 @@ CFontz633_string (Driver *drvthis, int x
}
}
+#ifndef OPT //store boot screen
+/*
+ * Saves current state as boot state
+ */
+static void
+CFontz633_store_boot_state (Driver *drvthis)
+{
+ PrivateData *p = drvthis->private_data;
+
+ send_zerobyte_message(p->fd, CF633_Store_Current_State_As_Boot_State);
+}
+#endif //OPT
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/menuscreens.c server.OPT/menuscreens.c
--- server/menuscreens.c 2006-01-26 19:47:59.000000000 -0800
+++ server.OPT/menuscreens.c 2006-02-21 19:31:00.000000000 -0800
@@ -48,6 +48,9 @@ char * down_key;
char * left_key;
char * right_key;
+#ifndef OPT
+char * menuname; /* the name for the default menu */
+#endif //OPT
Screen * menuscreen = NULL;
MenuItem * active_menuitem = NULL;
/** the "real" main_menu */
@@ -91,6 +94,11 @@ int menuscreens_init()
if (tmp)
right_key = strdup(tmp);
+#ifndef OPT //get main menu name and hybrid keys from config file
+ /* Get main menu name from config file */
+ menuname = strdup (config_get_string ("menu", "menuname", 0, "LCDproc Menu"));
+#endif //OPT
+
/* Now reserve keys */
input_reserve_key (menu_key, true, NULL);
@@ -437,55 +445,62 @@ void menuscreen_create_menu ()
debug (RPT_DEBUG, "%s()", __FUNCTION__);
+#ifndef OPT //main menu name from config file
+ main_menu = menu_create ("mainmenu", NULL, menuname, NULL);
+#else //OPT
main_menu = menu_create ("mainmenu", NULL, "LCDproc Menu", NULL);
+#endif //OPT
- options_menu = menu_create ("options", NULL, "Options", NULL);
- menu_add_item (main_menu, options_menu);
-
-#ifdef LCDPROC_TESTMENUS
- screens_menu = menu_create ("screens", NULL, "Screens", NULL);
- menu_add_item (main_menu, screens_menu);
-#endif /*LCDPROC_TESTMENUS*/
-
- /* menu's client is NULL since we're in the server */
- checkbox = menuitem_create_checkbox ("heartbeat", heartbeat_handler, "Heartbeat", NULL, true, heartbeat);
- menu_add_item (options_menu, checkbox);
-
- /* menu's client is NULL since we're in the server */
- checkbox = menuitem_create_checkbox ("backlight", backlight_handler, "Backlight", NULL, true, backlight);
- menu_add_item (options_menu, checkbox);
+#ifndef OPT //Options menu display from config file
+ if ( config_get_bool ("server", "LCDOptionsMenu", 0, 0)) {
+ options_menu = menu_create ("options", NULL, "Options", NULL);
+ menu_add_item (main_menu, options_menu);
+
+ /* menu's client is NULL since we're in the server */
+ checkbox = menuitem_create_checkbox ("heartbeat", heartbeat_handler, "Heartbeat", NULL, true, heartbeat);
+ menu_add_item (options_menu, checkbox);
+
+ /* menu's client is NULL since we're in the server */
+ checkbox = menuitem_create_checkbox ("backlight", backlight_handler, "Backlight", NULL, true, backlight);
+ menu_add_item (options_menu, checkbox);
+
+ for (driver = drivers_getfirst(); driver; driver = drivers_getnext()) {
+ int contrast_avail = (driver->get_contrast && driver->set_contrast) ? 1 : 0;
+ int brightness_avail = (driver->get_brightness && driver->set_brightness) ? 1 : 0;
- for (driver = drivers_getfirst(); driver; driver = drivers_getnext()) {
- int contrast_avail = (driver->get_contrast && driver->set_contrast) ? 1 : 0;
- int brightness_avail = (driver->get_brightness && driver->set_brightness) ? 1 : 0;
-
- if (contrast_avail || brightness_avail) {
- /* menu's client is NULL since we're in the server */
- driver_menu = menu_create (driver->name, NULL, driver->name, NULL);
- menu_set_association(driver_menu, driver);
- menu_add_item (options_menu, driver_menu);
- if (contrast_avail) {
- int contrast = driver->get_contrast(driver);
-
+ if (contrast_avail || brightness_avail) {
/* menu's client is NULL since we're in the server */
- slider = menuitem_create_slider ("contrast", contrast_handler, "Contrast",
- NULL, "min", "max", 0, 1000, 25, contrast);
- menu_add_item (driver_menu, slider);
- }
- if (brightness_avail) {
- int onbrightness = driver->get_brightness (driver, BACKLIGHT_ON);
- int offbrightness = driver->get_brightness (driver, BACKLIGHT_OFF);
-
- slider = menuitem_create_slider ("onbrightness", brightness_handler, "On Brightness",
- NULL, "min", "max", 0, 1000, 25, onbrightness);
- menu_add_item (driver_menu, slider);
-
- slider = menuitem_create_slider ("offbrightness", brightness_handler, "Off Brightness",
- NULL, "min", "max", 0, 1000, 25, offbrightness);
- menu_add_item (driver_menu, slider);
+ driver_menu = menu_create (driver->name, NULL, driver->name, NULL);
+ menu_set_association(driver_menu, driver);
+ menu_add_item (options_menu, driver_menu);
+ if (contrast_avail) {
+ int contrast = driver->get_contrast(driver);
+
+ /* menu's client is NULL since we're in the server */
+ slider = menuitem_create_slider ("contrast", contrast_handler, "Contrast",
+ NULL, "min", "max", 0, 1000, 25, contrast);
+ menu_add_item (driver_menu, slider);
+ }
+ if (brightness_avail) {
+ int onbrightness = driver->get_brightness (driver, BACKLIGHT_ON);
+ int offbrightness = driver->get_brightness (driver, BACKLIGHT_OFF);
+
+ slider = menuitem_create_slider ("onbrightness", brightness_handler, "On Brightness",
+ NULL, "min", "max", 0, 1000, 25, onbrightness);
+ menu_add_item (driver_menu, slider);
+
+ slider = menuitem_create_slider ("offbrightness", brightness_handler, "Off Brightness",
+ NULL, "min", "max", 0, 1000, 25, offbrightness);
+ menu_add_item (driver_menu, slider);
+ }
}
}
}
+ if ( config_get_bool ("server", "LCDScreensMenu", 0, 0)) {
+ screens_menu = menu_create ("screens", NULL, "Screens", NULL);
+ menu_add_item (main_menu, screens_menu);
+ }
+#endif //OPT
#ifdef LCDPROC_TESTMENUS
test_menu = menu_create ("test", NULL, "Test menu", NULL);
diff --exclude='*.wanjet' --exclude='.??*' --exclude=config.h --exclude='*.orig' --exclude=Makefile --exclude='*.o' --exclude=Doxyfile --exclude='*.a' --exclude=config.log --exclude=config.status --exclude='init-*' -Nuarp server/serverscreens.c server.OPT/serverscreens.c
--- server/serverscreens.c 2006-01-26 19:47:59.000000000 -0800
+++ server.OPT/serverscreens.c 2006-02-21 19:27:40.000000000 -0800
@@ -31,6 +31,12 @@
#include "widget.h"
#include "serverscreens.h"
+#ifndef OPT //startup screen title from config
+#include "shared/configfile.h"
+
+char * title;
+#endif //OPT
+
#define UNSET_INT -1
Screen * server_screen;
@@ -38,6 +44,7 @@ int rotate_server_screen = UNSET_INT;
#define MAX_SERVERSCREEN_WIDTH 40
+
int
server_screen_init ()
{
@@ -46,6 +53,11 @@ server_screen_init ()
debug (RPT_DEBUG, "server_screen_init");
+#ifndef OPT //startup screen title from config
+ /* Get server title name from config file */
+ title = strdup (config_get_string ("server", "title", 0, "LCDproc Server"));
+#endif //OPT
+
/* Create the screen */
server_screen = screen_create ("_server_screen", NULL);
if (!server_screen) {
@@ -77,7 +89,11 @@ server_screen_init ()
w->text = malloc (MAX_SERVERSCREEN_WIDTH+1);
if (line == 1) {
w->type = WID_TITLE;
+#ifndef OPT //startup screen titel from config
+ strncpy (w->text, title, MAX_SERVERSCREEN_WIDTH);
+#else //OPT
strncpy (w->text, "LCDproc Server", MAX_SERVERSCREEN_WIDTH);
+#endif //OPT
} else {
w->text[0] = 0;
}
@@ -156,6 +172,18 @@ goodbye_screen ()
char *l16 = " LCDproc! ";
#endif
+#ifndef OPT // disable config goobye
+ char * goodbye_string;
+
+ if ( (goodbye_string = strdup(config_get_string("server", "goodbye", 0, "")))) {
+ t20=t16=goodbye_string;
+ if (strlen(goodbye_string) > 16 )
+ l16 = goodbye_string + 16;
+ if (strlen(goodbye_string) > 20 )
+ l20 = goodbye_string + 20;
+ }
+#endif //OPT
+
if( !display_props )
return 0;
File diff suppressed because it is too large. Load diff