netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=096134e82fc4c6f15340d67f5057138e06206c63

commit 096134e82fc4c6f15340d67f5057138e06206c63
Author: Alastair Poole <nets...@gmail.com>
Date:   Thu Dec 31 22:58:25 2020 +0000

    menus: on other windows...
---
 src/bin/ui/ui.c              | 31 +++++++++++++++-------------
 src/bin/ui/ui.h              |  4 +---
 src/bin/ui/ui_cpu.c          | 49 +++++++++++++++++++++++++++++++++++++++++++-
 src/bin/ui/ui_process_list.c | 29 ++++++++++++++------------
 src/bin/ui/ui_util.c         |  8 ++++++--
 5 files changed, 88 insertions(+), 33 deletions(-)

diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c
index 764d677..396ebb2 100644
--- a/src/bin/ui/ui.c
+++ b/src/bin/ui/ui.c
@@ -173,7 +173,7 @@ _menu_memory_activity_clicked_cb(void *data, Evas_Object 
*obj EINA_UNUSED,
 {
    Ui *ui = data;
 
-   ui_win_memory_add(ui, ui->menu_parent);
+   ui_win_memory_add(ui, NULL);
 }
 
 static void
@@ -182,7 +182,7 @@ _menu_disk_activity_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 {
    Ui *ui = data;
 
-   ui_win_disk_add(ui, ui->menu_parent);
+   ui_win_disk_add(ui, NULL);
 }
 
 static void
@@ -191,7 +191,7 @@ _menu_sensors_activity_clicked_cb(void *data, Evas_Object 
*obj EINA_UNUSED,
 {
    Ui *ui = data;
 
-   ui_win_sensors_add(ui, ui->menu_parent);
+   ui_win_sensors_add(ui, NULL);
 }
 
 static void
@@ -200,7 +200,7 @@ _menu_cpu_activity_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 {
    Ui *ui = data;
 
-   ui_win_cpu_add(ui, ui->menu_parent);
+   ui_win_cpu_add(ui, NULL);
 }
 
 static void
@@ -298,7 +298,7 @@ _menu_focus_cb(void *data)
    return EINA_FALSE;
 }
 
-void
+Evas_Object *
 evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, Evas_Object *obj)
 {
    Evas_Object *o, *bx, *bx2, *hbox, *sep, *fr, *sli;
@@ -326,7 +326,6 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, 
Evas_Object *obj)
    elm_object_content_set(fr, bx);
    elm_object_content_set(o, fr);
 
-   ui->menu_parent = parent;
    hbox = elm_box_add(o);
    elm_box_horizontal_set(hbox, 1);
    evas_object_size_hint_align_set(hbox, FILL, FILL);
@@ -371,6 +370,17 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, 
Evas_Object *obj)
    elm_box_pack_end(hbox, btn);
    elm_box_pack_end(bx, hbox);
 
+
+   elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_UP,
+                                       ELM_CTXPOPUP_DIRECTION_DOWN,
+                                       ELM_CTXPOPUP_DIRECTION_LEFT,
+                                       ELM_CTXPOPUP_DIRECTION_RIGHT);
+   evas_object_move(o, ox + (ow / 2), oy + oh);
+   evas_object_show(o);
+   ecore_timer_add(0.5, _menu_focus_cb, it_focus);
+
+   if (parent != ui->proc.win) return o;
+
    fr = elm_frame_add(o);
    elm_object_text_set(fr, _("Options"));
    evas_object_size_hint_weight_set(fr, EXPAND, EXPAND);
@@ -430,14 +440,7 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, 
Evas_Object *obj)
    elm_object_content_set(fr, bx2);
    elm_box_pack_end(bx, fr);
 
-   elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_UP,
-                                       ELM_CTXPOPUP_DIRECTION_DOWN,
-                                       ELM_CTXPOPUP_DIRECTION_LEFT,
-                                       ELM_CTXPOPUP_DIRECTION_RIGHT);
-   evas_object_move(o, ox + (ow / 2), oy + oh);
-   evas_object_show(o);
-   ui->menu = o;
-   ecore_timer_add(0.5, _menu_focus_cb, it_focus);
+   return o;
 }
 
 static void
diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h
index 785ad31..8e31efb 100644
--- a/src/bin/ui/ui.h
+++ b/src/bin/ui/ui.h
@@ -38,8 +38,6 @@ typedef struct Ui
    } proc;
 
    Evas_Object     *win_about;
-   Evas_Object     *menu;
-   Evas_Object     *menu_parent;
 
    struct
    {
@@ -85,7 +83,7 @@ evisum_ui_init(void);
 void
 evisum_ui_shutdown(Ui *ui);
 
-void
+Evas_Object *
 evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, Evas_Object *obj);
 
 void
diff --git a/src/bin/ui/ui_cpu.c b/src/bin/ui/ui_cpu.c
index 18da922..d91ea29 100644
--- a/src/bin/ui/ui_cpu.c
+++ b/src/bin/ui/ui_cpu.c
@@ -13,6 +13,8 @@ typedef struct {
    Ecore_Thread   *thread;
 
    Evas_Object    *win;
+   Evas_Object    *menu;
+   Evas_Object    *btn_menu;
    Evas_Object    *bg;
    Evas_Object    *obj;
 
@@ -432,6 +434,22 @@ _colors_fill(Evas_Object *colors)
    evas_object_image_data_update_add(colors, 0, 0, 101, 1);
 }
 
+static void
+_win_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Coord w, h;
+   Evas_Event_Mouse_Move *ev;
+   Animate *ad = data;
+
+   ev = event_info;
+   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+
+   if (ev->cur.output.x >= (w - 128) && ev->cur.output.y <= 128)
+     evas_object_show(ad->btn_menu);
+   else
+     evas_object_hide(ad->btn_menu);
+}
+
 static void
 _win_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
@@ -448,11 +466,28 @@ _win_key_down_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
      evas_object_del(ad->ui->cpu.win);
 }
 
+static void
+_btn_menu_clicked_cb(void *data, Evas_Object *obj,
+                     void *event_info EINA_UNUSED)
+{
+   Ui *ui;
+   Animate *ad = data;
+
+   ui = ad->ui;
+   if (!ad->menu)
+     ad->menu = evisum_ui_main_menu_create(ui, ui->cpu.win, obj);
+   else
+     {
+        evas_object_del(ad->menu);
+        ad->menu = NULL;
+     }
+}
+
 static Animate *
 _graph(Ui *ui, Evas_Object *parent)
 {
    Evas_Object *tbl, *tbl2, *box, *obj, *ic, *lb, *rec;
-   Evas_Object *fr, *bx, *hbx, *colors, *check;
+   Evas_Object *fr, *bx, *hbx, *colors, *check, *btn;
    int i, f;
    char buf[128];
 
@@ -570,6 +605,17 @@ _graph(Ui *ui, Evas_Object *parent)
         ad->explainers = eina_list_append(ad->explainers, exp);
      }
 
+   ad->btn_menu = btn = elm_button_add(parent);
+   ic = elm_icon_add(btn);
+   elm_icon_standard_set(ic, evisum_icon_path_get("menu"));
+   elm_object_part_content_set(btn, "icon", ic);
+   evas_object_size_hint_min_set(ic, ELM_SCALE_SIZE(16), 1);
+   evas_object_show(ic);
+   evas_object_size_hint_weight_set(btn, 1.0, 1.0);
+   evas_object_size_hint_align_set(btn, 1.0, 0);
+   evas_object_smart_callback_add(btn, "clicked", _btn_menu_clicked_cb, ad);
+   elm_table_pack(tbl, btn, 0, 0, 5, ad->cpu_count);
+
    bx = elm_box_add(box);
    evas_object_size_hint_align_set(bx, FILL, FILL);
    evas_object_size_hint_weight_set(bx, EXPAND, EXPAND);
