gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnugo-devel] view.pike tweak


From: Arend Bayer
Subject: [gnugo-devel] view.pike tweak
Date: Mon, 23 Aug 2004 01:05:24 +0200 (CEST)


- support for starting sgf viewer directly from view.pike

This allows to automatically start an sgf viewer (specified in the
"cgoban -edit %s" format) when doing reading analysis. The .sgf-file names 
are now appended with the name of the engine to identify them.

Arend

Index: regression/view.pike
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/view.pike,v
retrieving revision 1.10
diff -u -p -r1.10 view.pike
--- regression/view.pike        6 Jun 2004 11:56:15 -0000       1.10
+++ regression/view.pike        22 Aug 2004 23:02:38 -0000
@@ -518,6 +518,7 @@ class RegressionViewer
     mapping(string:array(string)) worms = ([]);
     mapping(string:array(string)) dragons = ([]);
 
+    string name;
     string result;
     string testcase_command;
     array(string) fulltest;
@@ -526,12 +527,14 @@ class RegressionViewer
 
     static void create(SimpleGtp engine_,
                       array(string) fulltest_, string testcase_command_,
-                      function callback, Controller parent_)
+                      function callback, string name_,
+                      Controller parent_)
     {
        engine = engine_;
        parent = parent_;
        fulltest = fulltest_;
         testcase_command = testcase_command_;
+       name = name_;
 
        load_testcase();
        werror("%s\n", send_command("showboard"));
@@ -1124,11 +1127,13 @@ class RegressionViewer
     }
 
     void do_reading(string reset_counter, string get_counter,
-                   string sgffilename,
+                   string sgffilename, string sgf_viewer_cmd,
                    string first_command, string second_command)
     {
        string result;
        send_command("clear_cache");
+        if (sizeof(parent->viewers) > 1)
+            sgffilename += "." + name;
        if (sgffilename != "")
            send_command("start_sgftrace");
 
@@ -1146,6 +1151,9 @@ class RegressionViewer
        }
        if (sgffilename != "")
            send_command("finish_sgftrace " + sgffilename);
+        if (sgf_viewer_cmd != "")
+            Process.create_process(sprintf(sgf_viewer_cmd, sgffilename)
+                                   / " ");
        clist->columns_autosize();
        parent->set_title(this_object(), "Reading result");
      }
@@ -1206,8 +1214,9 @@ class Controller
     GTK.RadioButton owl_reading_button;
     GTK.RadioButton connection_reading_button;
     GTK.RadioButton semeai_reading_button;
-    GTK.CheckButton sgf_traces_button;
-    GTK.Entry sgf_filename_entry;
+    GTK.CheckButton sgf_traces_button, sgf_viewer_button;
+    GTK.Entry sgf_filename_entry, sgf_viewer_entry;
+    GTK.Table sgf_stuff;
     GTK.Button new_engine_button;
     GTK.Entry engine_path_entry;
     GTK.Entry engine_name_entry;
@@ -1400,6 +1409,18 @@ class Controller
        sgf_filename_entry->set_text("vars.sgf");
        sgf_filename_entry->set_editable(1);
 
+       sgf_viewer_button = GTK.CheckButton("start sgf viewer as");
+        sgf_viewer_entry = GTK.Entry()->set_text("cgoban -edit %s")
+                           ->set_editable(1);
+        sgf_viewer_button->signal_connect("toggled", 
sgf_viewer_button_toggled);
+        sgf_traces_button->signal_connect("toggled", 
sgf_traces_button_toggled);
+        sgf_stuff = GTK.Table(2, 2, 0)
+                    ->attach_defaults(sgf_traces_button, 0, 1, 0, 1)
+                    ->attach_defaults(sgf_filename_entry, 1, 2, 0, 1)
+                    ->attach_defaults(sgf_viewer_button, 0, 1, 1, 2)
+                    ->attach_defaults(sgf_viewer_entry, 1, 2, 1, 2);
+
+
        engine_path_entry = GTK.Entry();
        engine_path_entry->set_text("../interface/gnugo");
        engine_path_entry->set_editable(1);
@@ -1473,11 +1494,7 @@ class Controller
               ->pack_start(connection_reading_button, 0, 0, 0)
               ->pack_start(semeai_reading_button, 0, 0, 0)
               ->pack_start(GTK.Label(""), 0, 0, 0)
