[seed] ClutterPad: Mostly fully functional under GtkBuilder UI.
- From: Tim Horton <hortont src gnome org>
- To: svn-commits-list gnome org
- Subject: [seed] ClutterPad: Mostly fully functional under GtkBuilder UI.
- Date: Wed, 13 May 2009 10:19:58 -0400 (EDT)
commit e892ca33c18d1a5da431f6c96857031f7c6eb1e8
Author: Tim Horton <hortont svn gnome org>
Date: Wed May 13 10:18:54 2009 -0400
ClutterPad: Mostly fully functional under GtkBuilder UI.
---
examples/clutter-pad/clutter-pad.ui | 9 +-
examples/clutter-pad/main.js | 258 +++++++++++------------------------
2 files changed, 91 insertions(+), 176 deletions(-)
diff --git a/examples/clutter-pad/clutter-pad.ui b/examples/clutter-pad/clutter-pad.ui
index ad19ca5..ffb1312 100644
--- a/examples/clutter-pad/clutter-pad.ui
+++ b/examples/clutter-pad/clutter-pad.ui
@@ -59,7 +59,8 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="example_chooser">
+ <object class="GtkComboBox" id="example_selector">
+ <property name="model">liststore1</property>
<property name="visible">True</property>
</object>
<packing>
@@ -130,4 +131,10 @@
</object>
</child>
</object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <!-- column-name str -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
</interface>
diff --git a/examples/clutter-pad/main.js b/examples/clutter-pad/main.js
index b3961cb..9793f23 100755
--- a/examples/clutter-pad/main.js
+++ b/examples/clutter-pad/main.js
@@ -7,115 +7,32 @@ Clutter = imports.gi.Clutter;
Gtk = imports.gi.Gtk;
GtkSource = imports.gi.GtkSource;
GtkClutter = imports.gi.GtkClutter;
-GtkSource = imports.gi.GtkSource;
GLib = imports.gi.GLib;
sandbox = imports.sandbox;
Gio = imports.gi.Gio;
+GObject = imports.gi.GObject;
Gtk.init(Seed.argv);
GtkClutter.init(Seed.argv);
-var current_filename = "";
-var stage_manager = Clutter.StageManager.get_default();
-
-var gb = new Gtk.Builder();
-gb.add_from_file("clutter-pad.ui");
-
-var window = gb.get_object("window");
-var clutter = gb.get_object("clutter");
-var stage = clutter.get_stage();
-
-function new_file()
-{
- Seed.print("asdf");
-}
-
-/*(GtkBuilder *builder,
- GObject *object,
- const gchar *signal_name,
- const gchar *handler_name,
- GObject *connect_object,
- GConnectFlags flags,
- gpointer user_data);*/
-
-function connect_signal(builder, object, signal, handler, connect_obj, flags)
-{
- Seed.print(signal);
-}
-
-window.resize(800, 600);
-window.show_all();
-
-//gb.connect_signals_full(connect_signal);
-
-Gtk.main();
-
-/*
-function evaluate(button)
+function load_file(filename)
{
- var children = stage.get_children();
-
- for(var id in children)
- stage.remove_actor(children[id]);
+ new_file();
- try
- {
- error_buf.text = '';
- var a = new Gtk.TextIter(); var b = new Gtk.TextIter();
- source_buf.get_selection_bounds(a, b);
- var slice = source_buf.get_slice(a, b);
- if (slice == '')
- {
- context.destroy();
- context = new sandbox.Context();
- context.add_globals();
- context.eval(source_buf.text)
- }
- else
- {
- context.eval(slice)
- }
- }
- catch (e)
- {
- error_buf.text = e.message;
- }
-};
-
-function populate_example_selector()
-{
- file = Gio.file_new_for_path("examples");
- enumerator = file.enumerate_children("standard::name");
-
- while((child = enumerator.next_file()))
- {
- var fname = child.get_name();
- if(fname.match(/\.js$/))
- example_selector.append_text(child.get_name());
- }
+ current_filename = filename;
+ window.title = "ClutterPad - " + filename;
+
+ file = Gio.file_new_for_path(filename);
+ source_buf.text = file.read().get_contents();
+
+ execute_file();
}
function new_file()
{
+ window.title = "ClutterPad";
current_filename = "";
-
source_buf.text = "GObject = imports.gi.GObject;\nClutter = imports.gi.Clutter;\nstage = Clutter.Stage.get_default();\n";
-
- // TODO: cleanse the stage (or make a new one!) each time around...
- // really should be done in evaluate, though
-
- //if(gtkstage)
- //pane.remove(gtkstage);
-
- //gtkstage = new GtkClutter.Embed();
- //stage = gtkstage.get_stage();
-
- pane.add1(gtkstage);
-
- //stage_manager.set_default_stage(stage);
-
- //gtkstage.show_all();
- //stage.show_all();
}
function open_file()
@@ -125,8 +42,8 @@ function open_file()
file_filter.add_mime_type("text/javascript");
file_chooser.set_filter(file_filter);
- file_chooser.add_button("Cancel", Gtk.ResponseType.CANCEL);
- file_chooser.add_button("Open", Gtk.ResponseType.ACCEPT);
+ file_chooser.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
+ file_chooser.add_button(Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT);
file_chooser.set_action(Gtk.FileChooserAction.OPEN);
if(file_chooser.run() == Gtk.ResponseType.ACCEPT)
@@ -137,19 +54,6 @@ function open_file()
file_chooser.destroy();
}
-function load_file(filename)
-{
- new_file();
-
- current_filename = filename;
- window.title = "ClutterPad - " + filename;
-
- file = Gio.file_new_for_path(filename);
- source_buf.text = file.read().get_contents();
-
- evaluate();
-}
-
function save_file(filename)
{
if(current_filename == "")
@@ -159,8 +63,8 @@ function save_file(filename)
file_filter.add_mime_type("text/javascript");
file_chooser.set_filter(file_filter);
- file_chooser.add_button("Cancel", Gtk.ResponseType.CANCEL);
- file_chooser.add_button("Save", Gtk.ResponseType.ACCEPT);
+ file_chooser.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
+ file_chooser.add_button(Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT);
file_chooser.set_action(Gtk.FileChooserAction.SAVE);
if(file_chooser.run() == Gtk.ResponseType.ACCEPT)
@@ -185,87 +89,91 @@ function save_file(filename)
}
}
+function populate_example_selector(selector)
+{
+ // Since we're using GtkBuilder, we can't make a Gtk.ComboBox.text. Instead,
+ // we'll construct the cell renderer here, once, and use that.
+ var cell = new Gtk.CellRendererText();
+ selector.pack_start(cell, true);
+ selector.add_attribute(cell, "text", 0);
+
+ file = Gio.file_new_for_path("examples");
+ enumerator = file.enumerate_children("standard::name");
+
+ while((child = enumerator.next_file()))
+ {
+ var fname = child.get_name();
+ if(fname.match(/\.js$/))
+ selector.append_text(child.get_name());
+ }
+}
+
function select_example(selector, ud)
{
load_file("examples/" + selector.get_active_text());
}
-var window = new Gtk.Window({title:"ClutterPad"});
-window.signal.destroy.connect(function(o) {Gtk.main_quit()});
-var vbox = new Gtk.VBox();
-
-var gtkstage = new GtkClutter.Embed();
-var stage = gtkstage.get_stage();
-
-stage_manager.set_default_stage(stage);
+function execute_file(button)
+{
+ var children = stage.get_children();
+
+ for(var id in children)
+ stage.remove_actor(children[id]);
-var right = new Gtk.VBox();
-
-var toolbar = new Gtk.HBox();
-var new_button = new Gtk.ToolButton({stock_id:"gtk-new"});
-var open_button = new Gtk.ToolButton({stock_id:"gtk-open"});
-var save_button = new Gtk.ToolButton({stock_id:"gtk-save"});
-var example_selector = new Gtk.ComboBox.text();
-var run_button = new Gtk.ToolButton({stock_id:"gtk-execute"});
-
-new_button.signal.clicked.connect(new_file);
-open_button.signal.clicked.connect(open_file);
-save_button.signal.clicked.connect(save_file);
-example_selector.signal.changed.connect(select_example);
-run_button.signal.clicked.connect(evaluate);
-
-toolbar.pack_start(new_button);
-toolbar.pack_start(open_button);
-toolbar.pack_start(save_button);
-toolbar.pack_start(example_selector, true, true);
-toolbar.pack_start(run_button);
-
-populate_example_selector();
+ try
+ {
+ error_buf.text = '';
+ var a = new Gtk.TextIter(); var b = new Gtk.TextIter();
+ source_buf.get_selection_bounds(a, b);
+ var slice = source_buf.get_slice(a, b);
+ if (slice == '')
+ {
+ context.destroy();
+ context = new sandbox.Context();
+ context.add_globals();
+ context.eval(source_buf.text)
+ }
+ else
+ {
+ context.eval(slice)
+ }
+ }
+ catch (e)
+ {
+ error_buf.text = e.message;
+ }
+};
+var current_filename = "";
+var stage_manager = Clutter.StageManager.get_default();
var source_lang_mgr = new GtkSource.SourceLanguageManager();
var js_lang = source_lang_mgr.get_language("js");
-
-var source_buf = new GtkSource.SourceBuffer({language: js_lang});
-var source_view = new GtkSource.SourceView.with_buffer(source_buf);
-
-source_view.set_show_line_numbers(true);
-source_view.set_show_right_margin(true);
-source_view.set_highlight_current_line(true);
-source_view.set_right_margin_position(80);
-
-var scrolled_window_frame = new Gtk.Frame();
-var scrolled_window = new Gtk.ScrolledWindow({vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
- hscrollbar_policy: Gtk.PolicyType.AUTOMATIC});
-scrolled_window.add(source_view);
-scrolled_window_frame.add(scrolled_window);
-
-var error_frame = new Gtk.Frame();
-var error_view = new Gtk.TextView();
-var error_buf = error_view.get_buffer();
-error_view.set_editable(false);
-error_view.set_size_request(null, 100);
-error_frame.add(error_view);
-
-right.pack_start(toolbar);
-right.pack_start(scrolled_window_frame, true, true);
-right.pack_start(error_frame);
-
var context = new sandbox.Context();
context.add_globals();
-var pane = new Gtk.HPaned({position: 400});
+var ui = new Gtk.Builder();
+ui.add_from_file("clutter-pad.ui");
-pane.add1(gtkstage);
-pane.add2(right);
+var window = ui.get_object("window");
+var clutter = ui.get_object("clutter");
+var stage = clutter.get_stage();
+stage_manager.set_default_stage(stage);
-vbox.pack_start(pane, true, true);
+var error_buf = ui.get_object("error_view").get_buffer();
+var source_buf = new GtkSource.SourceBuffer({language: js_lang});
-window.resize(800, 600);
+populate_example_selector(ui.get_object("example_selector"));
-window.add(vbox);
+ui.get_object("new_button").signal.clicked.connect(new_file);
+ui.get_object("open_button").signal.clicked.connect(open_file);
+ui.get_object("save_button").signal.clicked.connect(save_file);
+ui.get_object("example_selector").signal.changed.connect(select_example);
+ui.get_object("execute_button").signal.clicked.connect(execute_file);
-new_file();
+ui.get_object("source_view").set_buffer(source_buf);
+window.resize(800, 600);
window.show_all();
-Gtk.main();*/
+Gtk.main();
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]