diff options
Diffstat (limited to 'src/eulogium.c')
-rw-r--r-- | src/eulogium.c | 268 |
1 files changed, 161 insertions, 107 deletions
diff --git a/src/eulogium.c b/src/eulogium.c index 663f1ff..10c6ac6 100644 --- a/src/eulogium.c +++ b/src/eulogium.c @@ -2,16 +2,20 @@ # include "config.h" #endif +#include <errno.h> #include <Ecore_Getopt.h> #include <Eeze.h> #include <Eeze_Disk.h> #include <Elementary.h> #include <Evas.h> #include <libintl.h> +#include <pwd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdint.h> +#include <sys/types.h> +#include <unistd.h> #include "dbus_common.h" #include "eulogium.h" @@ -23,6 +27,7 @@ #include "settings_data.h" #include "ui_input.h" #include "ui_widgets.h" +#include "ui_wizards.h" #define COPYRIGHT "Copyright © 2015 Olliver Schinagl <o.schinagl@ultimaker.com> and various contributors (see AUTHORS)." @@ -1719,11 +1724,11 @@ static struct settings_dial_data dials[] = { .label = LABEL_PROC_BED_MOVE, .help = N_("Rotate the knob<br>CW to down<br>CCW to go up"), .step = 1.0, - .min = 0.0, /* Unused with this dial */ - .max = 0.0, /* Unused with this dial */ + .min = 1.0, + .max = 1.0, .value = 0.0, .value_end = 0.0, /* Unused with this dial */ - .format = "", /* Unused with this dial */ + .format = "", .format_end = "", /* Unused with this dial */ .unit = "", /* Unused with this dial */ .method_set = &procedure_target_set, @@ -1737,7 +1742,7 @@ static struct settings_dial_data dials[] = { .max = 60.0, .value = 0.0, .value_end = 0.0, - .format = "%1.1f", + .format = "%1.0f", .format_end = " | %1.0f%s", .unit = " °C", .method_set = &procedure_target_set, @@ -1751,7 +1756,7 @@ static struct settings_dial_data dials[] = { .max = 300.0, .value = 0.0, .value_end = 0.0, - .format = "%1.1f", + .format = "%1.0f", .format_end = " | %1.0f%s", .unit = " °C", .method_set = &procedure_target_set, /* XXX use ampersant improve of functions */ @@ -1765,7 +1770,7 @@ static struct settings_dial_data dials[] = { .max = 300.0, .value = 0.0, .value_end = 0.0, - .format = "%1.1f", + .format = "%1.0f", .format_end = " | %1.0f%s", .unit = " °C", .method_set = &procedure_target_set, /* XXX use ampersant improve of functions */ @@ -1774,12 +1779,12 @@ static struct settings_dial_data dials[] = { }, [PROC_PRINT_SPEED] = { .label = N_("Print speed"), - .step = 10.0, + .step = 15.0, .min = 10.0, .max = 1000.0, .value = 0.0, .value_end = 0.0, - .format = "%1.1f", + .format = "%1.0f", .format_end = " | %1.0f%s", .unit = "%", .method_set = &procedure_target_set, @@ -1822,7 +1827,7 @@ static struct settings_dial_data dials[] = { .value = 0.0, .value_end = 0.0, .format = "%1.1f", - .format_end = " | %1.0f%s", + .format_end = " | %1.1f%s", .unit = " mm", .method_set = &procedure_target_set, .method_get = &procedure_metadata_key_get, @@ -1835,7 +1840,7 @@ static struct settings_dial_data dials[] = { .max = 150.0, .value = 0.0, .value_end = 0.0, - .format = "%1.1f", + .format = "%1.0f", .format_end = " | %1.0f%s", .unit = " mm / s", .method_set = &procedure_target_set, @@ -1850,7 +1855,7 @@ static struct settings_dial_data dials[] = { .value = 0.0, .value_end = 0.0, .format = "%1.1f", - .format_end = " | %1.0f%s", + .format_end = " | %1.1f%s", .unit = " mm", .method_set = &procedure_target_set, .method_get = &procedure_metadata_key_get, @@ -2003,7 +2008,9 @@ static void _on_print_abort_ret(void *data, const Eldbus_Message *msg, Eldbus_Pe static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - ui_stack_pop_cb(data, obj, event_info); /* XXX replace content_prev calls with ui_stack_pop */ + struct eulogium_data *eulogium = data; + + ui_stack_pop_cb(eulogium->navi, obj, event_info); /* XXX replace content_prev calls with ui_stack_pop */ } static void _print_abort_confirm_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2012,7 +2019,7 @@ static void _print_abort_confirm_cb(void *data, Evas_Object *obj EINA_UNUSED, vo Evas_Object *content; content = eulogium_menu_confirm(eulogium->navi, N_("<br>Abort the print?"), "No", &but_print_abort); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2038,7 +2045,7 @@ static void _but_system_maintenance_cb(void *data, Evas_Object *obj EINA_UNUSED, printf("But sys maint\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_system_maintenance); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_material_change_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2048,7 +2055,7 @@ static void _but_material_change_cb(void *data EINA_UNUSED, Evas_Object *obj EIN printf("But material change\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_change_material_1, &but_change_material_2, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_material_settings_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2058,7 +2065,7 @@ static void _but_material_settings_cb(void *data EINA_UNUSED, Evas_Object *obj E printf("But material settings\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_settings_material_1, &but_settings_material_2, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_hotend_change_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2068,7 +2075,7 @@ static void _but_hotend_change_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_ printf("But hotend change\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_change_hotend_1, &but_change_hotend_2, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_hotend_settings_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2078,7 +2085,7 @@ static void _but_hotend_settings_cb(void *data EINA_UNUSED, Evas_Object *obj EIN printf("But hotend settings\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_settings_hotend_1, &but_settings_hotend_2, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_main_system_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2088,7 +2095,7 @@ static void _but_main_system_cb(void *data, Evas_Object *object EINA_UNUSED, voi printf("Button system pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_system_settings, &but_system_maintenance, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void menu_wifi_list(struct eulogium_data *eulogium) @@ -2101,7 +2108,7 @@ static void menu_wifi_list(struct eulogium_data *eulogium) wifi_list->type = LIST_WIFI; content = menu_widget_list(eulogium, eulogium->navi, wifi_list); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void menu_internal_storage(struct eulogium_data *eulogium) @@ -2114,7 +2121,7 @@ static void menu_internal_storage(struct eulogium_data *eulogium) menu_internal_storage->type = LIST_FILE; menu_internal_storage->dir.path = "/home"; /* TODO, use variable for internal storage */ content = menu_widget_list(eulogium, eulogium->navi, menu_internal_storage); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void menu_usb_storage(struct eulogium_data *eulogium) @@ -2141,7 +2148,7 @@ static void menu_usb_storage(struct eulogium_data *eulogium) menu_usb_storage->dir.path = malloc(mount_len); strncpy(menu_usb_storage->dir.path, mount_point, mount_len); content = menu_widget_list(eulogium, eulogium->navi, menu_usb_storage); - ui_stack_push(eulogium, content, PAGE_USB); + ui_stack_push(eulogium->navi, content, PAGE_USB); } static void _network_wifi_manage_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2177,7 +2184,7 @@ static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, v content = eulogium_tripple_button_menu(eulogium->navi, &but_print_local, &but_print_mmc, &but_return); if (eeze_disk_type_get(mount->disk) == EEZE_DISK_TYPE_USB) content = eulogium_tripple_button_menu(eulogium->navi, &but_print_local, &but_print_usb, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } } @@ -2189,7 +2196,7 @@ static void _but_settings_network_cb(void *data, Evas_Object *obj EINA_UNUSED, v printf("But settings network settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_network); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_system_settings_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2199,7 +2206,7 @@ static void _but_system_settings_cb(void *data, Evas_Object *obj EINA_UNUSED, vo printf("But system settings settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_system_settings); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_hotend_1_offset_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2209,7 +2216,7 @@ static void _but_settings_hotend_1_offset_cb(void *data, Evas_Object *obj EINA_U printf("But settings hotend 1 offset settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_hotend_1_offset); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_hotend_2_offset_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2219,7 +2226,7 @@ static void _but_settings_hotend_2_offset_cb(void *data, Evas_Object *obj EINA_U printf("But settings hotend 2 offset settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_hotend_2_offset); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_language_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2229,7 +2236,7 @@ static void _but_settings_language_cb(void *data, Evas_Object *obj EINA_UNUSED, printf("But menu language settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_language); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_led_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2239,7 +2246,7 @@ static void _but_settings_led_cb(void *data, Evas_Object *obj EINA_UNUSED, void printf("But menu led settings\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_led); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_led_hue_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2249,7 +2256,7 @@ static void _but_led_hue_cb(void *data, Evas_Object *object EINA_UNUSED, void *e printf("Button led_hue pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dial_led_hue); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_led_saturation_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2259,7 +2266,7 @@ static void _but_led_saturation_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button led_saturation pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dial_led_saturation); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_led_brightness_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2269,7 +2276,7 @@ static void _but_led_brightness_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button led_brightness pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dial_led_brightness); - ui_stack_push(eulogium, content, PAGE_PRINTING); + ui_stack_push(eulogium->navi, content, PAGE_PRINTING); } static void _but_bed_heatup_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2279,7 +2286,7 @@ static void _but_bed_heatup_cb(void *data, Evas_Object *object EINA_UNUSED, void printf("Button bed temperature pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_BED_HEATUP]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_hotend_heatup_0_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2289,7 +2296,7 @@ static void _but_hotend_heatup_0_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button hotend 1 temperature pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_HOTEND_HEATUP_0]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_hotend_heatup_1_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2299,7 +2306,7 @@ static void _but_hotend_heatup_1_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button hotend 2 temperature pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_HOTEND_HEATUP_1]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_hotend_active_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2315,7 +2322,7 @@ static void _but_print_speed_cb(void *data, Evas_Object *object EINA_UNUSED, voi printf("Button print speed pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_PRINT_SPEED]); - ui_stack_push(eulogium, content, PAGE_PRINTING); + ui_stack_push(eulogium->navi, content, PAGE_PRINTING); } static void _but_fan_speed_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2325,7 +2332,7 @@ static void _but_fan_speed_cb(void *data, Evas_Object *object EINA_UNUSED, void printf("Button fan speed pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_FAN_SPEED]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_flow_rate_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2335,7 +2342,7 @@ static void _but_flow_rate_cb(void *data, Evas_Object *object EINA_UNUSED, void printf("Button material flow pressed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_FLOW_RATE]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_retraction_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2345,7 +2352,7 @@ static void _but_retraction_cb(void *data, Evas_Object *obj EINA_UNUSED, void *e printf("But menu retraction\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_retraction); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_retraction_length_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2355,7 +2362,7 @@ static void _but_retraction_length_cb(void *data, Evas_Object *obj EINA_UNUSED, printf("But retraction length\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_RETRACTION_LENGTH]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_retraction_speed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2365,7 +2372,7 @@ static void _but_retraction_speed_cb(void *data, Evas_Object *obj EINA_UNUSED, v printf("But retraction speed\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_RETRACTION_SPEED]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_retraction_zhop_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2375,7 +2382,7 @@ static void _but_retraction_zhop_cb(void *data, Evas_Object *obj EINA_UNUSED, vo printf("But retraction zhop\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_RETRACTION_ZHOP]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_bed_level_auto_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2408,8 +2415,8 @@ static void _but_bed_move_cb(void *data, Evas_Object *obj EINA_UNUSED, void *eve Evas_Object *content = NULL; printf("But bed move\n"); - content = ui_widget_spinner(eulogium->navi, eulogium, &dials[PROC_BED_MOVE]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + content = ui_widget_spinner_add(eulogium->navi, &dials[PROC_BED_MOVE]); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_material_move_0_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2419,7 +2426,7 @@ static void _but_material_move_0_cb(void *data, Evas_Object *obj EINA_UNUSED, vo printf("But move material 0\n"); content = ui_widget_spinner(eulogium->navi, eulogium, &dials[PROC_MATERIAL_MOVE_0]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_material_move_1_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2429,7 +2436,7 @@ static void _but_material_move_1_cb(void *data, Evas_Object *obj EINA_UNUSED, vo printf("But move material 1\n"); content = ui_widget_spinner(eulogium->navi, eulogium, &dials[PROC_MATERIAL_MOVE_1]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_motion_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2439,7 +2446,7 @@ static void _but_motion_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event printf("But menu motion\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_motion); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_jerk_xy_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2449,7 +2456,7 @@ static void _but_jerk_xy_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even printf("But jerk xy\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_JERK_XY]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_jerk_z_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2459,7 +2466,7 @@ static void _but_jerk_z_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event printf("But jerk z\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_JERK_Z]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_current_xy_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2469,7 +2476,7 @@ static void _but_current_xy_cb(void *data, Evas_Object *obj EINA_UNUSED, void *e printf("But current xy\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_CURRENT_XY]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_current_z_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2479,7 +2486,7 @@ static void _but_current_z_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev printf("But current z\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_CURRENT_Z]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_current_e_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2489,7 +2496,7 @@ static void _but_current_e_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev printf("But current e\n"); content = ui_widget_slider(eulogium->navi, eulogium, &dials[PROC_CURRENT_E]); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static char *parse_networks_for_display(struct network_data *networks) @@ -2528,25 +2535,44 @@ static void _but_network_info_cb(void *data, Evas_Object *obj EINA_UNUSED, void evas_object_show(_bottom); content = eulogium_split_screen(eulogium->navi, _top, _bottom); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } -static void _but_software_version_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +static void _but_software_version_cb(void *data, Evas_Object *eo EINA_UNUSED, void *event_info EINA_UNUSED) { struct eulogium_data *eulogium = data; - Evas_Object *content, *_top, *_bottom; + Evas_Object *content, *obj, *_top, *_bottom; + char hostname[HOST_NAME_MAX]; - _top = elm_label_add(eulogium->navi); /* TODO, dynamically update IPs, requires 'redrawing' of some sort */ - elm_object_text_set(_top, PACKAGE_VERSION); + if (gethostname(hostname, HOST_NAME_MAX) == ENAMETOOLONG) + EINA_LOG_WARN("Hostname too long."); + + _top = elm_box_add(eulogium->navi); + evas_object_size_hint_weight_set(_top, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(_top, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(_top); + obj = elm_label_add(_top); + elm_object_text_set(obj, hostname); + elm_object_style_set(obj, "slide_bounce"); + elm_label_slide_mode_set(obj, ELM_LABEL_SLIDE_MODE_AUTO); + //elm_label_slide_speed_set(obj, 2); + evas_object_show(obj); + elm_label_slide_go(obj); /* only bounce on len > width? */ + elm_box_pack_end(_top, obj); + + obj = elm_label_add(_top); + elm_object_text_set(obj, PACKAGE_VERSION); + evas_object_show(obj); + elm_box_pack_end(_top, obj); + _bottom = elm_button_add(eulogium->navi); elm_object_text_set(_bottom, _(but_return.text)); /* not pretty using the global XXX */ evas_object_smart_callback_add(_bottom, "clicked", but_return.cb.func, but_return.cb.data); evas_object_show(_bottom); content = eulogium_split_screen(eulogium->navi, _top, _bottom); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_main_mathot_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2557,7 +2583,7 @@ static void _but_main_mathot_cb(void *data, Evas_Object *object EINA_UNUSED, voi printf("Button matts pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_mathot_material, &but_mathot_hotend, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_material_1_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2568,7 +2594,7 @@ static void _but_settings_material_1_cb(void *data, Evas_Object *object EINA_UNU printf("Button matts settings 1 pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_material_1); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_material_2_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2579,7 +2605,7 @@ static void _but_settings_material_2_cb(void *data, Evas_Object *object EINA_UNU printf("Button matts settings 2 pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_material_2); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_material_customize_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2590,7 +2616,7 @@ static void _but_material_customize_cb(void *data, Evas_Object *object EINA_UNUS printf("Button matts customize pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_material_customize); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_print_tune_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2601,7 +2627,7 @@ static void _but_print_tune_cb(void *data, Evas_Object *object EINA_UNUSED, void printf("Button print tune pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_print_tune); - ui_stack_push(eulogium, content, PAGE_PRINTING); + ui_stack_push(eulogium->navi, content, PAGE_PRINTING); } static void _but_change_material_1_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2612,7 +2638,7 @@ static void _but_change_material_1_cb(void *data, Evas_Object *object EINA_UNUSE printf("Button matts change 1 pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_return, &but_return, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_change_material_2_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2623,7 +2649,7 @@ static void _but_change_material_2_cb(void *data, Evas_Object *object EINA_UNUSE printf("Button matts change 2 pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_return, &but_return, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_mathot_material_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2634,7 +2660,7 @@ static void _but_mathot_material_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button mathot material pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_material_change, &but_material_settings, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_mathot_hotend_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2645,7 +2671,7 @@ static void _but_mathot_hotend_cb(void *data, Evas_Object *object EINA_UNUSED, v printf("Button mathot hotend pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_hotend_change, &but_hotend_settings, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_hotend_1_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2656,7 +2682,7 @@ static void _but_settings_hotend_1_cb(void *data, Evas_Object *object EINA_UNUSE printf("Button hotend settings 1 pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_hotend_1_offset); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_settings_hotend_2_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2667,7 +2693,7 @@ static void _but_settings_hotend_2_cb(void *data, Evas_Object *object EINA_UNUSE printf("Button hotend settings 2 pressed\n"); content = menu_widget_list(eulogium, eulogium->navi, &menu_settings_hotend_1_offset); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_change_hotend_1_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2678,7 +2704,7 @@ static void _but_change_hotend_1_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button hotend change 1 pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_return, &but_return, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } static void _but_change_hotend_2_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) @@ -2689,7 +2715,7 @@ static void _but_change_hotend_2_cb(void *data, Evas_Object *object EINA_UNUSED, printf("Button matts change 2 pressed\n"); content = eulogium_tripple_button_menu(eulogium->navi, &but_return, &but_return, &but_return); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); } void eulogium_button_cb_set(struct button_def *button, struct button_cb *cb) @@ -3022,7 +3048,7 @@ void eulogium_generic_error(struct eulogium_data *eulogium, uint_fast16_t error_ elm_box_pack_end(content, object); #endif - ui_stack_push(eulogium, content, PAGE_ERROR); + ui_stack_push(eulogium->navi, content, PAGE_ERROR); } static void _cleaned_bed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -3097,7 +3123,7 @@ static void _cb_select_wifi(void *data, Evas_Object *eo EINA_UNUSED, void *event evas_object_show(_bottom); content = eulogium_split_screen(navi, _top, _bottom); - ui_stack_push(eulogium, content, PAGE_NORMAL); + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); network_connect_wifi(network); }; @@ -3120,14 +3146,14 @@ static void _cb_select_file(void *data, Evas_Object *obj EINA_UNUSED, void *even new_dir->dir.path = malloc(new_dir_len); /* XXX memleak, but by copying we can free _filelist_data without worry */ strncpy(new_dir->dir.path, filepath, new_dir_len); content = menu_widget_list(eulogium, eulogium->navi, new_dir); - ui_stack_push(eulogium, content, PAGE_NORMAL); /* XXX We need to set the correct page type here */ + ui_stack_push(eulogium->navi, content, PAGE_NORMAL); /* XXX We need to set the correct page type here */ } else { Evas_Object *content; eulogium_print_data_set(eulogium, filepath); procedure_print_start(&eulogium->print); content = eulogium_pre_print(eulogium->navi, eulogium); - ui_stack_push(eulogium, content, PAGE_PRINTING); + ui_stack_push(eulogium->navi, content, PAGE_PRINTING); } } } @@ -3534,9 +3560,13 @@ Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulog elm_naviframe_content_preserve_on_pop_set(eulogium->navi, EINA_FALSE); /* The main menu should be drawn first, consider changing this to 'get bottom, insert before bottom, pop_to - * instead of assuming the stack is empty */ + * instead of assuming the stack is empty | don't be stupid, we just created the navi here, so it IS empty. + * we need to ensure this is always initialized first (ui_init()?) */ content = eulogium_tripple_button_menu(eulogium->navi, &but_main_print, &but_main_mathot, &but_main_system); - ui_stack_push(eulogium, content, PAGE_BOTTOM); + ui_stack_push(eulogium->navi, content, PAGE_BOTTOM); + /* XXX Test: pop a wizard at the start dev it */ + content = wizard_add(eulogium->navi, &material_unload, 0, EINA_TRUE); + ui_stack_push(eulogium->navi, content, PAGE_WIZARD); return eulogium->navi; } @@ -3955,7 +3985,7 @@ static void _on_get_active_procedures_ret(void *data EINA_UNUSED, const Eldbus_M EINA_LOG_ERR("Unknown step %s in procedure %s", step, key); return; } - procedure_process_step(data, procedure); + procedure_process_step(procedure, data); } } } @@ -3987,7 +4017,7 @@ static void _on_procedure_start_ret(void *data, const Eldbus_Message *msg) EINA_LOG_ERR("Unknown step %s in procedure %s", step, key); return; } - procedure_process_step(data, procedure); + procedure_process_step(procedure, data); } static void _on_procedure_next_step_ret(void *data EINA_UNUSED, const Eldbus_Message *msg) @@ -4015,7 +4045,7 @@ static void _on_procedure_next_step_ret(void *data EINA_UNUSED, const Eldbus_Mes EINA_LOG_ERR("Unknown step %s in procedure %s", step, key); return; } - procedure_process_step(data, procedure); + procedure_process_step(procedure, data); } static void _on_procedure_finished_ret(void *data EINA_UNUSED, const Eldbus_Message *msg) @@ -4040,7 +4070,7 @@ static void _on_procedure_finished_ret(void *data EINA_UNUSED, const Eldbus_Mess } procedure->status = PROC_FINISHED; procedure->step_active = NULL; - procedure_process_step(data, procedure); + procedure_process_step(procedure, data); // XXX procedure_metadata_key_get(key) } @@ -4215,28 +4245,56 @@ static void eulogium_setup(struct eulogium_data *eulogium) eulogium_button_cb_data_set(&but_change_hotend_1, eulogium); eulogium_button_cb_data_set(&but_change_hotend_2, eulogium); - procedure_meta_set(&eulogium->procedures[PROC_FIRMWARE_UPDATE], &progressbars[PROC_FIRMWARE_UPDATE]); - procedure_meta_set(&eulogium->procedures[PROC_PRINT], &progressbars[PROC_PRINT]); - procedure_meta_set(&eulogium->procedures[PROC_BED_MOVE], &dials[PROC_BED_MOVE]); - procedure_meta_set(&eulogium->procedures[PROC_BED_HEATUP], &dials[PROC_BED_HEATUP]); - procedure_meta_set(&eulogium->procedures[PROC_HOTEND_HEATUP_0], &dials[PROC_HOTEND_HEATUP_0]); - procedure_meta_set(&eulogium->procedures[PROC_HOTEND_HEATUP_1], &dials[PROC_HOTEND_HEATUP_1]); - procedure_meta_set(&eulogium->procedures[PROC_PRINT_SPEED], &dials[PROC_PRINT_SPEED]); - procedure_meta_set(&eulogium->procedures[PROC_FAN_SPEED], &dials[PROC_FAN_SPEED]); - procedure_meta_set(&eulogium->procedures[PROC_FLOW_RATE], &dials[PROC_FLOW_RATE]); - procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_LENGTH], &dials[PROC_RETRACTION_LENGTH]); - procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_SPEED], &dials[PROC_RETRACTION_SPEED]); - procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_ZHOP], &dials[PROC_RETRACTION_ZHOP]); - procedure_meta_set(&eulogium->procedures[PROC_MATERIAL_MOVE_0], &dials[PROC_MATERIAL_MOVE_0]); - procedure_meta_set(&eulogium->procedures[PROC_MATERIAL_MOVE_1], &dials[PROC_MATERIAL_MOVE_1]); - procedure_meta_set(&eulogium->procedures[PROC_JERK_XY], &dials[PROC_JERK_XY]); - procedure_meta_set(&eulogium->procedures[PROC_JERK_Z], &dials[PROC_JERK_Z]); - procedure_meta_set(&eulogium->procedures[PROC_CURRENT_XY], &dials[PROC_CURRENT_XY]); - procedure_meta_set(&eulogium->procedures[PROC_CURRENT_Z], &dials[PROC_CURRENT_Z]); - procedure_meta_set(&eulogium->procedures[PROC_CURRENT_E], &dials[PROC_CURRENT_E]); + procedure_meta_set(&eulogium->procedures[PROC_FIRMWARE_UPDATE], PROC_META_PROGRESS, &progressbars[PROC_FIRMWARE_UPDATE]); + procedure_meta_set(&eulogium->procedures[PROC_PRINT], PROC_META_PROGRESS, &progressbars[PROC_PRINT]); + procedure_meta_set(&eulogium->procedures[PROC_BED_MOVE], PROC_META_SPINNER, &dials[PROC_BED_MOVE]); + procedure_meta_set(&eulogium->procedures[PROC_BED_HEATUP], PROC_META_SLIDER, &dials[PROC_BED_HEATUP]); + procedure_meta_set(&eulogium->procedures[PROC_HOTEND_HEATUP_0], PROC_META_SLIDER, &dials[PROC_HOTEND_HEATUP_0]); + procedure_meta_set(&eulogium->procedures[PROC_HOTEND_HEATUP_1], PROC_META_SLIDER, &dials[PROC_HOTEND_HEATUP_1]); + procedure_meta_set(&eulogium->procedures[PROC_PRINT_SPEED], PROC_META_SLIDER, &dials[PROC_PRINT_SPEED]); + procedure_meta_set(&eulogium->procedures[PROC_FAN_SPEED], PROC_META_SLIDER, &dials[PROC_FAN_SPEED]); + procedure_meta_set(&eulogium->procedures[PROC_FLOW_RATE], PROC_META_SLIDER, &dials[PROC_FLOW_RATE]); + procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_LENGTH], PROC_META_SLIDER, &dials[PROC_RETRACTION_LENGTH]); + procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_SPEED], PROC_META_SLIDER, &dials[PROC_RETRACTION_SPEED]); + procedure_meta_set(&eulogium->procedures[PROC_RETRACTION_ZHOP], PROC_META_SLIDER, &dials[PROC_RETRACTION_ZHOP]); + procedure_meta_set(&eulogium->procedures[PROC_MATERIAL_MOVE_0], PROC_META_SPINNER, &dials[PROC_MATERIAL_MOVE_0]); + procedure_meta_set(&eulogium->procedures[PROC_MATERIAL_MOVE_1], PROC_META_SPINNER, &dials[PROC_MATERIAL_MOVE_1]); + procedure_meta_set(&eulogium->procedures[PROC_JERK_XY], PROC_META_SLIDER, &dials[PROC_JERK_XY]); + procedure_meta_set(&eulogium->procedures[PROC_JERK_Z], PROC_META_SLIDER, &dials[PROC_JERK_Z]); + procedure_meta_set(&eulogium->procedures[PROC_CURRENT_XY], PROC_META_SLIDER, &dials[PROC_CURRENT_XY]); + procedure_meta_set(&eulogium->procedures[PROC_CURRENT_Z], PROC_META_SLIDER, &dials[PROC_CURRENT_Z]); + procedure_meta_set(&eulogium->procedures[PROC_CURRENT_E], PROC_META_SLIDER, &dials[PROC_CURRENT_E]); procedure_meta_getall(); } +void _priviledges_drop(void) +{ + char *env; + struct passwd *pwd; + + if (getuid() != 0) { + EINA_LOG_CRIT("No privileges to drop"); + return; + } + + env = getenv("EULOGIUM_GROUP"); + if (env) { + pwd = getpwnam(env); + if (setgid(pwd->pw_gid) != 0) + EINA_LOG_CRIT("Unable to change group privileges %s", strerror(errno)); + } else { + EINA_LOG_CRIT("EULOGIUM_GROUP not set, not dropping group privileges"); + } + env = getenv("EULOGIUM_USER"); + if (env) { + pwd = getpwnam(env); + if (setuid(pwd->pw_uid) != 0) + EINA_LOG_CRIT("Unable to change user privileges %s", strerror(errno)); + } else { + EINA_LOG_CRIT("EULOGIUM_USER not set, not dropping user privileges"); + } +} + EAPI_MAIN int elm_main(int argc, char **argv) { Eina_Bool quit_option = EINA_FALSE; @@ -4269,8 +4327,6 @@ EAPI_MAIN int elm_main(int argc, char **argv) int args; uint_fast8_t i; char *buf; - Eina_List *flist, *fl; - char *font; struct eulogium_data eulogium = { .mounts = NULL, .progress_data_refresh = NULL, @@ -4285,6 +4341,8 @@ EAPI_MAIN int elm_main(int argc, char **argv) // Evas_Object *splash_window; // Eina_List *engines, *l; + _priviledges_drop(); /* XXX hack until we no longer need root, this may be needed elsewhere. */ + args = ecore_getopt_parse(&optdesc, values, argc, argv); if (args < 0) { EINA_LOG_CRIT("Could not parse arguments."); @@ -4323,7 +4381,7 @@ EAPI_MAIN int elm_main(int argc, char **argv) buf = malloc((strlen(elm_app_data_dir_get()) + 20) * sizeof(char)); snprintf(buf, strlen(elm_app_data_dir_get()) + 20, "%s/themes/default.edj", elm_app_data_dir_get()); elm_theme_overlay_add(NULL, buf); /* TODO let preprocessor at work here with theme subdir and theme name */ - printf("app data dir: %s\n", buf); + EINA_LOG_DBG("app data dir: %s", buf); free(buf); #if 0 /* TODO make icon */ @@ -4388,10 +4446,6 @@ EAPI_MAIN int elm_main(int argc, char **argv) evas_object_show(window); - flist = evas_font_available_list(evas_object_evas_get(window)); - EINA_LIST_FOREACH(flist, fl, font) - printf("font: %s\n", font); - elm_run(); eldbus_connection_unref(eulogium.dbus.conn); |