-              ->pack_start(GTK.Hbox(0, 0)
-                           ->pack_start(sgf_traces_button,
-                                        0, 0, 0)
-                           ->pack_start(sgf_filename_entry,
-                                        0, 0, 0), 0, 0, 0));
+              ->pack_start(sgf_stuff, 0, 0, 0));
        controller_notebook->append_page(reading_page, GTK.Label("reading"));
 
        GTK.Widget engines_page
@@ -1504,8 +1521,8 @@ class Controller
                                               complete_testcase,
                                               testcase_command,
                                               button_pressed_on_a_board,
-                                              this_object()),
-                             "Default engine");
+                                              "Default engine",
+                                              this_object()));
        add_markup(controller_notebook->get_current_page());
     }
 
@@ -1516,13 +1533,12 @@ class Controller
        if (!new_engine)
            werror("Failed to start new engine.\n");
        else {
-           add_regression_viewer(RegressionViewer(new_engine,
-                                                  full_testcase,
-                                                  testcase_command,
-                                                  button_pressed_on_a_board,
-                                                  this_object()),
-                                 (single_window_mode
-                                  ? engine_name_entry->get_text() : ""));
+           add_regression_viewer(
+               RegressionViewer(new_engine, full_testcase, testcase_command,
+                                button_pressed_on_a_board,
+                                (single_window_mode ?
+                                 engine_name_entry->get_text() : ""),
+                                this_object()));
        }
 
        if (single_window_mode) {
@@ -1531,7 +1547,7 @@ class Controller
        }
     }
 
-    static void add_regression_viewer(RegressionViewer viewer, string name)
+    static void add_regression_viewer(RegressionViewer viewer)
     {
        viewers += ({ viewer });
        if (single_window_mode) {
@@ -1551,7 +1567,7 @@ class Controller
                ->append_page((GTK.Alignment(0.0, 0.5, 0.0, 0.0)
                               ->set_border_width(4)
                               ->add(GTK.Label(viewer->engine->command_line))),
-                             GTK.Label(name));
+                             GTK.Label(viewer->name));
            selector_notebook->show_all();
            selector_notebook->set_page(sizeof(viewers) - 1);
        }
@@ -1650,12 +1666,21 @@ class Controller
        case 4:
            // Reading.
            string sgffilename;
+           string sgf_viewer_cmd;
            string reset_counter, get_counter;
            
-           if (sgf_traces_button->get_active())
+            if (sgf_viewer_button->get_active()) {
+                sgffilename = sgf_filename_entry->get_text();
+                sgf_viewer_cmd = sgf_viewer_entry->get_text();
+            }
+           else if (sgf_traces_button->get_active()) {
                sgffilename = sgf_filename_entry->get_text();
-           else
+                sgf_viewer_cmd = "";
+           }
+           else {
                sgffilename = "";
+                sgf_viewer_cmd = "";
+           }
 
            if (first_semeai_or_connection_vertex == ""
                || tactical_reading_button->get_active()
@@ -1680,7 +1705,8 @@ class Controller
                    get_counter = "get_owl_node_counter";
                }
                
-               viewers->do_reading(reset_counter, get_counter, sgffilename,
+               viewers->do_reading(reset_counter, get_counter,
+                                   sgffilename, sgf_viewer_cmd,
                                    prefix + "attack " + vertex,
                                    prefix + "defend " + vertex);
            }
@@ -1703,7 +1729,8 @@ class Controller
                        c2 = "dis" + c1;
                        viewers->do_reading("reset_connection_node_counter",
                                            "get_connection_node_counter",
-                                           sgffilename, c1, c2);
+                                           sgffilename, sgf_viewer_cmd,
+                                           c1, c2);
                    }
                    else
                    {
@@ -1717,7 +1744,8 @@ class Controller
                        // exist yet.
                        viewers->do_reading("reset_owl_node_counter",
                                            "get_owl_node_counter",
-                                           sgffilename, c1, c2);
+                                           sgffilename, sgf_viewer_cmd,
+                                           c1, c2);
                    }
                    first_semeai_or_connection_vertex = "";
                }
@@ -1790,6 +1818,17 @@ class Controller
        return 0;
     }
 
+    void sgf_traces_button_toggled()
+    {
+        if (!sgf_traces_button->get_active())
+            sgf_viewer_button->set_active(0);
+    }
+
+    void sgf_viewer_button_toggled()
+    {
+        if (sgf_viewer_button->get_active())
+            sgf_traces_button->set_active(1);
+    }
     
     void debug_callback(mixed ... args)
     {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]