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; }
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!"); } } } } }