diff options
author | Russ Allbery <rra@debian.org> | 2017-12-20 21:48:48 -0800 |
---|---|---|
committer | Russ Allbery <rra@debian.org> | 2017-12-20 21:48:48 -0800 |
commit | 89adbd59353dd3a0944de2c86288976329f2b1dc (patch) | |
tree | 050c4b8b379636dda63d2e9290df797cb3ec2d7a /gtkgame.c | |
parent | a92a560637b87da633f44af0049f55e419a0dd05 (diff) |
New upstream version 1.06.001
Diffstat (limited to 'gtkgame.c')
-rw-r--r-- | gtkgame.c | 512 |
1 files changed, 449 insertions, 63 deletions
@@ -16,12 +16,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: gtkgame.c,v 1.900 2016/05/14 22:28:32 plm Exp $ + * $Id: gtkgame.c,v 1.917 2017/11/07 22:29:56 plm Exp $ */ #include "config.h" #include "gnubgmodule.h" -#include "gtklocdefs.h" #include "gtkuidefs.h" #include <glib.h> @@ -857,7 +856,6 @@ extern void GTKFreeze(void) { - GL_Freeze(); frozen = TRUE; } @@ -865,7 +863,6 @@ extern void GTKThaw(void) { - GL_Thaw(); frozen = FALSE; /* Make sure analysis window is correct */ if (plLastMove) @@ -1034,7 +1031,11 @@ SetAnnotation(moverecord * pmr) fMoveOld = ms.fMove; fTurnOld = ms.fTurn; +#if GTK_CHECK_VERSION(3,0,0) + pwAnalysis = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwAnalysis = gtk_vbox_new(FALSE, 0); +#endif pwBox = gtk_table_new(2, 3, FALSE); gtk_box_pack_start(GTK_BOX(pwAnalysis), pwBox, FALSE, FALSE, 4); @@ -1049,7 +1050,7 @@ SetAnnotation(moverecord * pmr) GetMatchStateCubeInfo(&ci, &ms); if (GetDPEq(NULL, NULL, &ci)) { - gtk_table_attach_defaults(GTK_TABLE(pwBox), gtk_label_new(_("Didn't double")), 0, 1, 0, 1); + gtk_table_attach_defaults(GTK_TABLE(pwBox), gtk_label_new(pmr->stCube == SKILL_NONE ? "" : _("Didn't double")), 0, 1, 0, 1); gtk_table_attach_defaults(GTK_TABLE(pwBox), skill_label(pmr->stCube), 0, 1, 1, 2); } @@ -1124,9 +1125,14 @@ SetAnnotation(moverecord * pmr) dt = DoubleType(ms.fDoubled, ms.fMove, ms.fTurn); +#if GTK_CHECK_VERSION(3,0,0) + pwAnalysis = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + pwBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwAnalysis = gtk_vbox_new(FALSE, 0); + pwBox = gtk_vbox_new(FALSE, 0); +#endif - pwBox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(pwBox), gtk_label_new(Q_(aszDoubleTypes[dt])), FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(pwBox), skill_label(pmr->stCube), FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(pwAnalysis), pwBox, FALSE, FALSE, 0); @@ -1148,9 +1154,14 @@ SetAnnotation(moverecord * pmr) tt = (taketype) DoubleType(ms.fDoubled, ms.fMove, ms.fTurn); +#if GTK_CHECK_VERSION(3,0,0) + pwAnalysis = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + pwBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwAnalysis = gtk_vbox_new(FALSE, 0); - pwBox = gtk_vbox_new(FALSE, 0); +#endif + gtk_box_pack_start(GTK_BOX(pwBox), gtk_label_new(pmr->mt == MOVE_TAKE ? _("Take") : _("Drop")), FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(pwBox), skill_label(pmr->stCube), FALSE, FALSE, 2); @@ -1167,7 +1178,11 @@ SetAnnotation(moverecord * pmr) break; case MOVE_RESIGN: +#if GTK_CHECK_VERSION(3,0,0) + pwAnalysis = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwAnalysis = gtk_vbox_new(FALSE, 0); +#endif /* equities for resign */ @@ -1176,7 +1191,11 @@ SetAnnotation(moverecord * pmr) /* skill for resignation */ +#if GTK_CHECK_VERSION(3,0,0) + pwBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwBox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwBox), gtk_label_new(_("Resign")), FALSE, FALSE, 2); pwAlign = gtk_alignment_new(0.5f, 0.5f, 0.0f, 0.0f); @@ -1186,7 +1205,11 @@ SetAnnotation(moverecord * pmr) /* skill for accept */ +#if GTK_CHECK_VERSION(3,0,0) + pwBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwBox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwBox), gtk_label_new(_("Accept")), FALSE, FALSE, 2); pwAlign = gtk_alignment_new(0.5f, 0.5f, 0.0f, 0.0f); @@ -1290,6 +1313,7 @@ SwapBoardToPanel(int ToPanel, int updateEvents) gtk_widget_hide(pwGameBox); gtk_paned_set_position(GTK_PANED(hpaned), allocation.width - panelSize); +#if ! GTK_CHECK_VERSION(3,0,0) { /* Hack to sort out widget positions - may be removed if works in later version of gtk */ GtkAllocation temp = allocation; temp.height++; @@ -1297,6 +1321,7 @@ SwapBoardToPanel(int ToPanel, int updateEvents) temp.height--; gtk_widget_size_allocate(pwMain, &temp); } +#endif } else { /* Need to hide these, as handle box seems to be buggy and gets confused */ gtk_widget_hide(gtk_widget_get_parent(pwMenuBar)); @@ -1317,6 +1342,7 @@ SwapBoardToPanel(int ToPanel, int updateEvents) } } +#if ! GTK_CHECK_VERSION(3,0,0) static void MainSize(GtkWidget * pw, GtkRequisition * preq, gpointer p) { @@ -1339,7 +1365,7 @@ MainSize(GtkWidget * pw, GtkRequisition * preq, gpointer p) else gtk_paned_set_position(GTK_PANED(hpaned), preq->width - panelSize); } - +#endif #if !defined(USE_GTKUIMANAGER) static gchar * @@ -1426,7 +1452,7 @@ static void CopyAsGOL(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) { - UserCommand("export position gol2clipboard"); + UserCommand("export position bgo2clipboard"); } @@ -1602,11 +1628,7 @@ SetSwitchModeMenuText(void) text = _("Switch to 3D view"); else text = _("Switch to 2D view"); -#if defined(USE_GTKUIMANAGER) gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(pMenuItem))), text); -#else - gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(pMenuItem))), text); -#endif gtk_widget_set_sensitive(pMenuItem, gtk_gl_init_success); } @@ -2034,7 +2056,11 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter if (pfOK) *pfOK = FALSE; +#if GTK_CHECK_VERSION(3,0,0) + pwEval = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwEval = gtk_vbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pwEval), 8); pew = malloc(sizeof *pew); @@ -2050,7 +2076,11 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter pwFrame = gtk_frame_new(_("Predefined settings")); gtk_container_add(GTK_CONTAINER(pwev), pwFrame); +#if GTK_CHECK_VERSION(3,0,0) + pw2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); +#else pw2 = gtk_vbox_new(FALSE, 8); +#endif gtk_container_add(GTK_CONTAINER(pwFrame), pw2); gtk_container_set_border_width(GTK_CONTAINER(pw2), 8); @@ -2060,7 +2090,7 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter gtk_widget_set_tooltip_text(pwev, _("Select a predefined setting, ranging from " - "beginner's play to the grandmaster setting " "that will test your patience")); + "beginner's play to the 4ply setting.")); pew->pwOptionMenu = gtk_combo_box_text_new(); @@ -2079,7 +2109,11 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter pwFrame = gtk_frame_new(_("User defined settings")); gtk_container_add(GTK_CONTAINER(pwEval), pwFrame); +#if GTK_CHECK_VERSION(3,0,0) + pw2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); +#else pw2 = gtk_vbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw2), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw2); @@ -2093,12 +2127,16 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter _("Specify how many rolls GNU Backgammon should " "lookahead. Each ply costs approximately a factor " "of 21 in computational time. Also note that " - "2-ply is equivalent to Snowie's 3-ply setting.")); + "2-ply is equivalent to Snowie and XG's 3-ply setting.")); pwFrame2 = gtk_frame_new(_("Lookahead")); gtk_container_add(GTK_CONTAINER(pwev), pwFrame2); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pw = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame2), pw); pew->padjPlies = GTK_ADJUSTMENT(gtk_adjustment_new(pec->nPlies, 0, 7, 1, 1, 0)); @@ -2118,7 +2156,7 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter _("Instruct GNU Backgammon to use a set of neural networks " "just to prune away move candidates within a deeper ply search. " "This increases the speed considerably at a negligible cost in playing strength. " - "It is recommended to enable this option")); + "It is recommended to enable this option.")); /* cubeful */ @@ -2143,7 +2181,7 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter "cubeful evaluations for cube decisions. " "Disabling this option will make GNU Backgammon " "use cubeless evaluations in the interval nodes " - "of higher ply evaluations. It is recommended " "to enable this option")); + "of higher ply evaluations. It is recommended " "to enable this option.")); /* noise */ @@ -2154,22 +2192,29 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter gtk_widget_set_tooltip_text(pwev, _("You can use this option to introduce noise " "or errors in the evaluations. This is useful for " - "introducing levels below 0-ply. The lower rated " - "bots (e.g., GGotter) on the GamesGrid backgammon " - "server uses this technique. " + "introducing levels below 0-ply. The weaker levels " + "(beginner to advanced) use this technique. " "The introduced noise can be " "deterministic, i.e., always the same noise for " - "the same position, or it can be random")); + "the same position, or it can be random.")); pwFrame2 = gtk_frame_new(_("Noise")); gtk_container_add(GTK_CONTAINER(pwev), pwFrame2); +#if GTK_CHECK_VERSION(3,0,0) + pw3 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pw3 = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame2), pw3); pew->padjNoise = GTK_ADJUSTMENT(gtk_adjustment_new(pec->rNoise, 0, 1, 0.001, 0.001, 0.0)); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pw = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw3), pw); gtk_container_add(GTK_CONTAINER(pw), gtk_label_new(_("Noise:"))); gtk_container_add(GTK_CONTAINER(pw), gtk_spin_button_new(pew->padjNoise, 0.001, 3)); @@ -2199,11 +2244,11 @@ EvalWidget(evalcontext * pec, movefilter * pmf, int *pfOK, const int fMoveFilter gtk_widget_set_tooltip_text(pwev, _("GNU Backgammon will evaluate all moves at " "0-ply. The move filter controls how many " - "moves to be evaluted at higher plies. " + "moves will be evaluated at higher plies. " "A \"smaller\" filter will be faster, but " "GNU Backgammon may not find the best move. " "Power users may set up their own filters " - "by clicking on the [Modify] button")); + "by clicking on the [Modify] button.")); } else pew->pwMoveFilter = NULL; @@ -2341,7 +2386,12 @@ ShowDetailedAnalysis(GtkWidget * button, AnalysisDetails * pDetails) DT_INFO, button, DIALOG_FLAG_MODAL | DIALOG_FLAG_CLOSEBUTTON, G_CALLBACK(DetailedAnalysisOK), pDetails); +#if GTK_CHECK_VERSION(3,0,0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hbox = gtk_hbox_new(FALSE, 0); +#endif + gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), hbox); pwFrame = gtk_frame_new(_("Chequer play")); @@ -2356,7 +2406,11 @@ ShowDetailedAnalysis(GtkWidget * button, AnalysisDetails * pDetails) gtk_box_pack_start(GTK_BOX(hbox), pwFrame, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 4); +#if GTK_CHECK_VERSION(3,0,0) + pwvbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwvbox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame), pwvbox); gtk_box_pack_start(GTK_BOX(pwvbox), @@ -2395,18 +2449,30 @@ AddLevelSettings(GtkWidget * pwFrame, AnalysisDetails * pAnalDetails) GtkWidget *vbox, *hbox, *pw2, *pwDetails, *vboxSpacer; int i; +#if GTK_CHECK_VERSION(3,0,0) + vboxSpacer = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vboxSpacer = gtk_vbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(vboxSpacer), 8); gtk_container_add(GTK_CONTAINER(pwFrame), vboxSpacer); +#if GTK_CHECK_VERSION(3,0,0) + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(vboxSpacer), vbox); /* * Frame with prefined settings */ +#if GTK_CHECK_VERSION(3,0,0) + pw2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4); +#else pw2 = gtk_vbox_new(FALSE, 4); +#endif gtk_box_pack_start(GTK_BOX(vbox), pw2, FALSE, FALSE, 0); /* option menu with selection of predefined settings */ @@ -2421,7 +2487,11 @@ AddLevelSettings(GtkWidget * pwFrame, AnalysisDetails * pAnalDetails) pwDetails = gtk_button_new_with_label(_("Advanced Settings...")); g_signal_connect(G_OBJECT(pwDetails), "clicked", G_CALLBACK(ShowDetailedAnalysis), (void *) pAnalDetails); +#if GTK_CHECK_VERSION(3,0,0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hbox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(hbox), pwDetails, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 4); UpdateSummaryEvalMenuSetting(pAnalDetails); @@ -2575,22 +2645,42 @@ SetAnalysis(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) pwDialog = GTKCreateDialog(_("GNU Backgammon - Analysis Settings"), DT_QUESTION, NULL, DIALOG_FLAG_MODAL, G_CALLBACK(AnalysisOK), &aw); +#if GTK_CHECK_VERSION(3,0,0) + pwPage = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); +#else pwPage = gtk_hbox_new(FALSE, 6); +#endif gtk_container_set_border_width(GTK_CONTAINER(pwPage), 8); +#if GTK_CHECK_VERSION(3,0,0) + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox1 = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwPage), vbox1, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + hboxTop = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hboxTop = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(vbox1), hboxTop, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + hboxBottom = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hboxBottom = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(vbox1), hboxBottom, TRUE, TRUE, 0); pwFrame = gtk_frame_new(_("Analysis")); gtk_box_pack_start(GTK_BOX(hboxTop), pwFrame, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 4); +#if GTK_CHECK_VERSION(3,0,0) + vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox2 = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame), vbox2); aw.pwMoves = gtk_check_button_new_with_label(_("Chequer play")); @@ -2629,7 +2719,7 @@ SetAnalysis(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) for (i = 0; i < 3; i++) { aw.apadjSkill[i] = GTK_ADJUSTMENT(gtk_adjustment_new(1, 0, 1, 0.01, 0.05, 0)); - pwSpin = gtk_spin_button_new(GTK_ADJUSTMENT(aw.apadjSkill[i]), 1, 2); + pwSpin = gtk_spin_button_new(GTK_ADJUSTMENT(aw.apadjSkill[i]), 1, 3); gtk_table_attach(GTK_TABLE(pwTable), pwSpin, 1, 2, i, i + 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(pwSpin), TRUE); @@ -2663,28 +2753,48 @@ SetAnalysis(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) pwFrame = gtk_frame_new(_("Analysis Level")); gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 4); +#if GTK_CHECK_VERSION(3,0,0) + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox1 = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(hboxTop), vbox1, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox1), pwFrame, FALSE, FALSE, 0); pAnalDetailSettings1 = CreateEvalSettings(pwFrame, _("Analysis settings"), &aw.esChequer.ec, (movefilter *) & aw.aamf, &aw.esCube.ec, NULL); +#if GTK_CHECK_VERSION(3,0,0) + gtk_box_pack_start(GTK_BOX(pwPage), gtk_separator_new(GTK_ORIENTATION_VERTICAL), TRUE, TRUE, 0); +#else gtk_box_pack_start(GTK_BOX(pwPage), gtk_vseparator_new(), TRUE, TRUE, 0); +#endif pwFrame = gtk_frame_new(_("Eval Hint/Tutor Level")); gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 4); +#if GTK_CHECK_VERSION(3,0,0) + vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox2 = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(vbox2), pwFrame, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(pwPage), vbox2, FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3,0,0) + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else vbox1 = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame), vbox1); aw.pwHintSame = gtk_check_button_new_with_label(_("Same as analysis")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(aw.pwHintSame), fEvalSameAsAnalysis); g_signal_connect(G_OBJECT(aw.pwHintSame), "toggled", G_CALLBACK(HintSameToggled), &aw); +#if GTK_CHECK_VERSION(3,0,0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hbox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(hbox), aw.pwHintSame, FALSE, FALSE, 8); gtk_box_pack_start(GTK_BOX(vbox1), hbox, FALSE, FALSE, 0); @@ -2734,10 +2844,18 @@ PlayersPage(playerswidget * ppw, int i, const char *title) pwFrame = gtk_frame_new(title); gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 4); +#if GTK_CHECK_VERSION(3,0,0) + pwVBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVBox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwFrame), pwVBox); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pw = gtk_hbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 4); gtk_container_add(GTK_CONTAINER(pwVBox), pw); gtk_container_add(GTK_CONTAINER(pw), gtk_label_new(_("Default Name:"))); @@ -2762,7 +2880,11 @@ PlayersPage(playerswidget * ppw, int i, const char *title) ppw->apwRadio[i][2] = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ppw->apwRadio[i][0]), _("External"))); +#if GTK_CHECK_VERSION(3,0,0) + ppw->apwExternal[i] = pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else ppw->apwExternal[i] = pw = gtk_hbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 4); gtk_widget_set_sensitive(pw, ap[i].pt == PLAYER_EXTERNAL); gtk_container_add(GTK_CONTAINER(pwVBox), pw); @@ -2819,7 +2941,13 @@ SetPlayers(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) GTKCreateDialog(_("GNU Backgammon - Players"), DT_QUESTION, NULL, DIALOG_FLAG_MODAL, G_CALLBACK(PlayersOK), &plw); - gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwHBox = gtk_hbox_new(FALSE, 0)); +#if GTK_CHECK_VERSION(3,0,0) + pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwHBox = gtk_hbox_new(FALSE, 0); +#endif + + gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwHBox); gtk_box_pack_start(GTK_BOX(pwHBox), PlayersPage(&plw, 0, _("Player 0")), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(pwHBox), PlayersPage(&plw, 1, _("Player 1")), FALSE, FALSE, 0); PlayerTypeToggled(NULL, &plw); @@ -2997,7 +3125,11 @@ GetFlagWidget(char *language, char *langCode, const char *flagfilename) gtk_widget_modify_bg(eb2, GTK_STATE_INSENSITIVE, >k_widget_get_style(pwMain)->bg[GTK_STATE_NORMAL]); gtk_container_add(GTK_CONTAINER(frame), eb2); +#if GTK_CHECK_VERSION(3,0,0) + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); +#else vbox = gtk_vbox_new(FALSE, 5); +#endif gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); gtk_container_add(GTK_CONTAINER(eb2), vbox); @@ -3068,7 +3200,11 @@ AddLangWidgets(GtkWidget * cont) { int i, numLangs; GtkWidget *pwVbox, *pwHbox, *selLang = NULL; +#if GTK_CHECK_VERSION(3,0,0) + pwVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVbox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(cont), pwVbox); pwLangRadio1 = gtk_radio_button_new_with_label(NULL, ""); @@ -3094,7 +3230,11 @@ AddLangWidgets(GtkWidget * cont) if (!StrCaseCmp(szLang, aaszLang[i + 1][1])) selLang = flag; } +#if GTK_CHECK_VERSION(3,0,0) + pwHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwHbox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwVbox), pwHbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(pwHbox), pwLangTable, FALSE, FALSE, 20); @@ -3138,7 +3278,7 @@ SetLanguage(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(w)) static void ReportBug(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pwEvent)) { - OpenURL("http://savannah.gnu.org/bugs/?func=additem&group=gnubg"); + OpenURL("https://savannah.gnu.org/bugs/?func=additem&group=gnubg"); } #if defined(USE_GTKUIMANAGER) @@ -3165,7 +3305,7 @@ static GtkActionEntry actionEntries[] = { {"CopyAsMenuAction", NULL, N_("Copy as"), NULL, NULL, G_CALLBACK(NULL)}, {"CopyPosAsAsciiAction", NULL, N_("Position as ASCII"), NULL, NULL, G_CALLBACK(CommandCopy)}, - {"CopyAsGammOnLineAction", NULL, N_("GammOnLine (HTML)"), NULL, NULL, G_CALLBACK(CopyAsGOL)}, + {"CopyAsGammOnLineAction", NULL, N_("BGonline (HTML)"), NULL, NULL, G_CALLBACK(CopyAsGOL)}, {"PasteIDAction", GTK_STOCK_PASTE, N_("_Paste ID"), "<control>V", NULL, G_CALLBACK(PasteIDs)}, @@ -3360,7 +3500,7 @@ static GtkItemFactoryEntry aife[] = { {N_("/_Edit/Copy as"), NULL, NULL, 0, "<Branch>", NULL}, {N_("/_Edit/Copy as/Position as ASCII"), NULL, CommandCopy, 0, NULL, NULL}, - {N_("/_Edit/Copy as/GammOnLine (HTML)"), NULL, + {N_("/_Edit/Copy as/BGonline (HTML)"), NULL, CopyAsGOL, 0, NULL, NULL}, {N_("/_Edit/_Paste ID"), "<control>V", PasteIDs, 0, @@ -3661,7 +3801,13 @@ CreateMainWindow(void) gtk_drag_dest_set(pwMain, GTK_DEST_DEFAULT_ALL, &fileDrop, 1, GDK_ACTION_DEFAULT); g_signal_connect(G_OBJECT(pwMain), "drag_data_received", G_CALLBACK(FileDragDropped), NULL); - gtk_container_add(GTK_CONTAINER(pwMain), pwVbox = gtk_vbox_new(FALSE, 0)); +#if GTK_CHECK_VERSION(3,0,0) + pwVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else + pwVbox = gtk_vbox_new(FALSE, 0); +#endif + + gtk_container_add(GTK_CONTAINER(pwMain), pwVbox); #if defined(USE_GTKUIMANAGER) GError *error = NULL; @@ -3711,7 +3857,12 @@ CreateMainWindow(void) TRUE); gtk_window_add_accel_group(GTK_WINDOW(pwMain), pagMain); #endif - gtk_box_pack_start(GTK_BOX(pwVbox), pwHandle = gtk_handle_box_new(), FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwHandle = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else + pwHandle = gtk_vbox_new(FALSE, 0); +#endif + gtk_box_pack_start(GTK_BOX(pwVbox), pwHandle, FALSE, FALSE, 0); #if defined(USE_GTKUIMANAGER) pwMenuBar = gtk_ui_manager_get_widget(puim, "/MainMenu"); gtk_container_add(GTK_CONTAINER(pwHandle), pwMenuBar); @@ -3720,13 +3871,28 @@ CreateMainWindow(void) gtk_container_add(GTK_CONTAINER(pwHandle), pwMenuBar = gtk_item_factory_get_widget(pif, "<main>")); #endif - gtk_box_pack_start(GTK_BOX(pwVbox), pwHandle = gtk_handle_box_new(), FALSE, TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwHandle = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else + pwHandle = gtk_vbox_new(FALSE, 0); +#endif + gtk_box_pack_start(GTK_BOX(pwVbox), pwHandle, FALSE, TRUE, 0); gtk_container_add(GTK_CONTAINER(pwHandle), pwToolbar = ToolbarNew()); - gtk_box_pack_start(GTK_BOX(pwVbox), pwGameBox = gtk_hbox_new(FALSE, 0), TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwGameBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwGameBox = gtk_hbox_new(FALSE, 0); +#endif + gtk_box_pack_start(GTK_BOX(pwVbox), pwGameBox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(pwVbox), hpaned = gtk_hpaned_new(), TRUE, TRUE, 0); - gtk_paned_add1(GTK_PANED(hpaned), pwPanelGameBox = gtk_hbox_new(FALSE, 0)); +#if GTK_CHECK_VERSION(3,0,0) + pwPanelGameBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwPanelGameBox = gtk_hbox_new(FALSE, 0); +#endif + gtk_paned_add1(GTK_PANED(hpaned), pwPanelGameBox); gtk_container_add(GTK_CONTAINER(pwPanelGameBox), pwEventBox = gtk_event_box_new()); gtk_event_box_set_visible_window(GTK_EVENT_BOX(pwEventBox), FALSE); @@ -3734,9 +3900,18 @@ CreateMainWindow(void) g_signal_connect(G_OBJECT(pwEventBox), "button-press-event", G_CALLBACK(board_button_press), BOARD(pwBoard)->board_data); +#if GTK_CHECK_VERSION(3,0,0) + pwPanelHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwPanelHbox = gtk_hbox_new(FALSE, 0); +#endif gtk_paned_pack2(GTK_PANED(hpaned), pwPanelHbox, FALSE, FALSE); - gtk_box_pack_start(GTK_BOX(pwPanelHbox), pwPanelVbox = gtk_vbox_new(FALSE, 1), TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwPanelVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); +#else + pwPanelVbox = gtk_vbox_new(FALSE, 1); +#endif + gtk_box_pack_start(GTK_BOX(pwPanelHbox), pwPanelVbox, TRUE, TRUE, 0); /* Do this so that the menu is packed now instead of in the idle loop */ #if defined(USE_GTKUIMANAGER) @@ -3747,7 +3922,12 @@ CreateMainWindow(void) /* Status bar */ - gtk_box_pack_end(GTK_BOX(pwVbox), pwHbox = gtk_hbox_new(FALSE, 0), FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwHbox = gtk_hbox_new(FALSE, 0); +#endif + gtk_box_pack_end(GTK_BOX(pwVbox), pwHbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(pwHbox), pwStatus = gtk_statusbar_new(), TRUE, TRUE, 0); @@ -3774,7 +3954,11 @@ CreateMainWindow(void) pwIDBox = gtk_event_box_new(); gtk_box_pack_start(GTK_BOX(pwHbox), pwIDBox, FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwHbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwHbox2 = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwIDBox), pwHbox2); gtk_box_pack_start(GTK_BOX(pwHbox2), gtk_label_new("GNUbg ID:"), FALSE, FALSE, 0); @@ -3786,7 +3970,7 @@ CreateMainWindow(void) gtk_container_set_border_width(GTK_CONTAINER(pwFrame), 2); gtk_widget_set_tooltip_text(pwIDBox, _("This is a unique id for this position." - " Ctrl+C copies the current ID and Ctrl+V pastes an ID from the clipboard")); + " Ctrl+C copies the current ID and Ctrl+V pastes an ID from the clipboard.")); g_signal_connect(G_OBJECT(pwIDBox), "button-press-event", G_CALLBACK(ContextMenu), idMenu); pwStop = gtk_event_box_new(); @@ -3802,6 +3986,9 @@ CreateMainWindow(void) gtk_box_pack_start(GTK_BOX(pwHbox), pwProgress = gtk_progress_bar_new(), FALSE, FALSE, 0); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pwProgress), 0.0); +#if GTK_CHECK_VERSION(3,0,0) + gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(pwProgress), TRUE); +#endif /* This is a kludge to work around an ugly bug in GTK: we don't want to * show text in the progress bar yet, but we might later. So we have to * pretend we want text in order to be sized correctly, and then set the @@ -3809,7 +3996,9 @@ CreateMainWindow(void) gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pwProgress), " "); g_signal_connect(G_OBJECT(pwMain), "configure_event", G_CALLBACK(configure_event), NULL); +#if ! GTK_CHECK_VERSION(3,0,0) g_signal_connect(G_OBJECT(pwMain), "size-request", G_CALLBACK(MainSize), NULL); +#endif g_signal_connect(G_OBJECT(pwMain), "delete_event", G_CALLBACK(main_delete), NULL); g_signal_connect(G_OBJECT(pwMain), "destroy", G_CALLBACK(gtk_main_quit), NULL); } @@ -3851,6 +4040,24 @@ gnubg_set_default_icon(void) #endif } +static void +ApplyDefaultCss(void) +{ + GtkCssProvider *cssProvider; + char *cssPath; + + cssProvider = gtk_css_provider_new(); + cssPath = BuildFilename("gnubg.css"); + gtk_css_provider_load_from_path(cssProvider, cssPath, NULL); + gtk_style_context_add_provider_for_screen(gtk_window_get_screen(GTK_WINDOW(pwMain)), + GTK_STYLE_PROVIDER(cssProvider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + g_free(cssPath); + if (cssProvider) + g_object_unref(G_OBJECT(cssProvider)); +} + extern void InitGTK(int *argc, char ***argv) { @@ -3891,6 +4098,7 @@ InitGTK(int *argc, char ***argv) gnubg_set_default_icon(); CreateMainWindow(); + ApplyDefaultCss(); /*Create string for handling messages from output* functions */ output_str = g_string_new(NULL); @@ -4035,9 +4243,9 @@ RunGTK(GtkWidget * pwSplash, char *commands, char *python_script, char *match) if (python_script) { #ifdef WIN32 - outputerrf(_("The MS windows GTK interface doesn't support the '-p' option. Use the cl interface instead")); + outputerrf(_("The Windows GTK interface does not support the '-p' option. Use the command-line interface instead.")); #else -#if USE_PYTHON +#if defined(USE_PYTHON) g_idle_add(python_run_file, g_strdup(python_script)); #endif #endif @@ -4333,22 +4541,27 @@ ToolButtonPressed(GtkWidget * pw, newwidget * pnw) extern int edit_new(unsigned int length) { - matchstate ms; + matchstate lms; - ms.anDice[0] = ms.anDice[1] = 0; - ms.fTurn = ms.fMove = 1; - ms.fResigned = 0; - ms.fDoubled = 0; - ms.fCubeOwner = -1; - ms.fCrawford = FALSE; - ms.fJacoby = fJacoby; - ms.anScore[0] = ms.anScore[1] = 0; - ms.nCube = 0; - ms.gs = GAME_PLAYING; + lms.anDice[0] = ms.anDice[0]; + lms.anDice[1] = ms.anDice[1]; + + lms.fTurn = lms.fMove = 1; + lms.fResigned = 0; + lms.fDoubled = 0; + if (ms.fCubeOwner == -1) + lms.fCubeOwner = ms.fCubeOwner; + else + lms.fCubeOwner = (ms.fTurn == 1 ? ms.fCubeOwner : !ms.fCubeOwner); + lms.fCrawford = FALSE; + lms.fJacoby = fJacoby; + lms.anScore[0] = lms.anScore[1] = 0; + lms.nCube = ms.nCube; + lms.gs = GAME_PLAYING; - ms.nMatchTo = length; + lms.nMatchTo = length; - CommandSetMatchID(MatchIDFromMatchState(&ms)); + CommandSetMatchID(MatchIDFromMatchState(&lms)); return 0; } @@ -4370,7 +4583,11 @@ NewWidget(newwidget * pnw) GtkWidget *pwVbox, *pwHbox, *pwLabel, *pwToolbar; GtkWidget *pwButtons, *pwFrame, *pwVbox2; GtkToolItem *pwToolButton; +#if GTK_CHECK_VERSION(3,0,0) + pwVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVbox = gtk_vbox_new(FALSE, 0); +#endif pwToolbar = gtk_toolbar_new(); toolbar_set_orientation(GTK_TOOLBAR(pwToolbar), GTK_ORIENTATION_HORIZONTAL); @@ -4419,7 +4636,12 @@ NewWidget(newwidget * pnw) } pwFrame = gtk_frame_new(_("Match settings")); + +#if GTK_CHECK_VERSION(3,0,0) + pwHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwHbox = gtk_hbox_new(FALSE, 0); +#endif pwLabel = gtk_label_new(_("Length:")); gtk_label_set_justify(GTK_LABEL(pwLabel), GTK_JUSTIFY_RIGHT); @@ -4435,8 +4657,13 @@ NewWidget(newwidget * pnw) pwFrame = gtk_frame_new(_("Player settings")); +#if GTK_CHECK_VERSION(3,0,0) + pwHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + pwVbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwHbox = gtk_hbox_new(FALSE, 0); pwVbox2 = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwHbox), pwVbox2); @@ -4456,7 +4683,11 @@ NewWidget(newwidget * pnw) g_signal_connect(G_OBJECT(pwButtons), "clicked", G_CALLBACK(SettingsPressed), NULL); +#if GTK_CHECK_VERSION(3,0,0) + pwVbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVbox2 = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwHbox), pwVbox2); @@ -4798,13 +5029,21 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) GtkWidget *pwHBox; GtkWidget *pwTable, *pwFrame; +#if GTK_CHECK_VERSION(3,0,0) + pwPage = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwPage = gtk_vbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pwPage), 8); prpw->padjSeed = GTK_ADJUSTMENT(gtk_adjustment_new(prw->rcRollout.nSeed, 0, INT_MAX, 1, 1, 0)); prpw->padjTrials = GTK_ADJUSTMENT(gtk_adjustment_new(prw->rcRollout.nTrials, 1, 1296 * 1296, 36, 36, 0)); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pw = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwPage), pw); gtk_container_add(GTK_CONTAINER(pw), gtk_label_new(_("Seed:"))); @@ -4816,7 +5055,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) pwFrame = gtk_frame_new(_("Truncation")); gtk_container_add(GTK_CONTAINER(pwPage), pwFrame); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else pw = gtk_hbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw); @@ -4825,7 +5068,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prpw->pwDoTrunc), prw->rcRollout.fDoTruncate); g_signal_connect(G_OBJECT(prpw->pwDoTrunc), "toggled", G_CALLBACK(TruncEnableToggled), prw); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwAdjTruncPlies = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwAdjTruncPlies = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("Truncate at ply:"))); @@ -4836,7 +5083,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) pwFrame = gtk_frame_new(_("Evaluation for later plies")); gtk_container_add(GTK_CONTAINER(pwPage), pwFrame); +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else pw = gtk_hbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw); @@ -4845,7 +5096,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prw->prwGeneral->pwDoLate), prw->rcRollout.fLateEvals); g_signal_connect(G_OBJECT(prw->prwGeneral->pwDoLate), "toggled", G_CALLBACK(LateEvalToggled), prw); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwAdjLatePlies = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwAdjLatePlies = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("Change eval after ply:"))); @@ -4856,7 +5111,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_container_add(GTK_CONTAINER(pwPage), pwFrame); /* an hbox for the pane */ +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else pw = gtk_hbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw); @@ -4866,11 +5125,18 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) g_signal_connect(G_OBJECT(prw->prwGeneral->pwDoSTDStop), "toggled", G_CALLBACK(STDStopToggled), prw); /* a vbox for the adjusters */ +#if GTK_CHECK_VERSION(3,0,0) + pwv = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwv = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw), pwv); - +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwAdjMinGames = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwAdjMinGames = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwv), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("Minimum Trials:"))); @@ -4880,7 +5146,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_container_add(GTK_CONTAINER(pwHBox), prpw->pwMinGames); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwAdjMaxError = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwAdjMaxError = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwv), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("Equity Standard Deviation:"))); @@ -4895,12 +5165,20 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_container_add(GTK_CONTAINER(pwPage), pwFrame); /* an hbox for the frame */ +#if GTK_CHECK_VERSION(3,0,0) + pw = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else pw = gtk_hbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw); /* a vbox for the check boxes */ +#if GTK_CHECK_VERSION(3,0,0) + pwv = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwv = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw), pwv); prpw->pwJsdDoStop = gtk_check_button_new_with_label(_("Enable Stop on JSD")); @@ -4909,10 +5187,18 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) g_signal_connect(G_OBJECT(prw->prwGeneral->pwJsdDoStop), "toggled", G_CALLBACK(JsdStopToggled), prw); /* a vbox for the adjusters */ +#if GTK_CHECK_VERSION(3,0,0) + pwv = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwv = gtk_vbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pw), pwv); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwJsdAdjMinGames = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwJsdAdjMinGames = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwv), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("Minimum Trials:"))); @@ -4923,7 +5209,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) gtk_container_add(GTK_CONTAINER(pwHBox), prpw->pwJsdMinGames); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwJsdAdjLimit = pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else prpw->pwJsdAdjLimit = pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwv), pwHBox); gtk_container_add(GTK_CONTAINER(pwHBox), gtk_label_new(_("JSDs from best choice"))); @@ -4935,7 +5225,11 @@ RolloutPageGeneral(rolloutpagegeneral * prpw, rolloutwidget * prw) pwFrame = gtk_frame_new(_("Bearoff Truncation")); gtk_container_add(GTK_CONTAINER(pwPage), pwFrame); +#if GTK_CHECK_VERSION(3,0,0) + prpw->pwTruncBearoffOpts = pw = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); +#else prpw->pwTruncBearoffOpts = pw = gtk_vbox_new(FALSE, 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(pw), 8); gtk_container_add(GTK_CONTAINER(pwFrame), pw); @@ -5106,7 +5400,11 @@ SetRollouts(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pwIgnore)) gtk_notebook_append_page(GTK_NOTEBOOK(rw.RolloutNotebook), RolloutPageGeneral(rw.prwGeneral, &rw), gtk_label_new(_("General Settings"))); +#if GTK_CHECK_VERSION(3,0,0) + pwVBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVBox = gtk_vbox_new(FALSE, 0); +#endif gtk_notebook_append_page(GTK_NOTEBOOK(rw.RolloutNotebook), pwVBox, gtk_label_new(_("Play settings"))); pwTable = gtk_table_new(3, 2, FALSE); @@ -5119,7 +5417,7 @@ SetRollouts(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pwIgnore)) (GtkAttachOptions) 0, (GtkAttachOptions) 0, 4, 4); rw.analysisDetails[2] = RolloutPage(rw.prpwPages[2], _("Later Play (0) "), TRUE, &rw.frame[1]); gtk_table_attach(GTK_TABLE(pwTable), gtk_widget_get_parent(rw.analysisDetails[2]->pwSettingWidgets), 0, 1, 1, 2, - (GtkAttachOptions) 0, (GtkAttachOptions) 0, 4, 4); + (GtkAttachOptions) 0, (GtkAttachOptions) 0, 4, 4); rw.analysisDetails[3] = RolloutPage(rw.prpwPages[3], _("Later Play (1) "), TRUE, NULL); gtk_table_attach(GTK_TABLE(pwTable), gtk_widget_get_parent(rw.analysisDetails[3]->pwSettingWidgets), 1, 2, 1, 2, (GtkAttachOptions) 0, (GtkAttachOptions) 0, 4, 4); @@ -5616,7 +5914,6 @@ GTKShowScoreSheet(void) GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkListStore *store; - int numRows = 0; char title[100]; listOLD *pl; @@ -5627,14 +5924,22 @@ GTKShowScoreSheet(void) strcat(title, _("Money Session")); pwDialog = GTKCreateDialog(title, DT_INFO, NULL, DIALOG_FLAG_MODAL, NULL, NULL); +#if GTK_CHECK_VERSION(3,0,0) + pwBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwBox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pwBox), 8); gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwBox); gtk_container_set_border_width(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), 4); +#if GTK_CHECK_VERSION(3,0,0) + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else hbox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), hbox); store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_INT); @@ -5666,7 +5971,6 @@ GTKShowScoreSheet(void) } gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, score[0], 1, score[1], -1); - numRows++; } pwScrolled = gtk_scrolled_window_new(NULL, NULL); @@ -5711,6 +6015,7 @@ GtkShowEngine(GtkWidget * parent) szBuffer[1] = NULL; EvalStatus(szBuffer[0]); ShowList(szBuffer, _("Evaluation Engine"), parent); + g_free(szBuffer[0]); } extern void @@ -5732,7 +6037,11 @@ GTKShowVersion(void) gtk_box_pack_start(GTK_BOX(DialogArea(pwDialog, DA_MAIN)), image, FALSE, FALSE, 0); /* Buttons on right side */ +#if GTK_CHECK_VERSION(3,0,0) + pwButtonBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwButtonBox = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(DialogArea(pwDialog, DA_MAIN)), pwButtonBox, FALSE, FALSE, 8); gtk_box_pack_start(GTK_BOX(pwButtonBox), pwButton = gtk_button_new_with_label(_("Credits")), FALSE, FALSE, 8); @@ -5772,19 +6081,31 @@ GTKShowBuildInfo(GtkWidget * UNUSED(pw), GtkWidget * pwParent) const char *pch; pwDialog = GTKCreateDialog(_("GNU Backgammon - Build Info"), DT_INFO, pwParent, DIALOG_FLAG_MODAL, NULL, NULL); +#if GTK_CHECK_VERSION(3,0,0) + pwBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwBox = gtk_vbox_new(FALSE, 0); +#endif gtk_container_set_border_width(GTK_CONTAINER(pwBox), 8); gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwBox); gtk_box_pack_start(GTK_BOX(pwBox), SelectableLabel(pwDialog, "Version " VERSION_STRING), FALSE, FALSE, 4); +#if GTK_CHECK_VERSION(3,0,0) + gtk_box_pack_start(GTK_BOX(pwBox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 4); +#else gtk_box_pack_start(GTK_BOX(pwBox), gtk_hseparator_new(), FALSE, FALSE, 4); +#endif while ((pch = GetBuildInfoString())) gtk_box_pack_start(GTK_BOX(pwBox), pwPrompt = gtk_label_new(gettext(pch)), FALSE, FALSE, 0); +#if GTK_CHECK_VERSION(3,0,0) + gtk_box_pack_start(GTK_BOX(pwBox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 4); +#else gtk_box_pack_start(GTK_BOX(pwBox), gtk_hseparator_new(), FALSE, FALSE, 4); +#endif gtk_box_pack_start(GTK_BOX(pwBox), gtk_label_new(_(aszCOPYRIGHT)), FALSE, FALSE, 4); @@ -5802,7 +6123,13 @@ static void AddTitle(GtkWidget * pwBox, char *Title) { GtkRcStyle *ps = gtk_rc_style_new(); - GtkWidget *pwTitle = gtk_label_new(Title), *pwHBox = gtk_hbox_new(TRUE, 0); + GtkWidget *pwTitle = gtk_label_new(Title), *pwHBox; + +#if GTK_CHECK_VERSION(3,0,0) + pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwBox), pwHBox, FALSE, FALSE, 4); ps->font_desc = pango_font_description_new(); @@ -5861,22 +6188,38 @@ GTKCommandShowCredits(GtkWidget * UNUSED(pw), GtkWidget * pwParent) pwDialog = GTKCreateDialog(_("GNU Backgammon - Credits"), DT_INFO, pwParent, DIALOG_FLAG_MODAL, NULL, NULL); +#if GTK_CHECK_VERSION(3,0,0) + pwMainHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwMainHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwMainHBox); +#if GTK_CHECK_VERSION(3,0,0) + pwBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwBox = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwMainHBox), pwBox, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(pwBox), 8); while (credit->Title) { /* Two columns, so new hbox every-other one */ if (i / 2 == (i + 1) / 2) { - pwHBox = gtk_hbox_new(TRUE, 0); +#if GTK_CHECK_VERSION(3,0,0) + pwHBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + pwHBox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwBox), pwHBox, TRUE, FALSE, 0); } +#if GTK_CHECK_VERSION(3,0,0) + pwVBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVBox = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwHBox), pwVBox, FALSE, FALSE, 0); AddTitle(pwVBox, _(credit->Title)); @@ -5887,12 +6230,20 @@ GTKCommandShowCredits(GtkWidget * UNUSED(pw), GtkWidget * pwParent) ce++; } if (i == 1) +#if GTK_CHECK_VERSION(3,0,0) + gtk_box_pack_start(GTK_BOX(pwBox), gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 4); +#else gtk_box_pack_start(GTK_BOX(pwBox), gtk_hseparator_new(), FALSE, FALSE, 4); +#endif credit++; i++; } +#if GTK_CHECK_VERSION(3,0,0) + pwVBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pwVBox = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pwMainHBox), pwVBox, FALSE, FALSE, 0); AddTitle(pwVBox, _("Special thanks")); @@ -5920,10 +6271,13 @@ GTKCommandShowCredits(GtkWidget * UNUSED(pw), GtkWidget * pwParent) gtk_container_set_border_width(GTK_CONTAINER(pwVBox), 8); gtk_box_pack_start(GTK_BOX(pwVBox), pwScrolled, TRUE, TRUE, 0); gtk_widget_set_size_request(pwScrolled, 150, -1); +#if GTK_CHECK_VERSION(3, 8, 0) + gtk_container_add(GTK_CONTAINER(pwScrolled), treeview); +#else gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(pwScrolled), treeview); +#endif gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pwScrolled), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - GTKRunDialog(pwDialog); } @@ -6653,7 +7007,11 @@ AddNavigation(GtkWidget * pvbox) sprintf(sz, _("All games: %s %d, %s %d"), ap[0].szName, anFinalScore[0], ap[1].szName, anFinalScore[1]); else sprintf(sz, _("All games: %s, %s"), ap[0].szName, ap[1].szName); +#if GTK_CHECK_VERSION(3,0,0) + phbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else phbox = gtk_hbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pvbox), phbox, FALSE, FALSE, 4); pw = button_from_image(gtk_image_new_from_stock(GNUBG_STOCK_GO_PREV_GAME, GTK_ICON_SIZE_LARGE_TOOLBAR)); g_signal_connect(G_OBJECT(pw), "clicked", G_CALLBACK(StatsPreviousGame), box); @@ -6807,7 +7165,11 @@ GTKDumpStatcontext(int game) gtk_notebook_set_scrollable(GTK_NOTEBOOK(pwNotebook), TRUE); gtk_notebook_popup_disable(GTK_NOTEBOOK(pwNotebook)); +#if GTK_CHECK_VERSION(3,0,0) + pvbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); +#else pvbox = gtk_vbox_new(FALSE, 0); +#endif gtk_box_pack_start(GTK_BOX(pvbox), pwNotebook, TRUE, TRUE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(pwNotebook), statViews[FORMATGS_OVERALL] = CreateList(), @@ -6855,7 +7217,7 @@ GTKDumpStatcontext(int game) #endif pwUsePanels = gtk_check_button_new_with_label(_("Split statistics into panels")); - gtk_widget_set_tooltip_text(pwUsePanels, "Show data in a single list or split other several panels"); + gtk_widget_set_tooltip_text(pwUsePanels, "Show data in a single list or split into several panels"); gtk_box_pack_start(GTK_BOX(pvbox), pwUsePanels, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pwUsePanels), fGUIUseStatsPanel); g_signal_connect(G_OBJECT(pwUsePanels), "toggled", G_CALLBACK(toggle_fGUIUseStatsPanel), NULL); @@ -7119,9 +7481,19 @@ GTKShowCalibration(void) /* FIXME should be modal but presently causes crash and/or killing of the main window */ pwDialog = GTKCreateDialog(_("GNU Backgammon - Speed estimate"), DT_QUESTION, NULL, 0, G_CALLBACK(CalibrationOK), pwspin); - gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwvbox = gtk_vbox_new(FALSE, 8)); +#if GTK_CHECK_VERSION(3,0,0) + pwvbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); +#else + pwvbox = gtk_vbox_new(FALSE, 8); +#endif + gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwvbox); gtk_container_set_border_width(GTK_CONTAINER(pwvbox), 8); - gtk_container_add(GTK_CONTAINER(pwvbox), pwhbox = gtk_hbox_new(FALSE, 8)); +#if GTK_CHECK_VERSION(3,0,0) + pwhbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else + pwhbox = gtk_hbox_new(FALSE, 8); +#endif + gtk_container_add(GTK_CONTAINER(pwvbox), pwhbox); gtk_container_add(GTK_CONTAINER(pwhbox), pwenable = gtk_check_button_new_with_label(_("Speed recorded:"))); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pwenable), rEvalsPerSec > 0); @@ -7141,7 +7513,7 @@ GTKShowCalibration(void) } static gboolean -CalibrationCancel(GtkObject * UNUSED(po), gpointer UNUSED(p)) +CalibrationCancel(GObject * UNUSED(po), gpointer UNUSED(p)) { fInterrupt = TRUE; @@ -7157,7 +7529,12 @@ GTKCalibrationStart(void) pwDialog = GTKCreateDialog(_("GNU Backgammon - Calibration"), DT_INFO, NULL, DIALOG_FLAG_MODAL | DIALOG_FLAG_NOTIDY, G_CALLBACK(CalibrationCancel), NULL); - gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwhbox = gtk_hbox_new(FALSE, 8)); +#if GTK_CHECK_VERSION(3,0,0) + pwhbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); +#else + pwhbox = gtk_hbox_new(FALSE, 8); +#endif + gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), pwhbox); gtk_container_set_border_width(GTK_CONTAINER(pwhbox), 8); gtk_container_add(GTK_CONTAINER(pwhbox), gtk_label_new(_("Calibrating:"))); gtk_container_add(GTK_CONTAINER(pwhbox), pwResult = gtk_label_new(_(" (n/a) "))); @@ -7235,11 +7612,20 @@ GTKResign(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pw)) } pwDialog = GTKCreateDialog(_("Resign"), DT_QUESTION, NULL, DIALOG_FLAG_MODAL | DIALOG_FLAG_NOOK, NULL, NULL); +#if GTK_CHECK_VERSION(3,0,0) + pwVbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); + /* FIXME: how do we set homogenous to TRUE in gtk3 ? */ +#else pwVbox = gtk_vbox_new(TRUE, 5); +#endif for (i = 0; i < 3; i++) { pwButtons = gtk_button_new(); +#if GTK_CHECK_VERSION(3,0,0) + pwHbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else pwHbox = gtk_hbox_new(FALSE, 0); +#endif gtk_container_add(GTK_CONTAINER(pwButtons), pwHbox); gtk_box_pack_start(GTK_BOX(pwHbox), gtk_image_new_from_stock(resign_stocks[i], GTK_ICON_SIZE_LARGE_TOOLBAR), FALSE, FALSE, 0); |