summaryrefslogtreecommitdiff
path: root/gtkexport.c
diff options
context:
space:
mode:
authorRuss Allbery <rra@debian.org>2008-02-16 10:41:04 -0800
committerRuss Allbery <rra@debian.org>2008-02-16 10:41:04 -0800
commit4258edd6a0fcb6cd568413984eff5731829897b2 (patch)
treef215b95d6b53e3b8af77a642e80afa9aa1e7cbaf /gtkexport.c
Imported upstream version 0.16~20080216
Diffstat (limited to 'gtkexport.c')
-rw-r--r--gtkexport.c824
1 files changed, 824 insertions, 0 deletions
diff --git a/gtkexport.c b/gtkexport.c
new file mode 100644
index 0000000..4bfd664
--- /dev/null
+++ b/gtkexport.c
@@ -0,0 +1,824 @@
+/*
+ * gtkexport.c
+ *
+ * by Joern Thyssen <jthyssen@dk.ibm.com>, 2002
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 3 or later of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id: gtkexport.c,v 1.37 2008/01/20 23:38:08 c_anthon Exp $
+ */
+
+#include "config.h"
+#include <gtk/gtk.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "backgammon.h"
+#include "eval.h"
+#include "gtkgame.h"
+#include "export.h"
+#include "gtkexport.h"
+#include <glib/gi18n.h>
+#include "boarddim.h"
+#include "gtkwindows.h"
+
+static char *aszInclude[] = {
+ N_("Annotations"),
+ N_("Analysis"),
+ N_("Statistics"),
+ N_("Legend"),
+ N_("Match Information") };
+
+#define NUM_INCLUDE (sizeof(aszInclude)/sizeof(aszInclude[0]))
+
+static char *aszMovesDisplay[] = {
+ N_("Show for moves marked 'very bad'"),
+ N_("Show for moves marked 'bad'"),
+ N_("Show for moves marked 'doubtful'"),
+ N_("Show for unmarked moves"),
+ };
+
+#define NUM_MOVES (sizeof(aszMovesDisplay)/sizeof(aszMovesDisplay[0]))
+
+static char *aszCubeDisplay[] = {
+ N_("Show for cube decisions marked 'very bad'"),
+ N_("Show for cube decisions marked 'bad'"),
+ N_("Show for cube decisions marked 'doubtful'"),
+ N_("Show for unmarked cube decisions"),
+ N_("Show for actual cube decisions"),
+ N_("Show for missed doubles"),
+ N_("Show for close cube decisions") };
+
+#define NUM_CUBES (sizeof(aszCubeDisplay)/sizeof(aszCubeDisplay[0]))
+
+typedef struct _exportwidget {
+
+ /* export settings */
+
+ exportsetup *pexs;
+
+ /* include */
+
+ GtkWidget *apwInclude[ NUM_INCLUDE ];
+
+ /* board */
+
+ GtkAdjustment *padjDisplayBoard;
+ GtkWidget *apwSide[ 2 ];
+
+ /* moves */
+
+ GtkAdjustment *padjMoves;
+ GtkWidget *pwMovesDetailProb;
+ GtkWidget *apwMovesParameters[ 2 ];
+ GtkWidget *apwMovesDisplay[ NUM_MOVES ];
+
+ /* cube */
+
+ GtkWidget *pwCubeDetailProb;
+ GtkWidget *apwCubeParameters[ 2 ];
+ GtkWidget *apwCubeDisplay[ NUM_CUBES ];
+
+ /* other stuff */
+
+ GtkWidget *pwHTMLPictureURL;
+ GtkWidget *pwHTMLType;
+ GtkWidget *pwHTMLCSS;
+
+ /* Sizes */
+
+ GtkWidget *pwPNGSize;
+ GtkAdjustment *adjPNGSize;
+
+ GtkWidget *pwHtmlSize;
+ GtkAdjustment *adjHtmlSize;
+
+} exportwidget;
+
+static void
+ExportGetValues ( exportwidget *pew, exportsetup *pexs ) {
+
+ unsigned int i;
+
+ /* include */
+
+ pexs->fIncludeAnnotation =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 0 ] ) );
+
+ pexs->fIncludeAnalysis =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 1 ] ) );
+
+ pexs->fIncludeStatistics =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 2 ] ) );
+
+ pexs->fIncludeLegend =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 3 ] ) );
+
+ pexs->fIncludeMatchInfo =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 4 ] ) );
+
+
+ /* board */
+
+ pexs->fDisplayBoard = (int)pew->padjDisplayBoard->value;
+
+ pexs->fSide = 0;
+ for ( i = 0; i < 2; i++ )
+ pexs->fSide = pexs->fSide |
+ ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( pew->apwSide[ i ] ) ) << i );
+
+ /* moves */
+
+ pexs->nMoves = (int)pew->padjMoves->value;
+
+ pexs->fMovesDetailProb =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->pwMovesDetailProb ) );
+
+ for ( i = 0; i < 2; i++ )
+ pexs->afMovesParameters[ i ] =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->apwMovesParameters[ i ] ) );
+
+ for ( i = 0; i < NUM_MOVES ; i++ )
+ pexs->afMovesDisplay[ i ] =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->apwMovesDisplay[ i ] ) );
+
+ /* cube */
+
+ pexs->fCubeDetailProb =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->pwCubeDetailProb ) );
+
+ for ( i = 0; i < 2; i++ )
+ pexs->afCubeParameters[ i ] =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->apwCubeParameters[ i ] ) );
+
+ /* skip unused entries */
+ for ( i = 0; i < NUM_CUBES ; i++ ) {
+ if (aszCubeDisplay[ i ]) {
+ pexs->afCubeDisplay[ i ] =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
+ pew->apwCubeDisplay[ i ] ) );
+ }
+ }
+
+ /* html */
+
+ pexs->szHTMLPictureURL =
+ g_strdup ( gtk_entry_get_text( GTK_ENTRY( pew->pwHTMLPictureURL ) ) );
+
+ pexs->het = (htmlexporttype)gtk_option_menu_get_history (GTK_OPTION_MENU (pew->pwHTMLType));
+
+ pexs->hecss = (htmlexportcss)gtk_option_menu_get_history (GTK_OPTION_MENU (pew->pwHTMLCSS));
+
+ /* sizes */
+ pexs->nPNGSize = (int)pew->adjPNGSize->value;
+ pexs->nHtmlSize = (int)pew->adjHtmlSize->value;
+}
+
+#define CHECKVALUE(orig,new,flag,text,format) \
+{ \
+ if ( orig->flag != new->flag ) { \
+ char *sz = g_strdup_printf ( "set export " text " " format, \
+ new->flag ); \
+ UserCommand ( sz ); \
+ g_free ( sz ); \
+ } \
+}
+
+#define CHECKFLAG(orig,new,flag,text) \
+{ \
+ if ( orig->flag != new->flag ) { \
+ char *sz = g_strdup_printf ( "set export " text " %s", \
+ new->flag ? "on" : "off" ); \
+ UserCommand ( sz ); \
+ g_free ( sz ); \
+ } \
+}
+
+#define CHECKFLAG2(orig,new,flag,text,text2) \
+{ \
+ if ( orig->flag != new->flag ) { \
+ char *sz = g_strdup_printf ( "set export " text " %s %s", \
+ text2, new->flag ? "on" : "off" ); \
+ UserCommand ( sz ); \
+ g_free ( sz ); \
+ } \
+}
+
+static void
+SetExportCommands ( const exportsetup *pexsOrig,
+ const exportsetup *pexsNew ) {
+
+ int i;
+
+ /* display */
+
+ CHECKFLAG ( pexsOrig, pexsNew, fIncludeAnnotation, "include annotation" );
+ CHECKFLAG ( pexsOrig, pexsNew, fIncludeAnalysis, "include analysis" );
+ CHECKFLAG ( pexsOrig, pexsNew, fIncludeStatistics, "include statistics" );
+ CHECKFLAG ( pexsOrig, pexsNew, fIncludeLegend, "include legend" );
+ CHECKFLAG ( pexsOrig, pexsNew, fIncludeMatchInfo, "include matchinfo" );
+
+ /* board */
+
+ CHECKVALUE ( pexsOrig, pexsNew, fDisplayBoard, "show board", "%d" );
+
+ if ( pexsOrig->fSide != pexsNew->fSide ) {
+ if ( pexsNew->fSide == 3 )
+ UserCommand ( "set export show player both" );
+ else {
+ CHECKVALUE ( pexsOrig, pexsNew, fSide - 1, "show player", "%d" );
+ }
+ }
+
+ /* moves */
+
+ CHECKVALUE ( pexsOrig, pexsNew, nMoves, "moves number", "%d" );
+ CHECKFLAG ( pexsOrig, pexsNew, fMovesDetailProb,
+ "moves probabilities" );
+ CHECKFLAG ( pexsOrig, pexsNew, afMovesParameters[ 0 ],
+ "moves parameters evaluation" );
+ CHECKFLAG ( pexsOrig, pexsNew, afMovesParameters[ 1 ],
+ "moves parameters rollout" );
+
+ for ( i = 0; i < N_SKILLS; ++i ) {
+ if ( i == SKILL_NONE ) {
+ CHECKFLAG ( pexsOrig, pexsNew, afMovesDisplay[ i ],
+ "moves display unmarked" );
+ }
+ else {
+ CHECKFLAG2 ( pexsOrig, pexsNew, afMovesDisplay[ i ],
+ "moves display", aszSkillTypeCommand[ i ] );
+ }
+ }
+
+ /* cube */
+
+ CHECKFLAG ( pexsOrig, pexsNew, fCubeDetailProb,
+ "cube probabilities" );
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeParameters[ 0 ],
+ "cube parameters evaluation" );
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeParameters[ 1 ],
+ "cube parameters rollout" );
+
+ for ( i = 0; i < N_SKILLS; ++i ) {
+ if ( i == SKILL_NONE ) {
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeDisplay[ i ],
+ "cube display unmarked" );
+ }
+ else {
+ CHECKFLAG2 ( pexsOrig, pexsNew, afCubeDisplay[ i ],
+ "cube display", aszSkillTypeCommand[ i ] );
+ }
+ }
+
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeDisplay[ EXPORT_CUBE_ACTUAL ],
+ "cube display actual" );
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeDisplay[ EXPORT_CUBE_MISSED ],
+ "cube display missed" );
+ CHECKFLAG ( pexsOrig, pexsNew, afCubeDisplay[ EXPORT_CUBE_CLOSE ],
+ "cube display close" );
+
+ /* HTML */
+
+ if ( strcmp ( pexsOrig->szHTMLPictureURL, pexsNew->szHTMLPictureURL ) ) {
+ char *sz = g_strdup_printf ( "set export html pictureurl \"%s\"",
+ pexsNew->szHTMLPictureURL );
+ UserCommand ( sz );
+ g_free ( sz );
+ }
+
+ if ( pexsOrig->het != pexsNew->het ) {
+ char *sz = g_strdup_printf ( "set export html type \"%s\"",
+ aszHTMLExportType[ pexsNew->het ] );
+ UserCommand ( sz );
+ g_free ( sz );
+ }
+
+ if ( pexsOrig->hecss != pexsNew->hecss ) {
+ char *sz = g_strdup_printf ( "set export html css \"%s\"",
+ aszHTMLExportCSSCommand[ pexsNew->hecss ] );
+ UserCommand ( sz );
+ g_free ( sz );
+ }
+
+ /* Sizes */
+ if ( pexsOrig->nPNGSize != pexsNew->nPNGSize ) {
+ char *sz = g_strdup_printf ( "set export png size %d", pexsNew->nPNGSize );
+ UserCommand ( sz );
+ g_free ( sz );
+ }
+ if ( pexsOrig->nHtmlSize != pexsNew->nHtmlSize ) {
+ char *sz = g_strdup_printf ( "set export html size %d", pexsNew->nHtmlSize );
+ UserCommand ( sz );
+ g_free ( sz );
+ }
+}
+
+
+static void
+ExportOK ( GtkWidget *pw, exportwidget *pew ) {
+
+ exportsetup *pexs = pew->pexs;
+ exportsetup exsNew;
+
+ /* get new settings */
+
+ ExportGetValues ( pew, &exsNew );
+
+ /* set new values */
+
+ SetExportCommands ( pexs, &exsNew );
+ free ( exsNew.szHTMLPictureURL ),
+
+ gtk_widget_destroy( gtk_widget_get_toplevel( pw ) );
+
+}
+
+static void
+ExportSet ( exportwidget *pew ) {
+
+ exportsetup *pexs = pew->pexs;
+ unsigned int i;
+
+ /* include */
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 0 ] ),
+ pexs->fIncludeAnnotation );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 1 ] ),
+ pexs->fIncludeAnalysis );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 2 ] ),
+ pexs->fIncludeStatistics );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 3 ] ),
+ pexs->fIncludeLegend );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwInclude[ 4 ] ),
+ pexs->fIncludeMatchInfo );
+
+ /* FIXME: legend is not implemented */
+
+ gtk_widget_set_sensitive( GTK_WIDGET( pew->apwInclude[ 3 ] ), FALSE );
+
+ /* board */
+
+ gtk_adjustment_set_value ( pew->padjDisplayBoard, pexs->fDisplayBoard );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwSide[ 0 ] ),
+ pexs->fSide & 1 );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->apwSide[ 1 ] ),
+ pexs->fSide & 2 );
+
+ /* moves */
+
+ gtk_adjustment_set_value ( pew->padjMoves, pexs->nMoves );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->pwMovesDetailProb ),
+ pexs->fMovesDetailProb );
+ for ( i = 0; i < 2; i++ )
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(
+ pew->apwMovesParameters[ i ] ),
+ pexs->afMovesParameters[ i ] );
+
+ for ( i = 0; i < NUM_MOVES ; i++ )
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(
+ pew->apwMovesDisplay[ i ] ),
+ pexs->afMovesDisplay[ i ] );
+
+ /* cube */
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( pew->pwCubeDetailProb ),
+ pexs->fCubeDetailProb );
+
+ for ( i = 0; i < 2; i++ )
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(
+ pew->apwCubeParameters[ i ] ),
+ pexs->afCubeParameters[ i ] );
+
+ for ( i = 0; i < NUM_CUBES ; i++ ) {
+ if (aszCubeDisplay[i]) {
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(
+ pew->apwCubeDisplay[ i ] ),
+ pexs->afCubeDisplay[ i ] );
+ }
+ }
+
+ /* html */
+
+ if ( pexs->szHTMLPictureURL )
+ gtk_entry_set_text( GTK_ENTRY( pew->pwHTMLPictureURL ),
+ pexs->szHTMLPictureURL );
+
+ gtk_option_menu_set_history ( GTK_OPTION_MENU (pew->pwHTMLType),
+ pexs->het );
+
+ gtk_option_menu_set_history ( GTK_OPTION_MENU (pew->pwHTMLCSS),
+ pexs->hecss );
+
+ /* Sizes */
+ gtk_adjustment_set_value ( GTK_ADJUSTMENT ( pew->adjPNGSize ),
+ pexs->nPNGSize );
+ gtk_adjustment_set_value ( GTK_ADJUSTMENT ( pew->adjHtmlSize ),
+ pexs->nHtmlSize );
+}
+
+
+static void
+SizeChanged ( GtkAdjustment *adj, GtkWidget *pwSize ) {
+
+ int n = (int) adj->value;
+
+ char *sz = g_strdup_printf ( _("%dx%d pixels"),
+ n * BOARD_WIDTH, n * BOARD_HEIGHT );
+
+ gtk_label_set_text ( GTK_LABEL ( pwSize ), sz );
+
+ g_free ( sz );
+
+}
+
+
+extern void
+GTKShowExport ( exportsetup *pexs ) {
+
+ GtkWidget *pwDialog;
+
+ GtkWidget *pwVBox;
+ GtkWidget *pwFrame;
+ GtkWidget *pwTable;
+ GtkWidget *pwTableX;
+ GtkWidget *pwType_menu;
+ GtkWidget *glade_menuitem;
+ GtkWidget *pwHBox;
+ GtkWidget *pwHScale;
+
+ GtkWidget *pw;
+
+ unsigned int i;
+
+ exportwidget *pew;
+
+ pew = (exportwidget*)malloc ( sizeof ( exportwidget ) );
+
+ pew->pexs = pexs;
+
+ /* create dialog */
+
+ pwDialog = GTKCreateDialog ( _("GNU Backgammon - Export Settings"), DT_QUESTION,
+ NULL, DIALOG_FLAG_MODAL, G_CALLBACK ( ExportOK ), pew );
+
+ pwTable = gtk_table_new ( 3, 2, FALSE );
+ gtk_container_add ( GTK_CONTAINER ( DialogArea ( pwDialog, DA_MAIN ) ),
+ pwTable );
+
+ /* include stuff */
+
+ pwFrame = gtk_frame_new ( _("Include") );
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 0, 1, 0, 1,
+ GTK_FILL,
+ GTK_FILL,
+ 8, 0 );
+
+
+ pwVBox = gtk_vbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwVBox );
+
+ for ( i = 0; i < NUM_INCLUDE ; i++ ) {
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwInclude[ i ] =
+ gtk_check_button_new_with_label (
+ gettext ( aszInclude[ i ] ) ),
+ TRUE, TRUE, 0 );
+ }
+
+ /* show stuff */
+
+ pwFrame = gtk_frame_new ( _("Board") );
+
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 1, 2, 0, 1,
+ GTK_FILL,
+ GTK_FILL,
+ 2, 2 );
+
+
+
+ pwTableX = gtk_table_new ( 2, 3, FALSE );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwTableX );
+
+ gtk_table_attach ( GTK_TABLE ( pwTableX ),
+ pw = gtk_label_new ( _("Board") ),
+ 0, 1, 0, 1,
+ GTK_FILL,
+ GTK_FILL,
+ 4, 0 );
+ gtk_misc_set_alignment( GTK_MISC( pw ), 0, 0.5 );
+
+ pw = gtk_hbox_new ( FALSE, 0 );
+
+ pew->padjDisplayBoard =
+ GTK_ADJUSTMENT( gtk_adjustment_new( 0, 0, 1000,
+ 1, 1, 0 ) );
+
+ gtk_box_pack_start ( GTK_BOX ( pw ),
+ gtk_spin_button_new( pew->padjDisplayBoard, 1, 0 ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pw ),
+ gtk_label_new ( _("move(s) between board shown") ),
+ TRUE, TRUE, 0 );
+
+ gtk_table_attach ( GTK_TABLE ( pwTableX ),
+ pw,
+ 1, 2, 0, 1,
+ GTK_FILL,
+ GTK_FILL,
+ 4, 0 );
+
+
+ gtk_table_attach ( GTK_TABLE ( pwTableX ),
+ pw = gtk_label_new ( _("Players") ),
+ 0, 1, 1, 2,
+ GTK_FILL,
+ GTK_FILL,
+ 4, 0 );
+ gtk_misc_set_alignment( GTK_MISC( pw ), 0, 0.5 );
+
+ gtk_table_attach ( GTK_TABLE ( pwTableX ),
+ pew->apwSide[ 0 ] =
+ gtk_check_button_new_with_label ( ap[ 0 ].szName ),
+ 1, 2, 1, 2,
+ GTK_FILL,
+ GTK_FILL,
+ 4, 0 );
+
+ gtk_table_attach ( GTK_TABLE ( pwTableX ),
+ pew->apwSide[ 1 ] =
+ gtk_check_button_new_with_label ( ap[ 1 ].szName ),
+ 1, 2, 2, 3,
+ GTK_FILL,
+ GTK_FILL,
+ 4, 0 );
+
+ /* moves */
+
+ pwFrame = gtk_frame_new ( _("Output move analysis") );
+
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 0, 1, 1, 2,
+ GTK_FILL,
+ GTK_FILL,
+ 2, 2 );
+
+ pwVBox = gtk_vbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwVBox );
+
+
+ pw = gtk_hbox_new ( FALSE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ), pw, TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pw ), gtk_label_new ( _("Show at most") ),
+ TRUE, TRUE, 4 );
+
+ pew->padjMoves =
+ GTK_ADJUSTMENT( gtk_adjustment_new( 0, 0, 1000,
+ 1, 1, 0 ) );
+
+ gtk_box_pack_start ( GTK_BOX ( pw ),
+ gtk_spin_button_new( pew->padjMoves, 1, 0 ),
+ TRUE, TRUE, 4 );
+
+ gtk_box_pack_start ( GTK_BOX ( pw ),
+ gtk_label_new ( _("move(s)") ),
+ TRUE, TRUE, 4 );
+
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->pwMovesDetailProb =
+ gtk_check_button_new_with_label ( _("Show detailed "
+ "probabilities") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwMovesParameters[ 0 ] =
+ gtk_check_button_new_with_label ( _("Show evaluation parameters") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwMovesParameters[ 1 ] =
+ gtk_check_button_new_with_label ( _("Show rollout parameters") ),
+ TRUE, TRUE, 0 );
+
+
+ for ( i = 0; i < NUM_MOVES ; i++ )
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwMovesDisplay[ i ] =
+ gtk_check_button_new_with_label (
+ gettext ( aszMovesDisplay[ i ] ) ),
+ TRUE, TRUE, 0 );
+
+ /* cube */
+
+ pwFrame = gtk_frame_new ( _("Output cube decision analysis") );
+
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 1, 2, 1, 2,
+ GTK_FILL,
+ GTK_FILL,
+ 2, 2 );
+
+ pwVBox = gtk_vbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwVBox );
+
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->pwCubeDetailProb =
+ gtk_check_button_new_with_label ( _("Show detailed "
+ "probabilities") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwCubeParameters[ 0 ] =
+ gtk_check_button_new_with_label ( _("Show evaluation "
+ "parameters") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwCubeParameters[ 1 ] =
+ gtk_check_button_new_with_label ( _("Show rollout "
+ "parameters") ),
+ TRUE, TRUE, 0 );
+
+
+ for ( i = 0; i < NUM_CUBES ; i++ ) {
+ if (aszCubeDisplay[i]) {
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->apwCubeDisplay[ i ] =
+ gtk_check_button_new_with_label (
+ gettext ( aszCubeDisplay[ i ] ) ),
+ TRUE, TRUE, 0 );
+ }
+ }
+
+
+ /* html */
+
+ pwFrame = gtk_frame_new ( _("HTML export options") );
+
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 0, 1, 2, 3,
+ GTK_FILL,
+ GTK_FILL,
+ 2, 2 );
+
+ pwVBox = gtk_vbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwVBox );
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwVBox ), 4 );
+
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pw = gtk_label_new ( _("URL to pictures") ),
+ TRUE, TRUE, 0 );
+ gtk_misc_set_alignment( GTK_MISC( pw ), 0, 0.5 );
+
+ gtk_box_pack_start ( GTK_BOX ( pwVBox ),
+ pew->pwHTMLPictureURL =
+ gtk_entry_new (),
+ TRUE, TRUE, 0 );
+
+ pwHBox = gtk_hbox_new ( FALSE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( pwHBox ),
+ gtk_label_new ( _("HTML board type:") ),
+ TRUE, TRUE, 0 );
+
+ pew->pwHTMLType = gtk_option_menu_new ();
+ gtk_box_pack_start (GTK_BOX (pwHBox), pew->pwHTMLType, FALSE, FALSE, 0);
+ pwType_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("GNU Backgammon"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("BBS"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("fibs2html"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (pew->pwHTMLType), pwType_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (pew->pwHTMLType), 0);
+
+ gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4);
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0);
+
+ /* HTML CSS */
+
+ pwHBox = gtk_hbox_new ( FALSE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( pwHBox ),
+ gtk_label_new ( _("CSS Style sheet:") ),
+ TRUE, TRUE, 0 );
+
+ pew->pwHTMLCSS = gtk_option_menu_new ();
+ gtk_box_pack_start (GTK_BOX (pwHBox), pew->pwHTMLCSS, FALSE, FALSE, 0);
+ pwType_menu = gtk_menu_new ();
+ glade_menuitem = gtk_menu_item_new_with_label (_("In <head>"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("Inline (in tags)"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ glade_menuitem = gtk_menu_item_new_with_label (_("External file"));
+ gtk_widget_show (glade_menuitem);
+ gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (pew->pwHTMLCSS), pwType_menu);
+ gtk_option_menu_set_history (GTK_OPTION_MENU (pew->pwHTMLCSS), 0);
+
+ gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4);
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0);
+
+ /* Sizes */
+
+ pwFrame = gtk_frame_new ( _("Export sizes") );
+
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwFrame ), 8 );
+ gtk_table_attach ( GTK_TABLE ( pwTable ), pwFrame,
+ 1, 2, 2, 3,
+ GTK_FILL,
+ GTK_FILL,
+ 2, 2 );
+
+ pwVBox = gtk_vbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( pwFrame ), pwVBox );
+ gtk_container_set_border_width ( GTK_CONTAINER ( pwVBox ), 4 );
+
+ /* Png size */
+ pwHBox = gtk_hbox_new ( FALSE, 0 );
+ gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4);
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0);
+
+ gtk_box_pack_start ( GTK_BOX ( pwHBox ),
+ gtk_label_new ( _("Size of PNG images:") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start( GTK_BOX ( pwHBox ),
+ pew->pwPNGSize = gtk_label_new ( "" ),
+ TRUE, TRUE, 0 );
+
+ pew->adjPNGSize = GTK_ADJUSTMENT ( gtk_adjustment_new ( 1, 1, 20, 1, 5, 0 ) );
+ pwHScale = gtk_hscale_new ( pew->adjPNGSize );
+ gtk_scale_set_digits( GTK_SCALE( pwHScale ), 0 );
+
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHScale, FALSE, FALSE, 0);
+
+ g_signal_connect( G_OBJECT ( pew->adjPNGSize ), "value-changed",
+ G_CALLBACK ( SizeChanged ), pew->pwPNGSize );
+
+ /* Html size */
+ pwHBox = gtk_hbox_new ( FALSE, 0 );
+ gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4);
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0);
+
+ gtk_box_pack_start ( GTK_BOX ( pwHBox ),
+ gtk_label_new ( _("Size of Html images:") ),
+ TRUE, TRUE, 0 );
+
+ gtk_box_pack_start( GTK_BOX ( pwHBox ),
+ pew->pwHtmlSize = gtk_label_new ( "" ),
+ TRUE, TRUE, 0 );
+
+ pew->adjHtmlSize = GTK_ADJUSTMENT ( gtk_adjustment_new ( 1, 1, 20, 1, 5, 0 ) );
+ pwHScale = gtk_hscale_new ( pew->adjHtmlSize );
+ gtk_scale_set_digits( GTK_SCALE( pwHScale ), 0 );
+ gtk_box_pack_start (GTK_BOX (pwVBox), pwHScale, FALSE, FALSE, 0);
+
+ g_signal_connect( G_OBJECT ( pew->adjHtmlSize ), "value-changed",
+ G_CALLBACK ( SizeChanged ), pew->pwHtmlSize );
+
+ /* show dialog */
+
+ gtk_widget_show_all( pwDialog );
+ ExportSet ( pew );
+
+ GTKDisallowStdin();
+ gtk_main();
+ GTKAllowStdin();
+}