summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-29 15:08:58 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-29 15:08:58 (GMT)
commite1d3e5090bc90357f4947423bfac2d70416ccef5 (patch)
tree11e45aa3aa90cffe24b63bb325b45f092254f97c /src
parent80349e2b16d7e0eaa955e38f1d5798b42d2eb845 (diff)
downloadeulogium-e1d3e5090bc90357f4947423bfac2d70416ccef5.zip
eulogium-e1d3e5090bc90357f4947423bfac2d70416ccef5.tar.gz
eulogium-e1d3e5090bc90357f4947423bfac2d70416ccef5.tar.bz2
Move (almost) all callbacks to the top, add prototypes for them
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src')
-rw-r--r--src/eulogium.c464
1 files changed, 249 insertions, 215 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index b93ada0..a0a6613 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -17,6 +17,130 @@
#define COPYRIGHT "Copyright © 2015 Olliver Schinagl <o.schinagl@ultimaker.com> and various contributors (see AUTHORS)."
+static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED);
+static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED);
+static void _but_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
+static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED);
+
+/* Buttons */
+static struct button_def but_return = {
+ .text = "RETURN",
+ .cb = {
+ .func = &_cb_content_prev_set,
+ .data = NULL,
+ .info = "return button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_print_abort = {
+ .text = "ABORT",
+ .cb = {
+ .func = _print_abort_cb,
+ .data = NULL,
+ .info = "print abort button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_print_progress_tune = {
+ .text = "TUNE",
+ .cb = {
+ .func = NULL,
+ .data = NULL,
+ .info = "tune progress button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_main_print = {
+ .text = "PRINT",
+ .cb = {
+ .func = &_cb_button_main_print,
+ .data = NULL,
+ .info = "print button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_main_material = {
+ .text = "MATERIAL",
+ .cb = {
+ .func = &_eulogium_button_main_mat_cb,
+ .data = NULL,
+ .info = "material button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_main_maintanance = {
+ .text = "MAINTANANCE",
+ .cb = {
+ .func = &_eulogium_button_main_maintanance_cb,
+ .data = NULL,
+ .info = "maintenance button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_maintanance_advanced = {
+ .text = "ADVANCED",
+ .cb = {
+ .func = &_but_maint_adv_cb,
+ .data = NULL,
+ },
+ .data = NULL,
+};
+
+static struct button_def but_maintanance_buildplate = {
+ .text = "BUILD-PLATE",
+ .cb = {
+ .func = &_but_maint_bp_cb,
+ .data = NULL,
+ },
+ .data = NULL,
+};
+
+static struct button_def but_mat_change = {
+ .text = "CHANGE",
+ .cb = {
+ .func = &_but_mat_ch_cb,
+ .data = NULL,
+ },
+ .data = NULL,
+};
+
+static struct button_def but_mat_settings = {
+ .text = "SETTINGS",
+ .cb = {
+ .func = &_but_mat_set_cb,
+ .data = NULL,
+ },
+ .data = NULL,
+};
+
+static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg;
+ Eina_Bool print_abort = EINA_FALSE;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "b", &print_abort)) {
+ EINA_LOG_ERR("Failed to abort print.");
+ return;
+ }
+}
+
static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
struct eulogium_data *eulogium = data;
@@ -30,15 +154,121 @@ static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void
elm_naviframe_item_pop(eulogium->navi);
}
-static struct button_def but_return = {
- .text = "RETURN",
- .cb = {
- .func = &_cb_content_prev_set,
- .data = NULL,
- .info = "return button pressed",
- },
- .data = NULL,
-};
+static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ Elm_Object_Item *item;
+
+ eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "abortPrint", _on_print_abort_ret, eulogium, -1, "");
+
+ item = elm_naviframe_bottom_item_get(eulogium->navi);
+ if (item)
+ elm_naviframe_item_pop_to(item); /* XXX what to do else? | XXX stack corrupted after this? (see error log) */
+ else
+ EINA_LOG_CRIT("There is no bottom of the stack!");
+
+ /* XXX Quick and ugly cleaning up */
+ eulogium->status = NULL; /* XXX memleak here too? how does efl do it */
+ eulogium->progress = NULL; /* XXX memleak here? when or how is this freeed by efl */
+
+ free(eulogium->print.name);
+ eulogium->print.name = NULL;
+ free(eulogium->print.file);
+ eulogium->print.file = NULL;
+
+ eulogium->print.time = 0;
+ eulogium->print.material = 0;
+ eulogium->print.progress = 0;
+}
+
+static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+}
+
+static void _but_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ printf("But build-plate\n");
+eldbus_proxy_call(eulogium->dbus.proxy[LED], "blink", _on_blink_ret, NULL, -1, "");
+}
+
+static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ printf("But matterial change\n");
+}
+
+static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ printf("But matterial settings\n");
+}
+
+static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ Evas_Object *content;
+
+ printf("Button maintanance pressed\n");
+ content = eulogium_tripple_button_menu(eulogium->navi, &but_maintanance_buildplate, &but_maintanance_advanced, &but_return);
+ if (!content)
+ return;
+ elm_naviframe_item_simple_push(eulogium->navi, content);
+}
+
+static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ Evas_Object *content;
+
+ printf("Button print pressed\n");
+ /* TODO: add intermediate window to list usbdrive/sdcard/youmagine */
+ content = eulogium_print_menu(eulogium, "/home"); /* TODO: replace later */
+ if (!content)
+ return;
+ elm_naviframe_item_simple_push(eulogium->navi, content);
+}
+
+static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ Evas_Object *box, *object;
+ printf("But maint advanced\n");
+
+ /* XXX Quick hack to make the adv feature a little more useful, this needs to be made much better! */
+ box = elm_box_add(eulogium->navi);
+ evas_object_show(box);
+
+ object = elm_label_add(box);
+ elm_object_text_set(object, "Ethernet IP: 1.2.3.4<br>WiFi IP: 5.6.7.8"); /* TODO: text outline left */
+ evas_object_show(object);
+ elm_box_pack_end(box, object);
+
+ object = elm_button_add(box);
+ elm_object_text_set(object, but_return.text); /* not pretty using the global XXX */
+ evas_object_smart_callback_add(object, "clicked", but_return.cb.func, but_return.cb.data);
+ evas_object_show(object);
+ elm_box_pack_end(box, object);
+
+ elm_naviframe_item_simple_push(eulogium->navi, box);
+}
+
+static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ struct eulogium_data *eulogium = data;
+ Evas_Object *content;
+
+ printf("Button matts pressed\n");
+
+ content = eulogium_tripple_button_menu(eulogium->navi, &but_mat_change, &but_mat_settings, &but_return);
+ if (!content)
+ return;
+ elm_naviframe_item_simple_push(eulogium->navi, content);
+}
Evas_Object *eulogium_button_list_add(Evas_Object *parent)
{
@@ -168,16 +398,6 @@ void eulogium_print_data_set(struct eulogium_data *eulogium, char *filepath)
eulogium->print.time = 12;
}
-static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *errname, *errmsg;
-
- if (eldbus_message_error_get(msg, &errname, &errmsg)) {
- EINA_LOG_ERR("%s %s", errname, errmsg);
- return;
- }
-}
-
/* Function to make the Z-axis of any wheel focus the next/previous focusable widget */
static void _cb_eulogium_input_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
@@ -194,48 +414,6 @@ static void _cb_eulogium_exit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
elm_exit();
}
-static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *errname, *errmsg;
- Eina_Bool print_abort = EINA_FALSE;
-
- if (eldbus_message_error_get(msg, &errname, &errmsg)) {
- EINA_LOG_ERR("%s %s", errname, errmsg);
- return;
- }
- if (!eldbus_message_arguments_get(msg, "b", &print_abort)) {
- EINA_LOG_ERR("Failed to abort print.");
- return;
- }
-}
-
-static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- Elm_Object_Item *item;
-
- eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "abortPrint", _on_print_abort_ret, eulogium, -1, "");
-
- item = elm_naviframe_bottom_item_get(eulogium->navi);
- if (item)
- elm_naviframe_item_pop_to(item); /* XXX what to do else? | XXX stack corrupted after this? (see error log) */
- else
- EINA_LOG_CRIT("There is no bottom of the stack!");
-
- /* XXX Quick and ugly cleaning up */
- eulogium->status = NULL; /* XXX memleak here too? how does efl do it */
- eulogium->progress = NULL; /* XXX memleak here? when or how is this freeed by efl */
-
- free(eulogium->print.name);
- eulogium->print.name = NULL;
- free(eulogium->print.file);
- eulogium->print.file = NULL;
-
- eulogium->print.time = 0;
- eulogium->print.material = 0;
- eulogium->print.progress = 0;
-}
-
Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_Object *bottom)
{
Evas_Object *table;
@@ -656,47 +834,6 @@ static void _eulogium_multi_screen_next_cb(void *data, Evas_Object *obj EINA_UNU
free(data);
}
-static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- Evas_Object *box, *object;
- printf("But maint advanced\n");
-
- /* XXX Quick hack to make the adv feature a little more useful, this needs to be made much better! */
- box = elm_box_add(eulogium->navi);
- evas_object_show(box);
-
- object = elm_label_add(box);
- elm_object_text_set(object, "Ethernet IP: 1.2.3.4<br>WiFi IP: 5.6.7.8"); /* TODO: text outline left */
- evas_object_show(object);
- elm_box_pack_end(box, object);
-
- object = elm_button_add(box);
- elm_object_text_set(object, but_return.text); /* not pretty using the global XXX */
- evas_object_smart_callback_add(object, "clicked", but_return.cb.func, but_return.cb.data);
- evas_object_show(object);
- elm_box_pack_end(box, object);
-
- elm_naviframe_item_simple_push(eulogium->navi, box);
-}
-
-static void _but_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- printf("But build-plate\n");
-eldbus_proxy_call(eulogium->dbus.proxy[LED], "blink", _on_blink_ret, NULL, -1, "");
-}
-
-static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- printf("But matterial change\n");
-}
-
-static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- printf("But matterial settings\n");
-}
-
static void _cb_material_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
printf("Material: %s selected\n", (char *)data);
@@ -888,111 +1025,6 @@ Evas_Object *eulogium_tripple_button_menu(Evas_Object *parent, const struct butt
return eulogium_split_screen(parent, _top, _bottom);
}
-static struct button_def but_maintanance_advanced = {
- .text = "ADVANCED",
- .cb = {
- .func = &_but_maint_adv_cb,
- .data = NULL,
- },
- .data = NULL,
-};
-
-static struct button_def but_maintanance_buildplate = {
- .text = "BUILD-PLATE",
- .cb = {
- .func = &_but_maint_bp_cb,
- .data = NULL,
- },
- .data = NULL,
-};
-
-static struct button_def but_mat_change = {
- .text = "CHANGE",
- .cb = {
- .func = &_but_mat_ch_cb,
- .data = NULL,
- },
- .data = NULL,
-};
-
-static struct button_def but_mat_settings = {
- .text = "SETTINGS",
- .cb = {
- .func = &_but_mat_set_cb,
- .data = NULL,
- },
- .data = NULL,
-};
-
-static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- Evas_Object *content;
-
- printf("Button matts pressed\n");
-
- content = eulogium_tripple_button_menu(eulogium->navi, &but_mat_change, &but_mat_settings, &but_return);
- if (!content)
- return;
- elm_naviframe_item_simple_push(eulogium->navi, content);
-}
-
-static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- Evas_Object *content;
-
- printf("Button maintanance pressed\n");
- content = eulogium_tripple_button_menu(eulogium->navi, &but_maintanance_buildplate, &but_maintanance_advanced, &but_return);
- if (!content)
- return;
- elm_naviframe_item_simple_push(eulogium->navi, content);
-}
-
-static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- struct eulogium_data *eulogium = data;
- Evas_Object *content;
-
- printf("Button print pressed\n");
- /* TODO: add intermediate window to list usbdrive/sdcard/youmagine */
- content = eulogium_print_menu(eulogium, "/home"); /* TODO: replace later */
- if (!content)
- return;
- elm_naviframe_item_simple_push(eulogium->navi, content);
-}
-
-/* Buttons */
-static struct button_def but_main_print = {
- .text = "PRINT",
- .cb = {
- .func = &_cb_button_main_print,
- .data = NULL,
- .info = "print button pressed",
- },
- .data = NULL,
-};
-
-static struct button_def but_main_material = {
- .text = "MATERIAL",
- .cb = {
- .func = &_eulogium_button_main_mat_cb,
- .data = NULL,
- .info = "material button pressed",
- },
- .data = NULL,
-};
-
-static struct button_def but_main_maintanance = {
- .text = "MAINTANANCE",
- .cb = {
- .func = &_eulogium_button_main_maintanance_cb,
- .data = NULL,
- .info = "maintenance button pressed",
- },
- .data = NULL,
-};
-
static struct multi_screen screen[] = {
{
.type = NONE,
@@ -1080,14 +1112,16 @@ static void eulogium_setup(struct eulogium_data *eulogium)
eulogium->print.progress = 0;
eulogium->print.time = 0;
eulogium->print.material = 0.0;
- eulogium_button_cb_data_set(&but_main_print, eulogium);
- eulogium_button_cb_data_set(&but_main_material, eulogium);
- eulogium_button_cb_data_set(&but_main_maintanance, eulogium);
- eulogium_button_cb_data_set(&but_mat_change, eulogium);
- eulogium_button_cb_data_set(&but_mat_settings, eulogium);
- eulogium_button_cb_data_set(&but_maintanance_buildplate, eulogium);
- eulogium_button_cb_data_set(&but_maintanance_advanced, eulogium);
- eulogium_button_cb_data_set(&but_return, eulogium);
+ eulogium_button_cb_data_set(&but_return, eulogium);
+ eulogium_button_cb_data_set(&but_print_abort, eulogium);
+ eulogium_button_cb_data_set(&but_print_progress_tune, eulogium);
+ eulogium_button_cb_data_set(&but_main_print, eulogium);
+ eulogium_button_cb_data_set(&but_main_material, eulogium);
+ eulogium_button_cb_data_set(&but_main_maintanance, eulogium);
+ eulogium_button_cb_data_set(&but_maintanance_advanced, eulogium);
+ eulogium_button_cb_data_set(&but_maintanance_buildplate, eulogium);
+ eulogium_button_cb_data_set(&but_mat_change, eulogium);
+ eulogium_button_cb_data_set(&but_mat_settings, eulogium);
}
/* TODO May need this later to change certain connections to objects */