65 #define CHAR_NUM_COLUMNS 8
79 #define TEXTVIEW_MOTD 0
80 #define TEXTVIEW_NEWS 1
81 #define TEXTVIEW_RULES_ACCOUNT 2
82 #define TEXTVIEW_RULES_CHAR 3
146 dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
147 GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK,
148 "Error: %s", message);
149 gtk_dialog_run(GTK_DIALOG(dialog));
150 gtk_widget_destroy(dialog);
162 if (!name || *name == 0) {
164 "You must enter a character name.");
215 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"create_character_window"));
217 gtk_window_set_transient_for(
221 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_create_character"));
223 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_cc_cancel"));
225 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"cc_entry_new_character_name"));
227 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"label_cc_status_update"));
254 if (!name || !password || *name == 0 || *password == 0) {
256 "You must enter both a name and password!");
286 retry = atoi(message);
287 cp = strchr(message,
' ');
304 const char *name, *password;
308 gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
309 GTK_MESSAGE_QUESTION,
310 GTK_BUTTONS_YES_NO,
"%s\n%s", cp,
"Apply anyways?");
311 result = gtk_dialog_run(GTK_DIALOG(dialog));
312 gtk_widget_destroy(dialog);
314 if (result == GTK_RESPONSE_YES) {
349 gpointer user_data) {
362 const char *name, *password;
367 if (name && name[0] && password && password[0]) {
373 cp = gtk_entry_get_text(entry);
390 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_do_add_character"));
393 "button_return_character_select"));
395 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_character_name"));
397 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_character_password"));
399 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"label_add_status"));
463 GtkTreeSelection *selected;
468 selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(
471 if (gtk_tree_selection_get_selected(selected, &model, &iter)) {
472 gtk_tree_model_get(model, &iter,
CHAR_NAME, &name, -1);
548 const char *race,
const char *face,
549 const char *party,
const char *
map,
550 int level,
int faceno) {
585 GtkCellRenderer *renderer;
586 GtkTreeViewColumn *column;
589 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_play_character"));
591 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_create_character"));
593 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_add_character"));
595 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_return_login"));
597 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_account_password"));
599 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"textview_rules_char"));
602 gtk_text_view_get_buffer(
606 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"treeview_choose_character"));
611 gtk_text_buffer_get_end_iter(
614 gtk_text_buffer_create_mark(
631 G_TYPE_STRING, G_TYPE_STRING,
632 G_TYPE_STRING, G_TYPE_STRING,
633 G_TYPE_INT, G_TYPE_STRING,
634 G_TYPE_STRING, G_TYPE_OBJECT);
638 renderer = gtk_cell_renderer_pixbuf_new();
639 column = gtk_tree_view_column_new_with_attributes(
"?", renderer,
643 gtk_tree_view_column_set_min_width(column,
image_size);
646 renderer = gtk_cell_renderer_text_new();
647 column = gtk_tree_view_column_new_with_attributes(
"Character Name", renderer,
649 gtk_tree_view_column_set_sort_column_id(column,
CHAR_NAME);
652 renderer = gtk_cell_renderer_text_new();
653 column = gtk_tree_view_column_new_with_attributes(
"Class", renderer,
655 gtk_tree_view_column_set_sort_column_id(column,
CHAR_CLASS);
658 renderer = gtk_cell_renderer_text_new();
659 column = gtk_tree_view_column_new_with_attributes(
"Race", renderer,
661 gtk_tree_view_column_set_sort_column_id(column,
CHAR_RACE);
664 renderer = gtk_cell_renderer_text_new();
665 column = gtk_tree_view_column_new_with_attributes(
"Level", renderer,
667 gtk_tree_view_column_set_sort_column_id(column,
CHAR_LEVEL);
670 renderer = gtk_cell_renderer_text_new();
671 column = gtk_tree_view_column_new_with_attributes(
"Party", renderer,
673 gtk_tree_view_column_set_sort_column_id(column,
CHAR_PARTY);
676 renderer = gtk_cell_renderer_text_new();
677 column = gtk_tree_view_column_new_with_attributes(
"Map", renderer,
679 gtk_tree_view_column_set_sort_column_id(column,
CHAR_MAP);
713 if (strcmp(p1, p2)) {
715 "The passwords you entered do not match!");
739 const char *password1, *password2, *name;
745 if (name && name[0] && password1 && password1[0] && password2 && password2[0]) {
749 "You must fill in all three entries!");
775 const char *password1, *password2, *name, *cp;
780 if (name && name[0] && password1 && password1[0] && password2 && password2[0]) {
791 cp = gtk_entry_get_text(entry);
819 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_new_create_account"));
821 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_new_cancel"));
823 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"textview_rules_account"));
826 gtk_text_view_get_buffer(
830 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_new_account_name"));
832 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_new_account_password"));
834 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_new_confirm_password"));
836 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"label_create_account_status"));
841 gtk_text_buffer_get_end_iter(
844 gtk_text_buffer_create_mark(
920 if (!name || !password || *name == 0 || *password == 0) {
922 "You must enter both a name and password!");
966 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_login"));
968 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_create_account"));
970 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"button_go_metaserver"));
972 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"label_account_login_status"));
974 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"textview_motd"));
977 gtk_text_view_get_buffer(
984 gtk_text_buffer_create_mark(
988 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"textview_news"));
991 gtk_text_view_get_buffer(
998 gtk_text_buffer_create_mark(
1002 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_account_name"));
1004 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_account_password"));
1037 if (strcmp(p1, p2)) {
1039 "The passwords you entered do not match!");
1063 gpointer user_data) {
1074 gpointer user_data) {
1092 const char *old, *password1, *password2, *cp;
1097 if (old && old[0] && password1 && password1[0] && password2 && password2[0]) {
1108 cp = gtk_entry_get_text(entry);
1109 if (!cp || !cp[0]) {
1133 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
1134 "button_account_password_confirm"));
1136 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
1137 "button_account_password_cancel"));
1140 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
1141 "entry_account_password_current"));
1143 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"entry_account_password_new"));
1145 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
1146 "entry_account_password_confirm"));
1148 GTK_WIDGET(gtk_builder_get_object(
dialog_xml,
"label_account_password_status"));
1190 char *mynews, *cp, *el, big_buf[
BIG_BUF], *cp1;
1192 mynews = g_strdup(
news);
1197 for (cp = mynews + strlen(mynews); cp > mynews; cp--) {
1198 if (*cp ==
'%' && (*(cp - 1) ==
'\n' || cp == mynews)) {
1200 el = strchr(cp,
'\n');
1211 while (isspace(*cp1)) {
1218 snprintf(big_buf,
BIG_BUF,
"[b]%s[/b]", cp1);