public Xcls_sourceviewscroll sourceviewscroll;
public Xcls_sourceview sourceview;
public Xcls_buffer buffer;
+ public Xcls_keystate keystate;
public Xcls_search_entry search_entry;
public Xcls_search_results search_results;
public Xcls_nextBtn nextBtn;
// my vars (def)
public Gtk.Widget lastObj;
- public Gtk.CssProvider css;
public Xcls_MainWindow main_window;
- public GtkSource.SearchContext searchcontext;
+ public int last_error_counter;
public int last_search_end;
+ public GtkSource.SearchContext searchcontext;
public JsRender.JsRender file;
// ctor
// my vars (dec)
this.lastObj = null;
+ this.last_error_counter = 0;
this.last_search_end = 0;
this.file = null;
this.el.vexpand = true;
new Xcls_notebook( _this );
this.el.append( _this.notebook.el );
-
- // init method
-
- {
-
- this.css = new Gtk.CssProvider();
-
- this.css.load_from_string(
- "#gtkview-view-layout { background-color: #ccc; }"
- );
-
- Gtk.StyleContext.add_provider_for_display(
- this.el.get_display(),
- this.css,
- Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
- );
-
-
- }
}
// user defined functions
if (file.tree == null) {
return;
}
+ this.last_error_counter = -1;
this.notebook.el.page = 0;// gtk preview
this.file = file;
this.sourceview.loadFile();
+
this.searchcontext = null;
-
-
+ this.last_error_counter = -1;
+ this.updateErrorMarks();
if (this.lastObj != null) {
this.container.el.remove(this.lastObj);
}
}
var xmlstr = JsRender.NodeToGlade.mungeFile( file);
- var builder = new Gtk.Builder.from_string (xmlstr, xmlstr.length);
+ var builder = new Gtk.Builder();
+ try {
+ if (!builder.add_from_string(xmlstr, xmlstr.length)) {
+ return;
+ }
+ } catch(GLib.Error e) {
+ GLib.debug(e.message);
+ return;
+ }
+
+
var obj = (Gtk.Widget) builder.get_object("w"+ file.tree.oid.to_string());
this.container.el.append(obj);
obj.show();
this.createThumb();
- return;/*
- var x = new JsRender.NodeToGtk((Project.Gtk) file.project, file.tree);
- var obj = x.munge() as Gtk.Widget;
- this.lastObj = null;
- if (obj == null) {
- return;
- }
- this.lastObj = obj;
-
- this.container.el.append(obj);
- obj.show();
-
- */
+
}
public void highlightNodeAtLine (int ln) {
}
- public void updateErrorMarks (string category) {
+ public void updateErrorMarks () {
Gtk.TextIter end;
buf.get_bounds (out start, out end);
- buf.remove_source_marks (start, end, category);
+
- GLib.debug("highlight errors");
+ //GLib.debug("highlight errors");
// we should highlight other types of errors..
return;
}
- var ar = this.file.getErrors(category);
- if (ar == null || ar.get_n_items() < 1) {
- GLib.debug("higjlight %s has no errors", category);
+ var ar = this.file.getErrors();
+ if (ar.size < 1) {
+ buf.remove_tag_by_name ("ERR", start, end);
+ buf.remove_tag_by_name ("WARN", start, end);
+ buf.remove_tag_by_name ("DEPR", start, end);
+ buf.remove_source_marks (start, end, "ERR");
+ buf.remove_source_marks (start, end, "WARN");
+ buf.remove_source_marks (start, end, "DEPR");
+ this.last_error_counter = file.error_counter ;
+ //GLib.debug("higjlight has no errors");
return;
}
-
+ if (this.last_error_counter == file.error_counter) {
+ return;
+ }
+
- for (var i = 0; i < ar.get_n_items();i++) {
- var err = (Palete.CompileError) ar.get_item(i);
+ buf.remove_source_marks (start, end, "ERR");
+ buf.remove_source_marks (start, end, "WARN");
+ buf.remove_source_marks (start, end, "DEPR");
+ buf.remove_tag_by_name ("ERR", start, end);
+ buf.remove_tag_by_name ("WARN", start, end);
+ buf.remove_tag_by_name ("DEPR", start, end);
+ foreach(var diag in ar) {
+
Gtk.TextIter iter;
// print("get inter\n");
- var eline = err.line + 1;
- GLib.debug("GOT ERROR on line %d -- converted to %d ",
- err.line ,eline);
-
-
+ var eline = (int)diag.range.start.line ;
+ var eline_to = (int)diag.range.end.line;
if (eline > tlines || eline < 0) {
return;
}
buf.get_iter_at_line( out iter, eline);
+ buf.get_iter_at_line_offset( out start,
+ eline, (int)diag.range.start.character);
+ buf.get_iter_at_line_offset( out end,
+ eline_to, (int)diag.range.end.character);
+
+ buf.apply_tag_by_name(diag.category, start, end);
- var msg = "Line: %d %s : %s".printf(eline+1, err.category, err.msg);
- buf.create_source_mark( msg, err.category, iter);
+
+ var msg = "Line: %d %s : %s".printf(eline+1, diag.category, diag.message);
+ buf.create_source_mark( msg, diag.category, iter);
GLib.debug("set line %d to %s", eline, msg);
//this.marks.set(eline, msg);
}
- return ;
+ this.last_error_counter = file.error_counter ;
this.el.overflow = Gtk.Overflow.VISIBLE;
new Xcls_label_preview( _this );
new Xcls_label_code( _this );
- var child_3 = new Xcls_ScrolledWindow5( _this );
+ var child_3 = new Xcls_ScrolledWindow4( _this );
child_3.ref();
this.el.append_page ( child_3.el , _this.label_preview.el );
- var child_4 = new Xcls_Box8( _this );
+ var child_4 = new Xcls_Box7( _this );
child_4.ref();
this.el.append_page ( child_4.el , _this.label_code.el );
}
// user defined functions
}
- public class Xcls_ScrolledWindow5 : Object
+ public class Xcls_ScrolledWindow4 : Object
{
public Gtk.ScrolledWindow el;
private Xcls_GtkView _this;
// my vars (def)
// ctor
- public Xcls_ScrolledWindow5(Xcls_GtkView _owner )
+ public Xcls_ScrolledWindow4(Xcls_GtkView _owner )
{
_this = _owner;
this.el = new Gtk.ScrolledWindow();
- public class Xcls_Box8 : Object
+ public class Xcls_Box7 : Object
{
public Gtk.Box el;
private Xcls_GtkView _this;
// my vars (def)
// ctor
- public Xcls_Box8(Xcls_GtkView _owner )
+ public Xcls_Box7(Xcls_GtkView _owner )
{
_this = _owner;
this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
// my vars (def)
public bool loading;
- public bool zallow_node_scroll;
public string prop_selected;
- public Gtk.CssProvider css;
public JsRender.Node? node_selected;
// ctor
// my vars (dec)
this.loading = false;
- this.zallow_node_scroll = true;
- this.prop_selected = "";
+ this.prop_selected = "\"\"";
// set gobject values
this.el.name = "gtkview-view";
this.el.editable = false;
this.el.show_line_marks = true;
this.el.show_line_numbers = true;
+ this.el.css_classes = { "code-editor" };
this.el.tab_width = 4;
new Xcls_buffer( _this );
this.el.set_buffer ( _this.buffer.el );
- var child_2 = new Xcls_EventControllerKey12( _this );
- child_2.ref();
- this.el.add_controller( child_2.el );
+ new Xcls_keystate( _this );
+ this.el.add_controller( _this.keystate.el );
+ var child_3 = new Xcls_EventControllerScroll12( _this );
+ child_3.ref();
+ this.el.add_controller( child_3.el );
// init method
{
-
-
- this.css = new Gtk.CssProvider();
-
- this.css.load_from_string("#gtkview-view { font: 10px monospace ;}");
-
- Gtk.StyleContext.add_provider_for_display(
- this.el.get_display(),
- this.css,
- Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
- );
-
-
- this.loading = true;
-
-
+
- var attrs = new GtkSource.MarkAttributes();
- var pink = Gdk.RGBA();
- pink.parse ( "pink");
- attrs.set_background ( pink);
- attrs.set_icon_name ( "process-stop");
- attrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("ERR", attrs, 1);
-
- var wattrs = new GtkSource.MarkAttributes();
- var blue = Gdk.RGBA();
- blue.parse ( "#ABF4EB");
- wattrs.set_background ( blue);
- wattrs.set_icon_name ( "process-stop");
- wattrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("WARN", wattrs, 1);
-
-
-
- var dattrs = new GtkSource.MarkAttributes();
- var purple = Gdk.RGBA();
- purple.parse ( "#EEA9FF");
- dattrs.set_background ( purple);
- dattrs.set_icon_name ( "process-stop");
- dattrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("DEPR", dattrs, 1);
-
-
- var gattrs = new GtkSource.MarkAttributes();
- var grey = Gdk.RGBA();
- grey.parse ( "#ccc");
- gattrs.set_background ( grey);
+ this.loading = true;
+
-
- this.el.set_mark_attributes ("grey", gattrs, 1);
-
-
-
-
-
-
- }
+ var attrs = new GtkSource.MarkAttributes();
+ attrs.set_icon_name ( "process-stop");
+ attrs.query_tooltip_text.connect(( mark) => {
+ //print("tooltip query? %s\n", mark.name);
+ return mark.name;
+ });
+
+ this.el.set_mark_attributes ("ERR", attrs, 1);
+
+ var wattrs = new GtkSource.MarkAttributes();
+ wattrs.set_icon_name ( "process-stop");
+ wattrs.query_tooltip_text.connect(( mark) => {
+ //print("tooltip query? %s\n", mark.name);
+ return mark.name;
+ });
+
+ this.el.set_mark_attributes ("WARN", wattrs, 1);
+
+
+
+ var dattrs = new GtkSource.MarkAttributes();
+ dattrs.set_icon_name ( "process-stop");
+ dattrs.query_tooltip_text.connect(( mark) => {
+ //print("tooltip query? %s\n", mark.name);
+ return mark.name;
+ });
+
+ this.el.set_mark_attributes ("DEPR", dattrs, 1);
+
+
+ var gattrs = new GtkSource.MarkAttributes();
+ var grey = Gdk.RGBA();
+ grey.parse ( "#ccc");
+ gattrs.set_background ( grey);
+
+
+ this.el.set_mark_attributes ("grey", gattrs, 1);
+
+
+
+
+
+
+ }
//listeners
this.el.query_tooltip.connect( (x, y, keyboard_tooltip, tooltip) => {
this.loading = true;
var buf = this.el.get_buffer();
buf.set_text("",0);
- var sbuf = (GtkSource.Buffer) buf;
+
var cpos = buf.cursor_position;
print("BEFORE LOAD cursor = %d\n", cpos);
this.loading = false;
return;
}
-
+ /*
var valafn = "";
try {
var regex = new Regex("\\.bjs$");
this.loading = false;
return ;
}
+ */
+ var str = _this.file.toSource();
// print("setting str %d\n", str.length);
buf.set_text(str, str.length);
// set gobject values
+ // init method
+
+ var buf = this.el;
+ buf.create_tag ("bold", "weight", Pango.Weight.BOLD);
+ buf.create_tag ("type", "weight", Pango.Weight.BOLD, "foreground", "#204a87");
+ buf.create_tag ("keyword", "weight", Pango.Weight.BOLD, "foreground", "#a40000");
+ buf.create_tag ("text", "weight", Pango.Weight.NORMAL, "foreground", "#729fcf");
+ buf.create_tag ("number", "weight", Pango.Weight.BOLD, "foreground", "#ad7fa8");
+ buf.create_tag ("method", "weight", Pango.Weight.BOLD, "foreground", "#729fcf");
+ buf.create_tag ("property", "weight", Pango.Weight.BOLD, "foreground", "#BC1F51");
+ buf.create_tag ("variable", "weight", Pango.Weight.BOLD, "foreground", "#A518B5");
+
+
+ buf.create_tag ("ERR", "weight", Pango.Weight.BOLD, "background", "pink");
+ buf.create_tag ("WARN", "weight", Pango.Weight.BOLD, "background", "#ABF4EB");
+ buf.create_tag ("DEPR", "weight", Pango.Weight.BOLD, "background", "#EEA9FF");
+
//listeners
this.el.cursor_moved.connect( ( ) => {
GLib.debug("cursor moved called");
// user defined functions
}
- public class Xcls_EventControllerKey12 : Object
+ public class Xcls_keystate : Object
{
public Gtk.EventControllerKey el;
private Xcls_GtkView _this;
// my vars (def)
+ public bool is_control;
// ctor
- public Xcls_EventControllerKey12(Xcls_GtkView _owner )
+ public Xcls_keystate(Xcls_GtkView _owner )
{
_this = _owner;
+ _this.keystate = this;
this.el = new Gtk.EventControllerKey();
// my vars (dec)
+ this.is_control = false;
// set gobject values
//listeners
+ this.el.key_released.connect( (keyval, keycode, state) => {
+
+ if (keyval == Gdk.Key.Control_L || keyval == Gdk.Key.Control_R) {
+ this.is_control = false;
+ }
+ });
this.el.key_pressed.connect( (keyval, keycode, state) => {
-
+ if (keyval == Gdk.Key.Control_L || keyval == Gdk.Key.Control_R) {
+ this.is_control = true;
+ }
if (keyval == Gdk.Key.g && (state & Gdk.ModifierType.CONTROL_MASK ) > 0 ) {
GLib.debug("SAVE: ctrl-g pressed");
// user defined functions
}
+ public class Xcls_EventControllerScroll12 : Object
+ {
+ public Gtk.EventControllerScroll el;
+ private Xcls_GtkView _this;
+
+
+ // my vars (def)
+ public double distance;
+
+ // ctor
+ public Xcls_EventControllerScroll12(Xcls_GtkView _owner )
+ {
+ _this = _owner;
+ this.el = new Gtk.EventControllerScroll( Gtk.EventControllerScrollFlags.VERTICAL );
+
+ // my vars (dec)
+ this.distance = 0.0f;
+
+ // set gobject values
+
+ //listeners
+ this.el.scroll.connect( (dx, dy) => {
+ if (!_this.keystate.is_control) {
+ return false;
+ }
+ //GLib.debug("scroll %f", dy);
+
+ this.distance += dy;
+ if (this.distance < -1) {
+ BuilderApplication.settings.editor_font_size ++;
+ this.distance = 0;
+ }
+ if (this.distance > 1) {
+ BuilderApplication.settings.editor_font_size --;
+ this.distance = 0;
+ }
+
+ return true;
+ });
+ }
+
+ // user defined functions
+ }
+
public class Xcls_Box13 : Object
child_1.ref();
this.el.add_controller( child_1.el );
- // init method
-
- this.css = new Gtk.CssProvider();
-
- this.css.load_from_string("
- #gtkview-search-entry { font: 10px monospace ;}"
- );
-
- Gtk.StyleContext.add_provider_for_display(
- this.el.get_display(),
- this.css,
- Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
- );
-
//listeners
this.el.search_changed.connect( () => {