enlightenment/src/bin/e_eap_editor.c

239 lines
6.9 KiB
C

#include "e.h"
/* local subsystem functions */
static void _e_eap_edit_save_cb(void *data, E_Dialog *dia);
static void _e_eap_edit_cancel_cb(void *data, E_Dialog *dia);
static void _e_eap_edit_browse_cb(void *data1, void *data2);
static void _e_eap_edit_free(E_App_Edit *app);
#define IFDUP(src, dst) if(src) dst = strdup(src); else dst = NULL
/* externally accessible functions */
E_App_Edit *
e_eap_edit_show(E_Container *con, E_App *a)
{
E_Manager *man;
E_App_Edit *app;
Evas_Object *o, *ol, *img;
app = E_OBJECT_ALLOC(E_App_Edit, E_EAP_EDIT_TYPE, _e_eap_edit_free);
if (!app) return NULL;
app->dia = e_dialog_new(con);
if (!app->dia)
{
free(app);
return NULL;
}
app->con = con;
e_dialog_title_set(app->dia, _("Eap Editor"));
app->evas = e_win_evas_get(app->dia->win);
app->eap = a;
ol = e_widget_list_add(app->evas, 0, 0);
o = e_widget_table_add(app->evas, _("Eap Info"), 0);
IFDUP(a->name, app->data.name);
IFDUP(a->generic, app->data.generic);
IFDUP(a->comment, app->data.comment);
IFDUP(a->exe, app->data.exe);
IFDUP(a->win_name, app->data.wname);
IFDUP(a->win_class, app->data.wclass);
IFDUP(a->win_title, app->data.wtitle);
IFDUP(a->win_role, app->data.wrole);
IFDUP(a->path, app->data.path);
if(a->path)
{
img = edje_object_add(app->evas);
edje_object_file_set(img, a->path, "icon");
}
else
{
img = edje_object_add(app->evas);
e_theme_edje_object_set(img, "base/theme/icons/enlightenment/e", "icons/enlightenment/e");
}
e_widget_table_object_append(o, e_widget_image_add_from_object(app->evas, img, 48, 48),
0, 0, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_button_add(app->evas, "Set Icon",
NULL, _e_eap_edit_browse_cb,
app, NULL),
1, 0, 1, 1,
0, 0, 0, 0);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "App name"),
0, 1, 1, 1,
1, 1, 1, 1);
{
Evas_Object *entry;
entry = e_widget_entry_add(app->evas, &(app->data.name));
e_widget_min_size_set(entry, 100, 1);
e_widget_table_object_append(o, entry,
1, 1, 1, 1,
1, 1, 1, 1);
}
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Generic Info"),
0, 2, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.generic)),
1, 2, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Comment"),
0, 3, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.comment)),
1, 3, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Executable"),
0, 4, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.exe)),
1, 4, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Name"),
0, 5, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wname)),
1, 5, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Class"),
0, 6, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wclass)),
1, 6, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Title"),
0, 7, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wtitle)),
1, 7, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Role"),
0, 8, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wrole)),
1, 8, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Icon Class"),
0, 9, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.iclass)),
1, 9, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Path"),
0, 10, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.path)),
1, 10, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Startup notify"),
0, 11, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_check_add(app->evas, "", &(app->data.startup_notify)),
1, 11, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Wait exit"),
0, 12, 1, 1,
1, 1, 1, 1);
e_widget_table_object_append(o, e_widget_check_add(app->evas, "", &(app->data.wait_exit)),
1, 12, 1, 1,
1, 1, 1, 1);
e_widget_list_object_append(ol, o, 1, 1, 0.5);
{
Evas_Coord minw, minh;
e_widget_min_size_get(ol, &minw, &minh);
e_dialog_content_set(app->dia, ol, minw, minh);
}
e_dialog_button_add(app->dia, _("Cancel"), NULL, _e_eap_edit_cancel_cb, app);
e_dialog_button_add(app->dia, _("Save"), NULL, _e_eap_edit_save_cb, app);
e_dialog_show(app->dia);
}
/* local subsystem functions */
static void
_e_eap_edit_save_cb(void *data, E_Dialog *dia)
{
E_App_Edit *editor;
E_App *eap;
editor = data;
eap = editor->eap;
if(!(editor->data.path))
return;
printf("path : %s\n", editor->data.path);
E_FREE(eap->name);
E_FREE(eap->generic);
E_FREE(eap->comment);
E_FREE(eap->exe);
E_FREE(eap->win_name);
E_FREE(eap->win_class);
E_FREE(eap->win_title);
E_FREE(eap->win_role);
E_FREE(eap->icon_class);
E_FREE(eap->path);
E_FREE(eap->image);
if(editor->data.startup_notify)
eap->startup_notify = 1;
if(editor->data.wait_exit)
eap->wait_exit = 1;
IFDUP(editor->data.name, eap->name);
IFDUP(editor->data.generic, eap->generic);
IFDUP(editor->data.comment, eap->comment);
IFDUP(editor->data.exe, eap->exe);
IFDUP(editor->data.wname, eap->win_name);
IFDUP(editor->data.wclass, eap->win_class);
IFDUP(editor->data.wtitle, eap->win_title);
IFDUP(editor->data.wrole, eap->win_role);
IFDUP(editor->data.iclass, eap->icon_class);
IFDUP(editor->data.path, eap->path);
IFDUP(editor->data.image, eap->image);
printf("eap path: %s\n", eap->path);
e_app_fields_save(eap);
_e_eap_edit_free(editor);
}
static void
_e_eap_edit_cancel_cb(void *data, E_Dialog *dia)
{
_e_eap_edit_free(data);
}
static void
_e_eap_edit_browse_cb(void *data1, void *data2)
{}
static void _e_eap_edit_free(E_App_Edit *app)
{
e_object_del(E_OBJECT(app->eap));
e_object_del(E_OBJECT(app->dia));
E_FREE(app);
}