2015-05-09 1 views
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 среда .:

Anjuta JavaScript environment settings

Я использую AntergOS (Arch Linux). Возможно, неверны Gir и . Неверные ссылки на Gjs, так как у меня есть сообщение о: const: Command not found?

В чем может быть проблема при вышеуказанной ошибке?

Я нашел родственную задачу для проекта Anjuta Java: How to import an existing Java project in the Anjuta IDE?

ответ

1

Проблема заключалась в том, что:

#!/usr/bin/gjs 

не хватало в первой строке файла main.js.