179 lines
6.2 KiB
C
179 lines
6.2 KiB
C
#include "ephoto.h"
|
|
|
|
/*Ewl Callbacks*/
|
|
static void destroy(Ewl_Widget *w, void *event, void *data);
|
|
static void window_fullscreen(Ewl_Widget *w, void *event, void *data);
|
|
|
|
/*Ephoto Global Variables*/
|
|
Ephoto_Main *em;
|
|
|
|
/*Destroy the Main Window*/
|
|
static void destroy(Ewl_Widget *w, void *event, void *data)
|
|
{
|
|
ewl_widget_destroy(em->win);
|
|
ecore_hash_destroy(em->types);
|
|
ecore_list_destroy(em->directories);
|
|
ecore_dlist_destroy(em->images);
|
|
free(em->current_directory);
|
|
free(em);
|
|
ewl_main_quit();
|
|
return;
|
|
}
|
|
|
|
static void window_fullscreen(Ewl_Widget *w, void *event, void *data)
|
|
{
|
|
int fullscreen;
|
|
|
|
fullscreen = ewl_window_fullscreen_get(EWL_WINDOW(em->win));
|
|
if(!fullscreen)
|
|
{
|
|
ewl_window_fullscreen_set(EWL_WINDOW(em->win), 1);
|
|
}
|
|
else
|
|
{
|
|
ewl_window_fullscreen_set(EWL_WINDOW(em->win), 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/*Create the Main Ephoto Window*/
|
|
void create_main(void)
|
|
{
|
|
char buf[PATH_MAX];
|
|
Ewl_Widget *vbox, *hbox, *vsep, *button;
|
|
Ewl_Widget *mb, *menu, *mi;
|
|
|
|
/*Initialize our main Structure*/
|
|
em = NULL;
|
|
em = calloc(1, sizeof(Ephoto_Main));
|
|
|
|
/*Set up our Lists*/
|
|
em->directories = ecore_list_new();
|
|
em->images = ecore_dlist_new();
|
|
|
|
/*Set up the image types hash*/
|
|
em->types = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
|
ecore_hash_set(em->types, "image/gif", "image");
|
|
ecore_hash_set(em->types, "image/jpeg", "image");
|
|
ecore_hash_set(em->types, "image/png", "image");
|
|
ecore_hash_set(em->types, "image/svg+xml", "image");
|
|
ecore_hash_set(em->types, "image/tiff", "image");
|
|
|
|
getcwd(buf, PATH_MAX);
|
|
buf[sizeof(buf)-1] = '\0';
|
|
em->current_directory = strdup(buf);
|
|
|
|
em->win = add_window("Ephoto!", 800, 600, destroy, NULL);
|
|
|
|
vbox = add_box(em->win, EWL_ORIENTATION_VERTICAL, 5);
|
|
ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL);
|
|
|
|
mb = add_menubar(vbox);
|
|
menu = add_menu(mb, "File");
|
|
em->smi = add_menu_item(menu, "Save Image As",
|
|
PACKAGE_DATA_DIR "/images/stock_save-as.png",
|
|
save_dialog, NULL);
|
|
ewl_widget_disable(em->smi);
|
|
mi = add_menu_item(menu, "Exit",
|
|
PACKAGE_DATA_DIR "/images/exit.png",
|
|
destroy, NULL);
|
|
menu = add_menu(mb, "Albums");
|
|
|
|
menu = add_menu(mb, "Help");
|
|
mi = add_menu_item(menu, "About",
|
|
PACKAGE_DATA_DIR "/images/stock_help.png",
|
|
about_dialog, NULL);
|
|
|
|
em->view = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 1);
|
|
ewl_object_fill_policy_set(EWL_OBJECT(em->view), EWL_FLAG_FILL_ALL);
|
|
|
|
em->view_box = ewl_notebook_new();
|
|
ewl_notebook_tabbar_visible_set(EWL_NOTEBOOK(em->view_box), 0);
|
|
ewl_object_fill_policy_set(EWL_OBJECT(em->view_box), EWL_FLAG_FILL_ALL);
|
|
ewl_container_child_append(EWL_CONTAINER(em->view), em->view_box);
|
|
ewl_widget_show(em->view_box);
|
|
|
|
add_normal_view(em->view_box);
|
|
|
|
add_single_view(em->view_box);
|
|
|
|
add_list_view(em->view_box);
|
|
|
|
add_edit_view(em->view_box);
|
|
|
|
em->toolbar = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 5);
|
|
ewl_object_alignment_set(EWL_OBJECT(em->toolbar), EWL_FLAG_ALIGN_CENTER);
|
|
ewl_object_fill_policy_set(EWL_OBJECT(em->toolbar), EWL_FLAG_FILL_SHRINK);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/normal_view.png",
|
|
show_normal_view, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("Normal View"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/list_view.png",
|
|
show_list_view, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("List View"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/image.png",
|
|
show_single_view, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("Single View"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/edit_view.png",
|
|
show_edit_view, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("Move to edit view"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
vsep = ewl_vseparator_new();
|
|
ewl_container_child_append(EWL_CONTAINER(em->toolbar), vsep);
|
|
ewl_widget_show(vsep);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/get_exif.png",
|
|
NULL, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("You do not have libexif 0.6.13"));
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
#ifdef BUILD_EXIF_SUPPORT
|
|
ewl_callback_append(button, EWL_CALLBACK_CLICKED, display_exif_dialog,
|
|
NULL);
|
|
ewl_attach_tooltip_text_set(button, _("View Exif Data"));
|
|
#endif
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/stock_fullscreen.png",
|
|
window_fullscreen, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("Toggle Fullscreen"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
button = add_button(em->toolbar, NULL,
|
|
PACKAGE_DATA_DIR "/images/x-office-presentation.png",
|
|
start_slideshow, NULL);
|
|
ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
|
|
ewl_attach_tooltip_text_set(button, _("Start a Slideshow"));
|
|
ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
|
|
ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
|
|
|
|
show_browser(NULL, NULL, NULL);
|
|
|
|
return;
|
|
}
|
|
|
|
|