Ex_Tab * _ex_tab_new(Exhibit *e, char *dir) { Ex_Tab *tab; Etk_Tree_Model *imodel; char *file; file = NULL; tab = calloc(1, sizeof(Ex_Tab)); //tab->num = eina_list_count(e->tabs); tab->dirs = NULL; if (!dir) { D(("NO DIR\n")); exit(-1); } D(("Creating new tab with %s\n", dir)); if (e->options->default_view == EX_IMAGE_FIT_TO_WINDOW) { tab->fit_window = ETK_TRUE; D(("Setting EX_IMAGE_FIT_TO_WINDOW\n")); } else tab->fit_window = ETK_FALSE; tab->comment.visible = ETK_FALSE; tab->image_loaded = ETK_FALSE; tab->dtree = etk_tree_new(); etk_widget_size_request_set(tab->dtree, 180, 120); etk_signal_connect("row-clicked", ETK_OBJECT(tab->dtree), ETK_CALLBACK(_ex_tab_dtree_item_clicked_cb), e); tab->dcol = etk_tree_col_new(ETK_TREE(tab->dtree), "Directories", 10, 0.0); etk_tree_col_model_add(tab->dcol, etk_tree_model_image_new()); etk_tree_col_model_add(tab->dcol, etk_tree_model_text_new()); etk_tree_headers_visible_set(ETK_TREE(tab->dtree), 0); etk_scrolled_view_policy_set(etk_tree_scrolled_view_get(ETK_TREE(tab->dtree)), ETK_POLICY_AUTO, ETK_POLICY_SHOW); etk_tree_build(ETK_TREE(tab->dtree)); tab->itree = etk_tree_new(); etk_scrolled_view_dragable_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), ETK_TRUE); etk_scrolled_view_drag_bouncy_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), ETK_FALSE); etk_scrolled_view_drag_damping_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), 300); etk_widget_dnd_source_set(ETK_WIDGET(tab->itree), ETK_TRUE); // etk_signal_connect("drag_begin", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_tree_drag_begin_cb), tab); etk_widget_size_request_set(tab->itree, 180, 220); etk_tree_multiple_select_set(ETK_TREE(tab->itree), ETK_TRUE); etk_signal_connect("row-selected", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_itree_item_clicked_cb), e); etk_signal_connect("key-down", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_itree_key_down_cb), e); imodel = etk_tree_model_wobbly_new(); tab->imodel = imodel; //etk_tree_model_image_width_set(imodel, 80, 0.0); tab->icol = etk_tree_col_new(ETK_TREE(tab->itree), "Files", 10, 0.0); etk_tree_col_model_add(tab->icol, imodel); etk_tree_col_model_add(tab->icol, etk_tree_model_text_new()); etk_tree_headers_visible_set(ETK_TREE(tab->itree), 0); etk_tree_rows_height_set(ETK_TREE(tab->itree), 60); etk_scrolled_view_policy_set(etk_tree_scrolled_view_get(ETK_TREE(tab->itree)), ETK_POLICY_AUTO, ETK_POLICY_SHOW); etk_tree_build(ETK_TREE(tab->itree)); tab->dir = _ex_path_normalize(ecore_file_realpath(dir)); tab->alignment = etk_alignment_new(0.5, 0.5, 1.0, 1.0); tab->image = etk_image_new(); etk_widget_theme_file_set(tab->image, PACKAGE_DATA_DIR"/gui.edj"); etk_widget_theme_group_set(tab->image, "image_bg"); etk_signal_connect("mouse-down", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_down), e); etk_signal_connect("mouse-up", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_up), e); etk_signal_connect("mouse-move", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_move), e); etk_signal_connect("mouse-wheel", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_wheel), e); etk_image_keep_aspect_set(ETK_IMAGE(tab->image), ETK_TRUE); etk_container_add(ETK_CONTAINER(tab->alignment), tab->image); tab->scrolled_view = etk_scrolled_view_new(); etk_scrolled_view_policy_set(ETK_SCROLLED_VIEW(tab->scrolled_view), ETK_POLICY_HIDE, ETK_POLICY_HIDE); etk_scrolled_view_dragable_set(ETK_SCROLLED_VIEW(tab->scrolled_view), ETK_TRUE); etk_scrolled_view_drag_bouncy_set((ETK_SCROLLED_VIEW(tab->scrolled_view)), ETK_FALSE); etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(tab->scrolled_view), tab->alignment); etk_widget_has_event_object_set(tab->scrolled_view, ETK_TRUE); etk_signal_connect("mouse-wheel", ETK_OBJECT(tab->scrolled_view), ETK_CALLBACK(_ex_image_mouse_wheel), e); return tab; }
static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data) { Ex_Tab *tab; Etk_Tree *tree; Etk_Tree_Row *row; Etk_Widget *drag; Etk_Widget *image; Eina_List *rows; char *icol1_string; char *icol2_string; char *drag_data; const char **types; unsigned int num_types; tab = data; tree = ETK_TREE(object); /* TODO: reimplement dnd when it is reimplemented in Etk drag = (ETK_WIDGET(tree))->drag; */ drag = NULL; rows = etk_tree_selected_rows_get(tree); types = calloc(1, sizeof(char*)); num_types = 1; types[0] = strdup("text/uri-list"); if (eina_list_count(rows) > 1) { Eina_List *ll; Etk_Widget *table; int i = 0, l = 0, r = 0, t = 0, b = 0, row_num; if (eina_list_count(rows) >= EX_DND_COL_NUM) row_num = eina_list_count(rows) / EX_DND_COL_NUM; else row_num = 1; table = etk_table_new(EX_DND_COL_NUM, row_num + 1, ETK_TABLE_HOMOGENEOUS); drag_data = calloc(PATH_MAX * eina_list_count(rows), sizeof(char)); EINA_LIST_FOREACH(rows, ll, row) { char tmp[PATH_MAX]; etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), &icol1_string, &icol2_string, etk_tree_nth_col_get(tree, 1),NULL); snprintf(tmp, PATH_MAX * sizeof(char), "file://%s%s\r\n", tab->dir, icol2_string); strncat(drag_data, tmp, PATH_MAX * eina_list_count(rows)); if (i <= EX_DND_MAX_NUM * EX_DND_MAX_NUM) { image = etk_image_new_from_file(icol1_string, NULL); etk_image_keep_aspect_set(ETK_IMAGE(image), ETK_TRUE); etk_widget_size_request_set(image, 48, 48); etk_table_attach(ETK_TABLE(table), image, l, r, t, b, ETK_TABLE_NONE, 3, 3); ++l; ++r; if (l == EX_DND_COL_NUM) { l = r = 0; ++t; ++b; } } ++i; }
void emphasis_configgui_save(Emphasis_Config_Gui *configgui) { Emphasis_Config *config; char *key = NULL, *value = NULL; int reconnect = 0; config = config_load(); if((key = config->hostname)) { value = strdup(etk_entry_text_get(ETK_ENTRY(configgui->hostname))); if(strcmp(key,value)) { reconnect = 1; } free(config->hostname); } config->hostname = value; if((key = config->password)) { value = strdup(etk_entry_text_get(ETK_ENTRY(configgui->password))); if(!reconnect && strcmp(key,value)) { reconnect = 1; } free(config->password); } config->password = value; if(!reconnect && config->port != etk_range_value_get(ETK_RANGE(configgui->port))) { reconnect = 1; } config->port = etk_range_value_get(ETK_RANGE(configgui->port)); config->crossfade = etk_range_value_get(ETK_RANGE(configgui->xfade)); config->stop_on_exit = etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(configgui->stop)); config->keep_aspect = etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(configgui->aspect)); if(configgui->data) { etk_image_keep_aspect_set (ETK_IMAGE(((Emphasis_Gui*)configgui->data)->player->small.cover), config->keep_aspect); etk_image_keep_aspect_set (ETK_IMAGE(((Emphasis_Gui*)configgui->data)->player->full.cover), config->keep_aspect); } mpc_set_crossfade(config->crossfade); config_save(config); config_free(config); if(reconnect) { Emphasis_Gui *gui = configgui->data; emphasis_player_cover_set(gui->player, NULL); emphasis_player_progress_set(gui->player, 0.0, 0.001); mpc_disconnect(); } }