menus: on other windows...

This commit is contained in:
Alastair Poole 2020-12-31 22:58:25 +00:00
parent 4a0f35c7b1
commit 096134e82f
5 changed files with 88 additions and 33 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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;
if (!ui->menu)
evisum_ui_main_menu_create(ui, ui->proc.win, obj);
pd = data;
ui = pd->ui;
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);

View File

@ -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"));