2
我嘗試運行GNOME JavaScript application tutorial in Anjuta:Anjuta的配置GNOME的Javascript應用程序開發
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Gda = imports.gi.Gda;
const Lang = imports.lang;
function Demo() {
this._init();
}
Demo.prototype = {
_init: function() {
this.setupWindow();
this.setupDatabase();
this.selectData();
},
setupWindow: function() {
this.window = new Gtk.Window ({title: "Data Access Demo", height_request: 350});
this.window.connect ("delete-event", function() {
Gtk.main_quit();
return true;
});
// main box
var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});
this.window.add (main_box);
// first label
var info1 = new Gtk.Label ({label: "<b>Insert a record</b>", xalign: 0, use_markup: true});
main_box.pack_start (info1, false, false, 5);
// "insert a record" horizontal box
var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});
main_box.pack_start (insert_box, false, false, 5);
// ID field
insert_box.pack_start (new Gtk.Label ({label: "ID:"}), false, false, 5);
this.id_entry = new Gtk.Entry();
insert_box.pack_start (this.id_entry, false, false, 5);
// Name field
insert_box.pack_start (new Gtk.Label ({label: "Name:"}), false, false, 5);
this.name_entry = new Gtk.Entry ({activates_default: true});
insert_box.pack_start (this.name_entry, true, true, 5);
// Insert button
var insert_button = new Gtk.Button ({label: "Insert", can_default: true});
insert_button.connect ("clicked", Lang.bind (this, this._insertClicked));
insert_box.pack_start (insert_button, false, false, 5);
insert_button.grab_default();
// Browse textview
var info2 = new Gtk.Label ({label: "<b>Browse the table</b>", xalign: 0, use_markup: true});
main_box.pack_start (info2, false, false, 5);
this.text = new Gtk.TextView ({editable: false});
var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});
sw.add (this.text);
main_box.pack_start (sw, true, true, 5);
this.count_label = new Gtk.Label ({label: "", xalign: 0, use_markup: true});
main_box.pack_start (this.count_label, false, false, 0);
this.window.show_all();
},
setupDatabase: function() {
this.connection = new Gda.Connection ({provider: Gda.Config.get_provider("SQLite"),
cnc_string:"DB_DIR=" + GLib.get_home_dir() + ";DB_NAME=gnome_demo"});
this.connection.open();
try {
var dm = Gda.execute_select_command (this.connection, "select * from demo");
} catch (e) {
Gda.execute_non_select_command (this.connection, "create table demo (id integer, name varchar(100))");
}
},
selectData: function() {
var dm = Gda.execute_select_command (this.connection, "select * from demo order by 1, 2");
var iter = dm.create_iter();
var text = "";
while (iter.move_next()) {
var id_field = Gda.value_stringify (iter.get_value_at (0));
var name_field = Gda.value_stringify (iter.get_value_at (1));
text += id_field + "\t=>\t" + name_field + '\n';
}
this.text.buffer.text = text;
this.count_label.label = "<i>" + dm.get_n_rows() + " record(s)</i>";
},
_showError: function (msg) {
var dialog = new Gtk.MessageDialog ({message_type: Gtk.MessageType.ERROR,
buttons: Gtk.ButtonsType.CLOSE,
text: msg,
transient_for: this.window,
modal: true,
destroy_with_parent: true});
dialog.run();
dialog.destroy();
},
_insertClicked: function() {
if (!this._validateFields())
return;
// Gda.execute_non_select_command (this.connection, "insert into demo values ('" + this.id_entry.text + "', '" + this.name_entry.text + "')");
var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});
b.set_table ("demo");
b.add_field_value_as_gvalue ("id", this.id_entry.text);
b.add_field_value_as_gvalue ("name", this.name_entry.text);
var stmt = b.get_statement();
this.connection.statement_execute_non_select (stmt, null);
this._clearFields();
this.selectData();
},
_validateFields: function() {
if (this.id_entry.text == "" || this.name_entry.text == "") {
this._showError ("All fields are mandatory");
return false;
}
if (isNaN (parseInt (this.id_entry.text))) {
this._showError ("Enter a number");
this.id_entry.grab_focus();
return false;
}
return true;
},
_clearFields: function() {
this.id_entry.text = "";
this.name_entry.text = "";
this.id_entry.grab_focus();
}
}
Gtk.init (null, null);
var demo = new Demo();
Gtk.main();
,但我得到以下錯誤:
EXECUTING:
/home/buzz-dee/flextime-tracker/src/main.js
----------------------------------------------
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 1: const: Kommando nicht gefunden.
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 2: const: Kommando nicht gefunden.
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 3: const: Kommando nicht gefunden.
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 4: const: Kommando nicht gefunden.
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 7: Syntaxfehler beim unerwarteten Wort `;'
/home/buzz-dee/flextime-tracker/src/main.js: Zeile 7: ` this._init();'
----------------------------------------------
Program exited with errcode (2)
Press the Enter key to close this terminal ...
在Anjuta的我對JavaScript的以下設置環境:.:
我正在使用AntergOS(Arch Linux)。也許Gir和Gjs路徑是不正確的,因爲我得到一個錯誤約:const: Command not found
?
上述錯誤可能是什麼問題?
我發現Anjuta的Java項目相關的問題:How to import an existing Java project in the Anjuta IDE?