From 73b2d015f196a55c67d0066794cef740258ef712 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Wed, 1 Jul 2020 11:00:19 +0100 Subject: [PATCH] evisum: Minor Changes --- NEWS | 1 + src/bin/ui/ui.c | 63 ++++++++++++++++++++++++++++++++---- src/bin/ui/ui_process_view.c | 3 +- 3 files changed, 60 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index ec562fd..4cba82d 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,7 @@ Evisum 0.5.0 * Massive rearrangement of the source tree. * Indicate process list sorting. * Fix swap calculation on macOS. + * Allow user to attach to a process (no more excuses users!!!). * Add an about window. ============ diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 0e6b926..389fb1e 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -603,7 +603,7 @@ _btn_icon_state_update(Evas_Object *button, Eina_Bool reverse) Evas_Object *icon = elm_icon_add(button); if (_selected) - evas_object_color_set(_selected, 128, 128, 128, 255); + evas_object_color_set(_selected, 47, 153, 255, 255); if (reverse) elm_icon_standard_set(icon, evisum_icon_path_get("go-down")); @@ -611,7 +611,7 @@ _btn_icon_state_update(Evas_Object *button, Eina_Bool reverse) elm_icon_standard_set(icon, evisum_icon_path_get("go-up")); _selected = icon; - evas_object_color_set(_selected, 192, 192, 192, 255); + evas_object_color_set(_selected, 228, 228, 228, 255); elm_object_part_content_set(button, "icon", icon); evas_object_show(icon); @@ -628,11 +628,11 @@ _btn_icon_state_init(Evas_Object *button, Eina_Bool reverse, Eina_Bool selected) elm_icon_standard_set(icon, evisum_icon_path_get("go-up")); if (!selected) - evas_object_color_set(icon, 128, 128, 128, 255); + evas_object_color_set(icon, 47, 153, 255, 255); else { _selected = icon; - evas_object_color_set(icon, 192, 192, 192, 255); + evas_object_color_set(icon, 228, 228, 228, 255); } elm_object_part_content_set(button, "icon", icon); @@ -828,6 +828,16 @@ _item_menu_priority_decrease_cb(void *data, Evas_Object *obj EINA_UNUSED, setpriority(PRIO_PROCESS, proc->pid, proc->nice + 1); } +static void +_item_menu_debug_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + int *pid = data; + if (!pid) return; + + ecore_exe_run(eina_slstr_printf("terminology -e gdb attach %d", *pid), NULL); +} + static void _item_menu_priority_add(Evas_Object *menu, Elm_Object_Item *menu_it, Proc_Info *proc) @@ -844,14 +854,28 @@ _item_menu_priority_add(Evas_Object *menu, Elm_Object_Item *menu_it, elm_object_item_disabled_set(it, EINA_TRUE); } +static void +_item_menu_actions_add(Evas_Object *menu, Elm_Object_Item *menu_it, + pid_t *pid) +{ + if (ecore_file_app_installed("terminology")) + elm_menu_item_add(menu, menu_it, evisum_icon_path_get("terminology"), + _("Debug"), _item_menu_debug_cb, pid); +} + static Evas_Object * _item_menu_create(Ui *ui, Proc_Info *proc) { Elm_Object_Item *menu_it, *menu_it2; Evas_Object *menu; Eina_Bool stopped; + static pid_t pid; + if (!proc) return NULL; + pid = proc->pid; + + printf("pid is %d\n", pid); ui->menu = menu = elm_menu_add(ui->win); if (!menu) return NULL; @@ -868,6 +892,13 @@ _item_menu_create(Ui *ui, Proc_Info *proc) _item_menu_priority_add(menu, menu_it2, proc); elm_menu_item_separator_add(menu, menu_it); + + menu_it2 = elm_menu_item_add(menu, menu_it, evisum_icon_path_get("window"), + _("Actions"), NULL, NULL); + _item_menu_actions_add(menu, menu_it2, &pid); + + elm_menu_item_separator_add(menu, menu_it); + menu_it2 = elm_menu_item_add(menu, menu_it, evisum_icon_path_get("start"), _("Start"), _item_menu_start_cb, proc); @@ -932,6 +963,21 @@ _item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) ui_process_win_add(ui->win, proc->pid, proc->command); } +static void +_genlist_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Ui *ui; + Evas_Coord w, ow; + + ui = data; + + evas_object_geometry_get(ui->genlist_procs, NULL, NULL, &ow, NULL); + evas_object_geometry_get(ui->win, NULL, NULL, &w, NULL); + + if (ow > w) + elm_genlist_realized_items_update(ui->genlist_procs); +} + static void _ui_content_system_add(Ui *ui) { @@ -1061,14 +1107,17 @@ _ui_content_system_add(Ui *ui) ui->scroller = ui->genlist_procs = plist = elm_genlist_add(parent); elm_scroller_gravity_set(ui->scroller, 0.0, 1.0); elm_object_focus_allow_set(plist, EINA_FALSE); + elm_scroller_policy_set(ui->scroller, ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_AUTO); elm_genlist_homogeneous_set(plist, EINA_TRUE); evas_object_size_hint_weight_set(plist, EXPAND, EXPAND); evas_object_size_hint_align_set(plist, FILL, FILL); evas_object_show(plist); + evas_object_event_callback_add(ui->genlist_procs, EVAS_CALLBACK_RESIZE, + _genlist_resize_cb, ui); elm_box_pack_end(box, table); elm_box_pack_end(box, plist); - elm_win_resize_object_add(ui->win, box); evas_object_smart_callback_add(ui->btn_pid, "clicked", _btn_pid_clicked_cb, ui); @@ -1176,7 +1225,7 @@ static Evas_Object * _ui_content_add(Evas_Object *parent, Ui *ui) { Evas_Object *table, *box, *entry, *hbox, *frame; - Evas_Object *border, *ic; + Evas_Object *border; ui->content = table = elm_table_add(parent); evas_object_size_hint_weight_set(table, EXPAND, EXPAND); @@ -1216,12 +1265,14 @@ _ui_content_add(Evas_Object *parent, Ui *ui) elm_entry_editable_set(entry, EINA_TRUE); evas_object_show(entry); + /* ic = elm_icon_add(parent); elm_icon_standard_set(ic, evisum_icon_path_get("find")); evas_object_size_hint_min_set(ic, 24, 24); evas_object_show(ic); evas_object_color_set(ic, 64, 64, 64, 255); elm_object_part_content_set(entry, "icon", ic); + */ elm_object_content_set(border, entry); elm_box_pack_end(box, border); diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c index d1c193e..3457ffa 100644 --- a/src/bin/ui/ui_process_view.c +++ b/src/bin/ui/ui_process_view.c @@ -775,7 +775,7 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) ui->btn_thread_cpu_usage = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); - elm_object_text_set(btn, _("CPU Usage")); + elm_object_text_set(btn, _("CPU %")); _btn_icon_state_set(btn, ui->sort_reverse); evas_object_show(btn); evas_object_smart_callback_add(btn, "clicked", @@ -1048,6 +1048,7 @@ ui_process_win_add(Evas_Object *parent_win, int pid, const char *cmd) evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, ui); + evas_object_resize(win, 480 * elm_config_scale_get(), -1); evas_object_geometry_get(parent_win, &x, &y, &w, &h); if (x > 0 && y > 0) evas_object_move(win, x + 20, y + 10);