Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
	}
}
Ejemplo n.º 3
0
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]);