Lines 58-63
int thread_alive;
Link Here
|
58 |
// Private data: |
58 |
// Private data: |
59 |
|
59 |
|
60 |
static GtkTooltips *tooltips; |
60 |
static GtkTooltips *tooltips; |
|
|
61 |
static GtkWidget *H2G_Entry; // Hexen2 games listing |
62 |
#ifndef DEMOBUILD |
63 |
static GtkWidget *HWG_Entry; // Hexenworld games listing |
64 |
#endif /* DEMOBUILD */ |
61 |
|
65 |
|
62 |
static options_widget_t Options; |
66 |
static options_widget_t Options; |
63 |
static MainWindow_t main_win; |
67 |
static MainWindow_t main_win; |
Lines 218-223
static void report_status (GtkObject *Un
Link Here
|
218 |
|
222 |
|
219 |
Log_printf ("Installation Summary:\n\n"); |
223 |
Log_printf ("Installation Summary:\n\n"); |
220 |
Log_printf ("Base directory: %s\n", basedir); |
224 |
Log_printf ("Base directory: %s\n", basedir); |
|
|
225 |
Log_printf ("Data directory: %s\n", (basedir_nonstd && game_basedir[0]) ? game_basedir : basedir); |
221 |
Log_printf ("PAK file health: %s", (gameflags & GAME_INSTBAD) ? "BAD. Reason(s):\n" : "OK "); |
226 |
Log_printf ("PAK file health: %s", (gameflags & GAME_INSTBAD) ? "BAD. Reason(s):\n" : "OK "); |
222 |
if (gameflags & GAME_INSTBAD) |
227 |
if (gameflags & GAME_INSTBAD) |
223 |
{ |
228 |
{ |
Lines 575-580
static void on_MORE (GtkButton *button,
Link Here
|
575 |
gtk_widget_hide (BOOK1); |
580 |
gtk_widget_hide (BOOK1); |
576 |
} |
581 |
} |
577 |
|
582 |
|
|
|
583 |
static void basedir_Change (GtkButton *unused, gpointer user_data) |
584 |
{ |
585 |
#if !defined(DEMOBUILD) |
586 |
int i; |
587 |
GList *TmpList = NULL; |
588 |
#endif /* ! DEMOBUILD */ |
589 |
|
590 |
if (lock) |
591 |
return; |
592 |
|
593 |
lock = 1; |
594 |
basedir_nonstd ^= 1; |
595 |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(patch_win.bBASEDIR), basedir_nonstd); |
596 |
scan_game_installation(); |
597 |
UpdateStats (); |
598 |
report_status (NULL, &patch_win); |
599 |
|
600 |
// activate the extra game options, if necessary |
601 |
gtk_widget_set_sensitive (WGT_H2WORLD, (gameflags & GAME_HEXENWORLD) ? TRUE : FALSE); |
602 |
// rebuild the game mod lists |
603 |
#if !defined(DEMOBUILD) |
604 |
if (mp_support) |
605 |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(WGT_PORTALS), FALSE); |
606 |
h2game = hwgame = mp_support = 0; |
607 |
for (i = 0; i < MAX_H2GAMES; i++) |
608 |
{ |
609 |
if (h2game_names[i].available) |
610 |
TmpList = g_list_append (TmpList, h2game_names[i].name); |
611 |
} |
612 |
gtk_combo_set_popdown_strings (GTK_COMBO(WGT_H2GAME), TmpList); |
613 |
g_list_free (TmpList); |
614 |
TmpList = NULL; |
615 |
for (i = 0; i < MAX_HWGAMES; i++) |
616 |
{ |
617 |
if (hwgame_names[i].available) |
618 |
TmpList = g_list_append (TmpList, hwgame_names[i].name); |
619 |
} |
620 |
gtk_combo_set_popdown_strings (GTK_COMBO(WGT_HWGAME), TmpList); |
621 |
g_list_free (TmpList); |
622 |
gtk_entry_set_text (GTK_ENTRY(H2G_Entry), h2game_names[0].name); |
623 |
gtk_entry_set_text (GTK_ENTRY(HWG_Entry), hwgame_names[0].name); |
624 |
if (gameflags & (GAME_REGISTERED|GAME_REGISTERED_OLD)) |
625 |
{ |
626 |
gtk_widget_set_sensitive (WGT_H2GAME, TRUE); |
627 |
gtk_widget_set_sensitive (WGT_HWGAME, TRUE); |
628 |
if (gameflags & GAME_PORTALS && destiny == DEST_H2) |
629 |
gtk_widget_set_sensitive (WGT_PORTALS, TRUE); |
630 |
} |
631 |
else |
632 |
{ |
633 |
gtk_widget_set_sensitive (WGT_H2GAME, FALSE); |
634 |
gtk_widget_set_sensitive (WGT_HWGAME, FALSE); |
635 |
gtk_widget_set_sensitive (WGT_PORTALS, FALSE); |
636 |
} |
637 |
#endif /* ! DEMOBUILD */ |
638 |
|
639 |
lock = 0; |
640 |
} |
641 |
|
642 |
static void basedir_ChangePath (GtkEditable *editable, gpointer user_data) |
643 |
{ |
644 |
size_t len; |
645 |
gchar *tmp = gtk_editable_get_chars (editable, 0, -1); |
646 |
len = strlen(tmp); |
647 |
if (len > sizeof(game_basedir)-1) |
648 |
len = sizeof(game_basedir)-1; |
649 |
if (len) |
650 |
memcpy (game_basedir, tmp, len); |
651 |
game_basedir[len] = 0; |
652 |
g_free (tmp); |
653 |
|
654 |
if (basedir_nonstd) /* FIXME: any better way? */ |
655 |
basedir_Change (NULL, NULL); |
656 |
} |
657 |
|
578 |
/********************************************************************* |
658 |
/********************************************************************* |
579 |
WINDOW CREATING |
659 |
WINDOW CREATING |
580 |
*********************************************************************/ |
660 |
*********************************************************************/ |
Lines 599-605
static void create_window2 (GtkWidget *u
Link Here
|
599 |
gtk_window_set_title (GTK_WINDOW(PATCH_WINDOW), "Hexen II PAK patch"); |
679 |
gtk_window_set_title (GTK_WINDOW(PATCH_WINDOW), "Hexen II PAK patch"); |
600 |
gtk_window_set_resizable (GTK_WINDOW(PATCH_WINDOW), FALSE); |
680 |
gtk_window_set_resizable (GTK_WINDOW(PATCH_WINDOW), FALSE); |
601 |
gtk_window_set_modal (GTK_WINDOW(PATCH_WINDOW), TRUE); |
681 |
gtk_window_set_modal (GTK_WINDOW(PATCH_WINDOW), TRUE); |
602 |
gtk_widget_set_size_request(PATCH_WINDOW, 360, 240); |
682 |
gtk_widget_set_size_request(PATCH_WINDOW, 360, 272); |
603 |
|
683 |
|
604 |
PATCH_TAB = gtk_fixed_new (); |
684 |
PATCH_TAB = gtk_fixed_new (); |
605 |
gtk_widget_ref (PATCH_TAB); |
685 |
gtk_widget_ref (PATCH_TAB); |
Lines 613-623
static void create_window2 (GtkWidget *u
Link Here
|
613 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), Txt1, 14, 12); |
693 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), Txt1, 14, 12); |
614 |
gtk_label_set_justify (GTK_LABEL(Txt1), GTK_JUSTIFY_LEFT); |
694 |
gtk_label_set_justify (GTK_LABEL(Txt1), GTK_JUSTIFY_LEFT); |
615 |
|
695 |
|
|
|
696 |
// custom basedir entry: |
697 |
patch_win.bBASEDIR = gtk_check_button_new_with_label (_("Data install path:")); |
698 |
gtk_widget_ref (patch_win.bBASEDIR); |
699 |
gtk_widget_show (patch_win.bBASEDIR); |
700 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bBASEDIR, 14, 186); |
701 |
gtk_widget_set_size_request (patch_win.bBASEDIR, 128, 24); |
702 |
gtk_widget_set_sensitive (patch_win.bBASEDIR, TRUE); |
703 |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(patch_win.bBASEDIR), basedir_nonstd); |
704 |
GTK_WIDGET_UNSET_FLAGS (patch_win.bBASEDIR, GTK_CAN_FOCUS); |
705 |
gtk_tooltips_set_tip (tooltips, patch_win.bBASEDIR, _("Mark this in order to use a different game installation directory"), NULL); |
706 |
|
707 |
patch_win.dir_Entry = gtk_entry_new(); |
708 |
gtk_widget_show (patch_win.dir_Entry); |
709 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.dir_Entry, 148, 186); |
710 |
gtk_widget_set_size_request (patch_win.dir_Entry, 190, 24); |
711 |
gtk_entry_set_max_length (GTK_ENTRY(patch_win.dir_Entry), sizeof(game_basedir)-1); |
712 |
gtk_entry_set_text (GTK_ENTRY(patch_win.dir_Entry), game_basedir); |
713 |
gtk_widget_ref (patch_win.dir_Entry); |
714 |
|
616 |
// Apply Patch button |
715 |
// Apply Patch button |
617 |
patch_win.bAPPLY = gtk_button_new_with_label (_("Apply Pak Patch")); |
716 |
patch_win.bAPPLY = gtk_button_new_with_label (_("Apply Pak Patch")); |
618 |
gtk_widget_ref (patch_win.bAPPLY); |
717 |
gtk_widget_ref (patch_win.bAPPLY); |
619 |
gtk_widget_show (patch_win.bAPPLY); |
718 |
gtk_widget_show (patch_win.bAPPLY); |
620 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bAPPLY, 14, 186); |
719 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bAPPLY, 14, 218); |
621 |
gtk_widget_set_size_request (patch_win.bAPPLY, 112, 24); |
720 |
gtk_widget_set_size_request (patch_win.bAPPLY, 112, 24); |
622 |
#if !defined(DEMOBUILD) |
721 |
#if !defined(DEMOBUILD) |
623 |
gtk_tooltips_set_tip (tooltips, patch_win.bAPPLY, _("Apply the v1.11 pakfiles patch by Raven Software."), NULL); |
722 |
gtk_tooltips_set_tip (tooltips, patch_win.bAPPLY, _("Apply the v1.11 pakfiles patch by Raven Software."), NULL); |
Lines 627-633
static void create_window2 (GtkWidget *u
Link Here
|
627 |
patch_win.bREPORT = gtk_button_new_with_label (_("Make Report")); |
726 |
patch_win.bREPORT = gtk_button_new_with_label (_("Make Report")); |
628 |
gtk_widget_ref (patch_win.bREPORT); |
727 |
gtk_widget_ref (patch_win.bREPORT); |
629 |
gtk_widget_show (patch_win.bREPORT); |
728 |
gtk_widget_show (patch_win.bREPORT); |
630 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bREPORT, 132, 186); |
729 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bREPORT, 132, 218); |
631 |
gtk_widget_set_size_request (patch_win.bREPORT, 112, 24); |
730 |
gtk_widget_set_size_request (patch_win.bREPORT, 112, 24); |
632 |
|
731 |
|
633 |
// Holder window for the textview |
732 |
// Holder window for the textview |
Lines 669-682
static void create_window2 (GtkWidget *u
Link Here
|
669 |
patch_win.bCLOSE = gtk_button_new_with_label (_("Close")); |
768 |
patch_win.bCLOSE = gtk_button_new_with_label (_("Close")); |
670 |
gtk_widget_ref (patch_win.bCLOSE); |
769 |
gtk_widget_ref (patch_win.bCLOSE); |
671 |
gtk_widget_show (patch_win.bCLOSE); |
770 |
gtk_widget_show (patch_win.bCLOSE); |
672 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bCLOSE, 250, 186); |
771 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), patch_win.bCLOSE, 250, 218); |
673 |
gtk_widget_set_size_request (patch_win.bCLOSE, 88, 24); |
772 |
gtk_widget_set_size_request (patch_win.bCLOSE, 88, 24); |
674 |
|
773 |
|
675 |
// Statusbar |
774 |
// Statusbar |
676 |
PATCH_STATBAR = gtk_statusbar_new (); |
775 |
PATCH_STATBAR = gtk_statusbar_new (); |
677 |
gtk_widget_ref (PATCH_STATBAR); |
776 |
gtk_widget_ref (PATCH_STATBAR); |
678 |
gtk_widget_show (PATCH_STATBAR); |
777 |
gtk_widget_show (PATCH_STATBAR); |
679 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), PATCH_STATBAR, 0, 214); |
778 |
gtk_fixed_put (GTK_FIXED(PATCH_TAB), PATCH_STATBAR, 0, 246); |
680 |
gtk_widget_set_size_request (PATCH_STATBAR, 354, 24); |
779 |
gtk_widget_set_size_request (PATCH_STATBAR, 354, 24); |
681 |
gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(PATCH_STATBAR), FALSE); |
780 |
gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR(PATCH_STATBAR), FALSE); |
682 |
gtk_container_set_border_width (GTK_CONTAINER(PATCH_STATBAR), 2); |
781 |
gtk_container_set_border_width (GTK_CONTAINER(PATCH_STATBAR), 2); |
Lines 687-692
static void create_window2 (GtkWidget *u
Link Here
|
687 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "Txt1", Txt1, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
786 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "Txt1", Txt1, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
688 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bAPPLY", patch_win.bAPPLY, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
787 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bAPPLY", patch_win.bAPPLY, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
689 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bREPORT", patch_win.bREPORT, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
788 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bREPORT", patch_win.bREPORT, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
|
|
789 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bBASEDIR", patch_win.bBASEDIR, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
790 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "dir_Entry", patch_win.dir_Entry, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
690 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "TxtWindow", TxtWindow, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
791 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "TxtWindow", TxtWindow, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
691 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "LOGVIEW", patch_win.LOGVIEW, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
792 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "LOGVIEW", patch_win.LOGVIEW, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
692 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bCLOSE", patch_win.bCLOSE, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
793 |
gtk_object_set_data_full (GTK_OBJECT(PATCH_WINDOW), "bCLOSE", patch_win.bCLOSE, GTK_DESTROYNOTIFY(gtk_widget_unref)); |
Lines 694-699
static void create_window2 (GtkWidget *u
Link Here
|
694 |
|
795 |
|
695 |
gtk_signal_connect (GTK_OBJECT(PATCH_WINDOW), "destroy", GTK_SIGNAL_FUNC(destroy_window2), NULL); |
796 |
gtk_signal_connect (GTK_OBJECT(PATCH_WINDOW), "destroy", GTK_SIGNAL_FUNC(destroy_window2), NULL); |
696 |
gtk_signal_connect (GTK_OBJECT(patch_win.bCLOSE), "clicked", GTK_SIGNAL_FUNC(destroy_window2), NULL); |
797 |
gtk_signal_connect (GTK_OBJECT(patch_win.bCLOSE), "clicked", GTK_SIGNAL_FUNC(destroy_window2), NULL); |
|
|
798 |
gtk_signal_connect (GTK_OBJECT(patch_win.bBASEDIR), "toggled", GTK_SIGNAL_FUNC(basedir_Change), NULL); |
799 |
gtk_signal_connect (GTK_OBJECT(patch_win.dir_Entry), "changed", GTK_SIGNAL_FUNC(basedir_ChangePath), NULL); |
697 |
#if !defined(DEMOBUILD) |
800 |
#if !defined(DEMOBUILD) |
698 |
gtk_signal_connect (GTK_OBJECT(patch_win.bAPPLY), "clicked", GTK_SIGNAL_FUNC(start_xpatch), &patch_win); |
801 |
gtk_signal_connect (GTK_OBJECT(patch_win.bAPPLY), "clicked", GTK_SIGNAL_FUNC(start_xpatch), &patch_win); |
699 |
gtk_signal_connect (GTK_OBJECT(patch_win.bREPORT), "clicked", GTK_SIGNAL_FUNC(report_status), &patch_win); |
802 |
gtk_signal_connect (GTK_OBJECT(patch_win.bREPORT), "clicked", GTK_SIGNAL_FUNC(report_status), &patch_win); |
Lines 741-750
static void create_window1 (void)
Link Here
|
741 |
GtkWidget *TxtPatch; // Data patch label |
844 |
GtkWidget *TxtPatch; // Data patch label |
742 |
GtkWidget *bPATCH; // PATCH button |
845 |
GtkWidget *bPATCH; // PATCH button |
743 |
GtkWidget *SRATE_Entry; // Sampling rate listing |
846 |
GtkWidget *SRATE_Entry; // Sampling rate listing |
744 |
GtkWidget *H2G_Entry; // Hexen2 games listing |
|
|
745 |
#ifndef DEMOBUILD |
746 |
GtkWidget *HWG_Entry; // Hexenworld games listing |
747 |
#endif /* DEMOBUILD */ |
748 |
|
847 |
|
749 |
// Separators |
848 |
// Separators |
750 |
GtkWidget *hseparator0; |
849 |
GtkWidget *hseparator0; |
Lines 1039-1047
static void create_window1 (void)
Link Here
|
1039 |
gtk_widget_set_size_request (WGT_H2GAME, 172, 32); |
1138 |
gtk_widget_set_size_request (WGT_H2GAME, 172, 32); |
1040 |
#ifndef DEMOBUILD |
1139 |
#ifndef DEMOBUILD |
1041 |
TmpList = NULL; |
1140 |
TmpList = NULL; |
1042 |
TmpList = g_list_append (TmpList, (gpointer) "( None )"); |
|
|
1043 |
gtk_combo_set_use_arrows (GTK_COMBO(WGT_H2GAME), FALSE); |
1141 |
gtk_combo_set_use_arrows (GTK_COMBO(WGT_H2GAME), FALSE); |
1044 |
for (i = 1; i < MAX_H2GAMES; i++) |
1142 |
for (i = 0; i < MAX_H2GAMES; i++) |
1045 |
{ |
1143 |
{ |
1046 |
if (h2game_names[i].available) |
1144 |
if (h2game_names[i].available) |
1047 |
TmpList = g_list_append (TmpList, h2game_names[i].name); |
1145 |
TmpList = g_list_append (TmpList, h2game_names[i].name); |
Lines 1075-1083
static void create_window1 (void)
Link Here
|
1075 |
gtk_widget_ref (WGT_HWGAME); |
1173 |
gtk_widget_ref (WGT_HWGAME); |
1076 |
gtk_widget_set_size_request (WGT_HWGAME, 172, 32); |
1174 |
gtk_widget_set_size_request (WGT_HWGAME, 172, 32); |
1077 |
TmpList = NULL; |
1175 |
TmpList = NULL; |
1078 |
TmpList = g_list_append (TmpList, (gpointer) "Plain DeathMatch"); |
|
|
1079 |
gtk_combo_set_use_arrows (GTK_COMBO(WGT_HWGAME), FALSE); |
1176 |
gtk_combo_set_use_arrows (GTK_COMBO(WGT_HWGAME), FALSE); |
1080 |
for (i = 1; i < MAX_HWGAMES; i++) |
1177 |
for (i = 0; i < MAX_HWGAMES; i++) |
1081 |
{ |
1178 |
{ |
1082 |
if (hwgame_names[i].available) |
1179 |
if (hwgame_names[i].available) |
1083 |
TmpList = g_list_append (TmpList, hwgame_names[i].name); |
1180 |
TmpList = g_list_append (TmpList, hwgame_names[i].name); |