@@ -767,6 +813,7 @@ ui_win_cpu_add(Ui *ui, Evas_Object *parent)
 
    ad = _graph(ui, box);
    evas_object_event_callback_add(scroller, EVAS_CALLBACK_KEY_DOWN, 
_win_key_down_cb, ad);
+   evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_MOVE, 
_win_mouse_move_cb, ad);
    elm_object_content_set(scroller, box);
    elm_object_content_set(win, scroller);
 
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index 757f101..47fb6ba 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -27,6 +27,7 @@ typedef struct
    Ui                    *ui;
 
    Evas_Object           *win;
+   Evas_Object           *main_menu;
    Evas_Object           *menu;
 
    pid_t                  selected_pid;
@@ -508,8 +509,6 @@ _content_get(void *data, Evas_Object *obj, const char 
*source)
    if (!EINA_DBL_EQ(value, last))
      elm_progressbar_value_set(pb, proc->cpu_usage / 100.0);
    evas_object_show(pb);
-   // Let the genlist resize but align the text.
-   elm_table_align_set(it->obj, 0, 0.5);
 
    return it->obj;
 }
@@ -1159,12 +1158,12 @@ static void
 _main_menu_dismissed_cb(void *data, Evas_Object *obj EINA_UNUSED,
                         void *ev EINA_UNUSED)
 {
-   Ui *ui = data;
+   Ui_Data *pd = data;
 
-   elm_ctxpopup_dismiss(ui->menu);
-   evas_object_del(ui->menu);
+   elm_ctxpopup_dismiss(pd->main_menu);
+   evas_object_del(pd->main_menu);
 
-   ui->menu = NULL;
+   pd->main_menu = NULL;
 }
 
 static Evas_Object *
@@ -1194,12 +1193,16 @@ static void
 _btn_menu_clicked_cb(void *data, Evas_Object *obj,
                      void *event_info EINA_UNUSED)
 {
-   Ui *ui = data;
+   Ui_Data *pd;
+   Ui *ui;
+
+   pd = data;
+   ui = pd->ui;
 
-   if (!ui->menu)
-     evisum_ui_main_menu_create(ui, ui->proc.win, obj);
+   if (!pd->main_menu)
+     pd->main_menu = evisum_ui_main_menu_create(ui, ui->proc.win, obj);
    else
-     _main_menu_dismissed_cb(ui, NULL, NULL);
+     _main_menu_dismissed_cb(pd, NULL, NULL);
 }
 
 static void
@@ -1243,7 +1246,7 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent)
    elm_table_padding_set(tbl, PAD_W, 0);
 
    pd->btn_menu = btn = _btn_create(tbl, "menu", _("Menu"),
-                                    _btn_menu_clicked_cb, ui);
+                                    _btn_menu_clicked_cb, pd);
    elm_table_pack(tbl, btn, i++, 1, 1, 1);
 
    pd->btn_cmd = btn = elm_button_add(parent);
@@ -1558,8 +1561,8 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
    elm_genlist_realized_items_update(pd->genlist);
 
    evas_object_lower(pd->entry_pop);
-   if (ui->menu)
-     _main_menu_dismissed_cb(ui, NULL, NULL);
+   if (pd->main_menu)
+     _main_menu_dismissed_cb(pd, NULL, NULL);
 
    if (!pd->resize_timer)
      pd->resize_timer = ecore_timer_add(0.1, _resize_timer_cb, pd);
diff --git a/src/bin/ui/ui_util.c b/src/bin/ui/ui_util.c
index e23a084..f810e0b 100644
--- a/src/bin/ui/ui_util.c
+++ b/src/bin/ui/ui_util.c
@@ -403,9 +403,13 @@ evisum_about_window_show(void *data)
 
    ui = data;
 
-   if (ui->win_about) return;
+   if (ui->win_about)
+     {
+        elm_win_raise(ui->win_about);
+        return;
+     }
 
-   ui->win_about = win = elm_win_add(ui->menu_parent, "evisum", 
ELM_WIN_DIALOG_BASIC);
+   ui->win_about = win = elm_win_util_standard_add("evisum", "evisum");
    elm_win_autodel_set(win, EINA_TRUE);
    elm_win_title_set(win, _("About"));
 

-- 


Reply via email to