Exemplo n.º 1
0
static void
pevent_dialog_update (GtkWidget * wid, GtkWidget * twid)
{
	int len, m;
	const char *text;
	char *out;
	int sig;
	GtkTreeIter iter;
	GtkListStore *store;

	if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list),
													&iter, COL_ROW, &sig, -1))
		return;

	text = gtk_entry_get_text (GTK_ENTRY (wid));
	len = strlen (text);

	if (pevt_build_string (text, &out, &m) != 0)
	{
		fe_message (_("There was an error parsing the string"), FE_MSG_ERROR);
		return;
	}
	if (m > (te[sig].num_args & 0x7f))
	{
		free (out);
		out = malloc (4096);
		snprintf (out, 4096,
					 _("This signal is only passed %d args, $%d is invalid"),
					 te[sig].num_args & 0x7f, m);
		fe_message (out, FE_MSG_WARN);
		free (out);
		return;
	}

	store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_list));
	gtk_list_store_set (store, &iter, COL_EVENT_TEXT, text, -1);

	if (pntevts_text[sig])
		free (pntevts_text[sig]);
	if (pntevts[sig])
		free (pntevts[sig]);

	pntevts_text[sig] = malloc (len + 1);
	memcpy (pntevts_text[sig], text, len + 1);
	pntevts[sig] = out;

	out = malloc (len + 2);
	memcpy (out, text, len + 1);
	out[len] = '\n';
	out[len + 1] = 0;
	check_special_chars (out, TRUE);

	PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0);
	free (out);

	/* save this when we exit */
	prefs.save_pevents = 1;
}
Exemplo n.º 2
0
void
pevent_make_pntevts (void)
{
	int i, m;

	for (i = 0; i < NUM_XP; i++)
	{
		g_free (pntevts[i]);
		if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0)
		{
			/* make-te.c sets this 128 flag (DON'T call gettext() flag) */
			const gboolean translate = !(te[i].num_args & 128);

			g_warning ("Error parsing event %s\nLoading default.", te[i].name);
			g_free (pntevts_text[i]);

			if (translate)
				pntevts_text[i] = g_strdup (_(te[i].def));
			else
				pntevts_text[i] = g_strdup (te[i].def);

			if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0 && !translate)
			{
				g_error ("HexChat CRITICAL *** default event text failed to build!");
			}
			else
			{
				g_warning ("Error parsing translated event %s\nLoading untranslated.", te[i].name);
				g_free (pntevts_text[i]);

				pntevts_text[i] = g_strdup (te[i].def);

				if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0)
				{
					g_error ("HexChat CRITICAL *** default event text failed to build!");
				}
			}
		}
	}
}