/* Put some buttons of the toolbar as sensitive according to some options */ void toolbar_refresh_buttons(void) { CalcFeatures features; if (toolbar_wnd.toolbar == NULL) return; features = ticalcs_calc_features(calc_handle); gtk_widget_set_sensitive(toolbar_wnd.button10, features & OPS_ISREADY); gtk_widget_set_sensitive(toolbar_wnd.button11, features & OPS_DIRLIST); gtk_widget_set_sensitive(toolbar_wnd.button12, features & OPS_BACKUP); gtk_widget_set_sensitive(toolbar_wnd.button13, features & OPS_BACKUP); gtk_widget_set_sensitive(toolbar_wnd.button14, !(features & FTS_SILENT) || !options.full_gui); gtk_widget_show(toolbar_wnd.button15); gtk_widget_set_sensitive(menubar_wnd.backup, features & OPS_BACKUP); gtk_widget_set_sensitive(menubar_wnd.restore, features & OPS_BACKUP); gtk_widget_set_sensitive(menubar_wnd.setclock, features & OPS_CLOCK); gtk_widget_set_sensitive(menubar_wnd.idlist, features & OPS_IDLIST); gtk_widget_set_sensitive(menubar_wnd.dumprom, features & OPS_ROMDUMP); gtk_widget_set_sensitive(menubar_wnd.restore, features & OPS_BACKUP); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menubar_wnd.viewlocal), options.full_gui); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menubar_wnd.showall), options.show_all); }
TILP_EXPORT void on_treeview1_drag_begin(GtkWidget * widget, GdkDragContext * drag_context, gpointer user_data) { // Folder if (!strcmp(name_to_drag, NODEx) && (ticalcs_calc_features(calc_handle) & FTS_FOLDER)) ctree_select_vars(!0); // Variables else if (!strcmp(name_to_drag, NODE3) && !(ticalcs_calc_features(calc_handle) & FTS_FOLDER)) ctree_select_vars(!0); // Variables else if (!strcmp(name_to_drag, NODE3) && (ticalcs_calc_features(calc_handle) & FTS_FOLDER)) ctree_select_vars(!0); // Applications else if (!strcmp(name_to_drag, NODE4) && (ticalcs_calc_features(calc_handle) & FTS_FLASH)) ctree_select_vars(!0); }
gint display_clock_dbox() { GError* error = NULL; GtkWidget *dbox; gint result; int err; if(!(ticalcs_calc_features(calc_handle) & OPS_CLOCK)) { gif->msg_box1(_("Error"), _("No clock support!")); return -1; } err = ticalcs_calc_isready(calc_handle); if(err) { tilp_err(err); return -1; } if(tilp_calc_check_version("2.08") < 0) return -1; err = ticalcs_calc_get_clock(calc_handle, &tmp_clk); if(err) { tilp_err(err); return -1; } tilp_info("%02i/%02i/%02i %02i:%02i:%02i, %s, %s\n", tmp_clk.day, tmp_clk.month, tmp_clk.year, tmp_clk.hours, tmp_clk.minutes, tmp_clk.seconds, (tmp_clk.time_format == 12) ? "12" : "24", ticalcs_clock_format2date(options.calc_model, tmp_clk.date_format)); builder = gtk_builder_new(); if (!gtk_builder_add_from_file (builder, tilp_paths_build_builder("clock.ui"), &error)) { g_warning (_("Couldn't load builder file: %s\n"), error->message); g_error_free (error); return 0; // THIS RETURNS ! } gtk_builder_connect_signals(builder, NULL); dbox = GTK_WIDGET (gtk_builder_get_object (builder, "clock_dbox")); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); update_fields(&tmp_clk); modified = FALSE; result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: if(modified == FALSE) break; tilp_info("%02i/%02i/%02i %02i:%02i:%02i, %s, %s\n", tmp_clk.day, tmp_clk.month, tmp_clk.year, tmp_clk.hours, tmp_clk.minutes, tmp_clk.seconds, (tmp_clk.time_format == 12) ? "12" : "24", ticalcs_clock_format2date(options.calc_model, tmp_clk.date_format)); err = ticalcs_calc_isready(calc_handle); if(err) { tilp_err(err); return -1; } err = ticalcs_calc_set_clock(calc_handle, &tmp_clk); if(err) { tilp_err(err); return -1; } modified = FALSE; break; case GTK_RESPONSE_HELP: break; default: break; } gtk_widget_destroy(dbox); return 0; }
void ctree_refresh(void) { GtkTreeView *view = GTK_TREE_VIEW(ctree_wnd); GtkTreeViewColumn *col; GdkPixbuf *pix1, *pix2, *pix3, *pix4, *pix5, *pix6; GdkPixbuf *pix9 = NULL; GtkTreeIter parent_node; GtkTreeIter child_node; GtkIconTheme *theme; GNode *vars, *apps; int i, j; if (remote.var_tree == NULL) return; if(working_mode & MODE_CMD) return; // sort variables for(i = 0; i < CTREE_NVCOLS; i++) { col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_sort_indicator(col, FALSE); } switch (options.remote_sort) { case SORT_BY_NAME: tilp_vars_sort_by_name(); col = gtk_tree_view_get_column(view, COLUMN_NAME); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_INFO: tilp_vars_sort_by_info(); col = gtk_tree_view_get_column(view, COLUMN_ATTR); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_TYPE: tilp_vars_sort_by_type(); col = gtk_tree_view_get_column(view, COLUMN_TYPE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_SIZE: tilp_vars_sort_by_size(); col = gtk_tree_view_get_column(view, COLUMN_SIZE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; } // place base nodes ctree_set_basetree(); memcpy(&parent_node, &vars_node, sizeof(GtkTreeIter)); // load pixmaps theme = gtk_icon_theme_get_default(); pix1 = gtk_widget_render_icon(GTK_WIDGET(view), GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); pix2 = create_pixbuf("TIicon2.ico"); pix3 = gtk_icon_theme_load_icon(theme, "folder-open", 16, 0, NULL); if (pix3 == NULL) { pix3 = create_pixbuf("ctree_open_dir.png"); } pix4 = gtk_icon_theme_load_icon(theme, "emblem-readonly", 16, 0, NULL); if (pix4 == NULL) { pix4 = create_pixbuf("attr_locked.png"); } pix5 = gtk_icon_theme_load_icon(theme, "emblem-system", 16, 0, NULL); if (pix5 == NULL) { pix5 = create_pixbuf("attr_archived.png"); } pix6 = create_pixbuf("TIicon4.ico"); // variables tree vars = remote.var_tree; for (i = 0; i < (int)g_node_n_children(vars); i++) { GNode *parent = g_node_nth_child(vars, i); VarEntry *fe = (VarEntry *) (parent->data); if ((fe != NULL) || (ticalcs_calc_features(calc_handle) & FTS_FOLDER)) { char *utf8 = ticonv_varname_to_utf8(options.calc_model, fe->name, -1); gtk_tree_store_append(tree, &parent_node, &vars_node); gtk_tree_store_set(tree, &parent_node, COLUMN_NAME, utf8, COLUMN_DATA, (gpointer) fe, COLUMN_ICON, pix1, -1); g_free(utf8); } for (j = 0; j < (int)g_node_n_children(parent); j++) { GNode *node = g_node_nth_child(parent, j); gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *)); VarEntry *ve = (VarEntry *) (node->data); char icon_name[256]; row_text[0] = ticonv_varname_to_utf8(options.calc_model, ve->name, ve->type); row_text[2] = g_strdup_printf("%s", tifiles_vartype2string(options.calc_model, ve->type)); tilp_var_get_size(ve, &row_text[3]); strcpy(icon_name, tifiles_vartype2icon(options.calc_model, ve->type)); strcat(icon_name, ".ico"); tilp_file_underscorize(icon_name); pix9 = create_pixbuf(icon_name); // ticonv wrapper tilp_vars_translate(row_text[0]); gtk_tree_store_append(tree, &child_node, &parent_node); gtk_tree_store_set(tree, &child_node, COLUMN_NAME, row_text[0], COLUMN_TYPE, row_text[2], COLUMN_SIZE, row_text[3], COLUMN_DATA, (gpointer) ve, COLUMN_ICON, pix9, COLUMN_FONT, FONT_NAME, -1); switch (ve->attr) { case ATTRB_LOCKED: gtk_tree_store_set(tree, &child_node, COLUMN_ATTR, pix4, -1); break; case ATTRB_ARCHIVED: gtk_tree_store_set(tree, &child_node, COLUMN_ATTR, pix5, -1); break; default: break; } g_object_unref(pix9); g_strfreev(row_text); } } // Appplications tree apps = remote.app_tree; for (i = 0; i < (int)g_node_n_children(apps); i++) { GNode *parent = g_node_nth_child(apps, i); for (j = 0; j < (int)g_node_n_children(parent); j++) { GNode *node = g_node_nth_child(parent, j); gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *)); VarEntry *ve = (VarEntry *) (node->data); char icon_name[256]; row_text[0] = ticonv_varname_to_utf8(options.calc_model, ve->name, ve->type); row_text[2] = g_strdup_printf("%s", tifiles_vartype2string(options.calc_model, ve->type)); row_text[3] = g_strdup_printf("%u", (int) (ve->size)); strcpy(icon_name, tifiles_vartype2icon(options.calc_model, ve->type)); strcat(icon_name, ".ico"); tilp_file_underscorize(icon_name); pix9 = create_pixbuf(icon_name); gtk_tree_store_append(tree, &child_node, &apps_node); gtk_tree_store_set(tree, &child_node, COLUMN_NAME, row_text[0], COLUMN_TYPE, row_text[2], COLUMN_SIZE, row_text[3], COLUMN_DATA, (gpointer) ve, COLUMN_ICON, pix9, COLUMN_FONT, FONT_NAME, -1); g_object_unref(pix9); g_strfreev(row_text); } } gtk_tree_view_expand_all(GTK_TREE_VIEW(ctree_wnd)); g_object_unref(pix1); g_object_unref(pix2); g_object_unref(pix3); g_object_unref(pix4); g_object_unref(pix5); g_object_unref(pix6); tilp_remote_selection_destroy(); }
gint display_action_dbox(gchar *target) { GtkBuilder *builder; GError* error = NULL; GtkWidget *dbox; GtkWidget *data; GtkTreeIter iter; GList *sel; int button = 0; gint result; gboolean empty = TRUE; // update folder listing (if supported) if (!(ticalcs_calc_features(calc_handle) & FTS_SILENT) ) return BUTTON1; else { if(remote.var_tree == NULL) { if (tilp_dirlist_remote()) return BUTTON1; ctree_refresh(); labels_refresh(); } } // box creation builder = gtk_builder_new(); if (!gtk_builder_add_from_file (builder, tilp_paths_build_builder("action.ui"), &error)) { g_warning (_("Couldn't load builder file: %s\n"), error->message); g_error_free (error); return 0; // THIS RETURNS ! } gtk_builder_connect_signals(builder, NULL); dbox = GTK_WIDGET (gtk_builder_get_object (builder, "action_dbox")); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); clist = data = GTK_WIDGET (gtk_builder_get_object (builder, "treeview1")); // clist creation create_clist(data); // fill model for (sel = local.selection1; sel != NULL; sel = sel->next) { FileEntry *f = (FileEntry *)sel->data; FileContent *c = (FileContent *)f->content1; if(f->content1 == NULL) // file can't be loaded continue; // we have now 1 VarEntry per FileContent { VarEntry *v = c->entries[0]; VarEntry *w; gchar **row_text = g_malloc0(5 * sizeof(gchar *)); char *trans; char full_name[260]; // modify attr or folder if target is specified if(strcmp(target, "")) { if(!strcmp(target, "<FLASH>")) { v->attr = ATTRB_ARCHIVED; } else { strcpy(v->folder, target); } } // search for matching var tifiles_build_fullname(options.calc_model, full_name, v->folder, v->name); trans = ticonv_varname_to_utf8(options.calc_model, (const char *)full_name, v->type); w = ticalcs_dirlist_ve_exist(remote.var_tree, v); if (w == NULL) continue; if(w->attr == ATTRB_LOCKED || w->attr == ATTRB_ARCHIVED) v->action = ACT_SKIP; else v->action = ACT_SKIP; //don't overwrite as default behaviour // file contains an already existing var: add it to the window row_text[0] = trans; row_text[1] = g_strdup(tifiles_attribute_to_string(v->attr)); row_text[2] = g_strdup(f->name); row_text[3] = g_strdup(action2string(v->action)); tilp_vars_translate(row_text[0]); gtk_list_store_append(list, &iter); gtk_list_store_set(list, &iter, COLUMN_VAR, row_text[0], COLUMN_ATTR, row_text[1], COLUMN_FILE, row_text[2], COLUMN_ACTION, row_text[3], COLUMN_DATA_F, (gpointer)f, COLUMN_DATA_V, (gpointer)v, -1); g_strfreev(row_text); empty = FALSE; } } if (empty == TRUE) { button = BUTTON1; // skip box as ok goto out_clean; } // select all vars { GtkTreeView *view = GTK_TREE_VIEW(clist); GtkTreeSelection *sel2; sel2 = gtk_tree_view_get_selection(view); gtk_tree_selection_select_all(sel2); } // box running gtk_dialog_set_default_response(GTK_DIALOG(dbox), GTK_RESPONSE_CANCEL); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: button = BUTTON1; break; case GTK_RESPONSE_CANCEL: button = BUTTON2; default: button = BUTTON2; break; } out_clean: gtk_widget_destroy(dbox); return button; }