diff -ruNp lcdproc-0.5.1-orig/server/drivers/CFontz633.c lcdproc-0.5.1-working/server/drivers/CFontz633.c --- lcdproc-0.5.1-orig/server/drivers/CFontz633.c 2006-10-06 03:02:47.000000000 -0400 +++ lcdproc-0.5.1-working/server/drivers/CFontz633.c 2007-02-23 11:55:05.000000000 -0500 @@ -124,6 +124,9 @@ static void CFontz633_hidecursor (Driver static void CFontz633_reboot (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 /** @@ -303,6 +306,19 @@ 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); + if ( strlen(size) > p->width ) { + CFontz633_string (drvthis, 1, 2, size + p->width); + } + CFontz633_flush (drvthis); + CFontz633_store_boot_state (drvthis); + } +#endif //OPT + report(RPT_DEBUG, "%s: init() done", drvthis->name); return 0; @@ -1077,3 +1093,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 -ruNp lcdproc-0.5.1-orig/server/menuscreens.c lcdproc-0.5.1-working/server/menuscreens.c --- lcdproc-0.5.1-orig/server/menuscreens.c 2006-10-06 03:02:47.000000000 -0400 +++ lcdproc-0.5.1-working/server/menuscreens.c 2007-02-26 11:57:39.000000000 -0500 @@ -48,6 +48,10 @@ char * down_key; char *left_key; char *right_key; +#ifndef OPT +char * menuname; /* the name for the default menu */ +char * menuentryname; /* the name for the default menu's entry */ +#endif //OPT Screen *menuscreen = NULL; MenuItem *active_menuitem = NULL; /** the "real" main_menu */ @@ -91,6 +95,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")); + menuentryname = strdup (config_get_string ("menu", "menuentryname", 0, "Options")); +#endif //OPT /* Now reserve keys */ input_reserve_key(menu_key, true, NULL); @@ -387,7 +396,13 @@ void menuscreen_key_handler (const char /* Is the menu already active ? */ if (!active_menuitem) { debug(RPT_DEBUG, "%s: Activating menu screen", __FUNCTION__); - menuscreen_switch_item(menuscreen_get_main()); + Menu *main = menuscreen_get_main(); + /* Don't display an empty menu */ + if (!main || !LL_Get(main->data.menu.contents)) { + debug (RPT_DEBUG, "%s: Ignoring empty menu", __FUNCTION__); + return; + } + menuscreen_switch_item(main); return; } @@ -437,55 +452,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); - - 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); +#ifndef OPT + if (config_get_bool("server", "LCDOptionsMenu", 0, 0)) { + options_menu = menu_create("options", NULL, menuentryname, 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; + 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 -ruNp lcdproc-0.5.1-orig/server/serverscreens.c lcdproc-0.5.1-working/server/serverscreens.c --- lcdproc-0.5.1-orig/server/serverscreens.c 2006-10-06 03:02:47.000000000 -0400 +++ lcdproc-0.5.1-working/server/serverscreens.c 2007-02-23 11:48:56.000000000 -0500 @@ -33,6 +33,12 @@ #include "main.h" #include "serverscreens.h" +#ifndef OPT //startup screen title from config +#include "shared/configfile.h" + +char * title; +#endif //OPT + #define UNSET_INT -1 #define MAX_SERVERSCREEN_WIDTH 40 @@ -50,6 +56,11 @@ 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) { @@ -81,7 +92,11 @@ 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'; }