static void on_command_send_button_clicked(G_GNUC_UNUSED GtkButton *button, G_GNUC_UNUSED gpointer gdata) { gchar *text = utils_text_buffer_get_text(command_text, -1); const gchar *start; char *locale; thread_synchronize(); utils_strchrepl(text, '\n', ' '); gtk_text_buffer_set_text(command_text, text, -1); start = utils_skip_spaces(text); locale = gtk_toggle_button_get_active(command_locale) ? utils_get_locale_from_utf8(start) : g_strdup(start); debug_send_command(N, locale); g_free(locale); gtk_widget_hide(command_dialog); if (*start) { GtkTreePath *path; GtkTreeIter iter; gchar *display = g_strdup(start); /* from ui_combo_box_add_to_history() */ if (store_find(command_store, &iter, COMMAND_TEXT, start)) scp_tree_store_remove(command_store, &iter); if (strlen(display) >= 273) strcpy(display + 270, _("\342\200\246")); /* For translators: ellipsis */ scp_tree_store_prepend(command_store, &iter, NULL); scp_tree_store_set(command_store, &iter, COMMAND_DISPLAY, display, COMMAND_TEXT, start, COMMAND_LOCALE, gtk_toggle_button_get_active(command_locale), -1); g_free(display); path = gtk_tree_path_new_from_indices(15, -1); if (scp_tree_store_get_iter(command_store, &iter, path)) scp_tree_store_remove(command_store, &iter); gtk_tree_path_free(path); } g_free(text); }
void menu_mode_update(GtkTreeSelection *selection, gint new_mode, gboolean hbit) { ScpTreeStore *store; GtkTreeIter iter; const char *name; scp_tree_selection_get_selected(selection, &store, &iter); scp_tree_store_get(store, &iter, COLUMN_NAME, &name, -1); menu_mode_update_iter(store, &iter, new_mode, hbit); parse_mode_update(name, hbit ? MODE_HBIT : MODE_MEMBER, new_mode); if (hbit) { char *reverse = parse_mode_reentry(name); if (store_find(store, &iter, COLUMN_NAME, reverse)) menu_mode_update_iter(store, &iter, new_mode, TRUE); g_free(reverse); } }
static void register_iter_update(GtkTreeIter *iter, GString *commands[]) { gint id, format; scp_tree_store_get(store, iter, REGISTER_ID, &id, REGISTER_FORMAT, &format, -1); g_string_append_printf(commands[format], " %d", id); } static void register_node_update(const ParseNode *node, GString *commands[]) { iff (node->type == PT_VALUE, "changed-registers: contains array") { const char *id = (const char *) node->value; GtkTreeIter iter; iff (store_find(store, &iter, REGISTER_ID, id), "%s: rid not found", id) register_iter_update(&iter, commands); } } static void registers_send_update(GArray *nodes, char token) { GString *commands[FORMAT_COUNT]; guint format; gsize empty; for (format = 0; format < FORMAT_COUNT; format++) { commands[format] = g_string_sized_new(0x7F); g_string_append_printf(commands[format], "0%c9%c%s%s-data-list-register-values %c", token, FRAME_ARGS, register_formats[format]);