public int pos_root_x;
public int pos_root_y;
public string ptype;
+ public int last_search_end;
public string key;
+ public Gtk.SourceSearchContext searchcontext;
public JsRender.JsRender file;
public bool pos;
public bool dirty;
this.window = null;
this.activeEditor = "";
this.ptype = "";
+ this.last_search_end = 0;
this.key = "";
+ this.searchcontext = null;
this.file = null;
this.pos = false;
this.dirty = false;
}
-
-
+
var str = _this.buffer.toString();
return true;
+ }
+ public void scroll_to_line (int line) {
+
+ GLib.Timeout.add(500, () => {
+
+ var buf = this.view.el.get_buffer();
+
+ var sbuf = (Gtk.SourceBuffer) buf;
+
+
+ Gtk.TextIter iter;
+ sbuf.get_iter_at_line(out iter, line);
+ this.view.el.scroll_to_iter(iter, 0.1f, true, 0.0f, 0.5f);
+ return false;
+ });
+ }
+ public int search (string txt) {
+
+ var s = new Gtk.SourceSearchSettings();
+
+ this.searchcontext = new Gtk.SourceSearchContext(this.buffer.el,s);
+ this.searchcontext .set_highlight(true);
+ s.set_search_text(txt);
+ Gtk.TextIter beg, st,en;
+
+ this.buffer.el.get_start_iter(out beg);
+ this.searchcontext.forward(beg, out st, out en);
+ this.last_search_end = 0;
+
+ return this.searchcontext.get_occurrences_count();
+
+
+
+
}
public void show (JsRender.JsRender file, JsRender.Node? node, string ptype, string key)
{
this.ptype = "";
this.key = "";
this.node = null;
-
+ this.searchcontext = null;
if (file.xtype != "PlainFile") {
}
+ }
+ public void forwardSearch (bool change_focus) {
+
+ if (this.searchcontext == null) {
+ return;
+ }
+
+ Gtk.TextIter beg, st,en;
+
+ this.buffer.el.get_iter_at_offset(out beg, this.last_search_end);
+ if (!this.searchcontext.forward(beg, out st, out en)) {
+
+ this.last_search_end = 0;
+ } else {
+ this.last_search_end = en.get_offset();
+ if (change_focus) {
+ this.view.el.grab_focus();
+ }
+ this.buffer.el.place_cursor(st);
+ this.view.el.scroll_to_iter(st, 0.1f, true, 0.0f, 0.5f);
+ }
+
}
public class Xcls_Box2 : Object
{
// init method
var description = Pango.FontDescription.from_string("monospace");
- description.set_size(8000);
- this.el.override_font(description);
+ description.set_size(8000);
+ this.el.override_font(description);
+ try {
+ this.el.completion.add_provider(new Palete.CompletionProvider(_this));
+ } catch (GLib.Error e) {}
+
+ this.el.completion.unblock_interactive();
+ this.el.completion.select_on_show = true; // select
+ this.el.completion.show_headers = false;
+ this.el.completion.remember_info_visibility = true;
+
var attrs = new Gtk.SourceMarkAttributes();
var pink = Gdk.RGBA();
var lg = _this.file.content_type.length > 0 ?
lm.guess_language(_this.file.path, _this.file.content_type) :
lm.get_language(lang);
-
-
+
((Gtk.SourceBuffer)(this.el.get_buffer())) .set_language(lg);
this.el.insert_spaces_instead_of_tabs = true;
-
- print("sourcelanguage = %s\n", lg.name);
- if (lg.name == "Vala") {
- this.el.insert_spaces_instead_of_tabs = false;
- }
-
+ if (lg != null) {
+ print("sourcelanguage = %s\n", lg.name);
+ if (lg.name == "Vala") {
+ this.el.insert_spaces_instead_of_tabs = false;
+ }
+ }
_this.dirty = false;
this.el.grab_focus();
_this.save_button.el.sensitive = false;