summaryrefslogtreecommitdiffstats
path: root/src/eulogium.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eulogium.c')
-rw-r--r--src/eulogium.c268
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);