mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-11-04 21:16:52 +00:00
Change RenderText to TextView
This commit is contained in:
parent
3fff792633
commit
7cf64ed800
5 changed files with 66 additions and 57 deletions
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
[GtkTemplate (ui = "/org/gnome/gitg/ui/gitg-diff-view-file-renderer-text.ui")]
|
||||
class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFileRenderer
|
||||
class Gitg.DiffViewFileRendererText : Gtk.TextView, DiffSelectable, DiffViewFileRenderer
|
||||
{
|
||||
private enum RegionType
|
||||
{
|
||||
|
@ -50,8 +50,8 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
private bool d_highlight;
|
||||
|
||||
private Cancellable? d_higlight_cancellable;
|
||||
private Gtk.SourceBuffer? d_old_highlight_buffer;
|
||||
private Gtk.SourceBuffer? d_new_highlight_buffer;
|
||||
private Gtk.TextBuffer? d_old_highlight_buffer;
|
||||
private Gtk.TextBuffer? d_new_highlight_buffer;
|
||||
private bool d_old_highlight_ready;
|
||||
private bool d_new_highlight_ready;
|
||||
|
||||
|
@ -82,8 +82,10 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
public new int tab_width
|
||||
{
|
||||
get { return (int)get_tab_width(); }
|
||||
set { set_tab_width((uint)value); }
|
||||
//get { return (int)get_tab_width(); }
|
||||
//set { set_tab_width((uint)value); }
|
||||
get { return 3; }
|
||||
set { ; }
|
||||
}
|
||||
|
||||
public int maxlines { get; set; }
|
||||
|
@ -177,7 +179,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
construct
|
||||
{
|
||||
var gutter = this.get_gutter(Gtk.TextWindowType.LEFT);
|
||||
//var gutter = this.get_gutter(Gtk.TextWindowType.LEFT);
|
||||
|
||||
d_old_lines = new DiffViewLinesRenderer(DiffViewLinesRenderer.Style.OLD);
|
||||
d_new_lines = new DiffViewLinesRenderer(DiffViewLinesRenderer.Style.NEW);
|
||||
|
@ -190,9 +192,9 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
d_new_lines.xpad = 8;
|
||||
d_sym_lines.xpad = 6;
|
||||
|
||||
gutter.insert(d_old_lines, 0);
|
||||
gutter.insert(d_new_lines, 1);
|
||||
gutter.insert(d_sym_lines, 2);
|
||||
//gutter.insert(d_old_lines, 0);
|
||||
//gutter.insert(d_new_lines, 1);
|
||||
//gutter.insert(d_sym_lines, 2);
|
||||
|
||||
this.set_border_window_size(Gtk.TextWindowType.TOP, 1);
|
||||
|
||||
|
@ -301,7 +303,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
private async void init_highlighting_buffer_new(Cancellable cancellable)
|
||||
{
|
||||
Gtk.SourceBuffer? buffer;
|
||||
Gtk.TextBuffer? buffer;
|
||||
|
||||
var file = delta.get_new_file();
|
||||
|
||||
|
@ -331,7 +333,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
}
|
||||
}
|
||||
|
||||
private async Gtk.SourceBuffer? init_highlighting_buffer(Ggit.DiffFile file, bool from_workdir, Cancellable cancellable)
|
||||
private async Gtk.TextBuffer? init_highlighting_buffer(Ggit.DiffFile file, bool from_workdir, Cancellable cancellable)
|
||||
{
|
||||
var id = file.get_oid();
|
||||
var location = get_file_location(file);
|
||||
|
@ -383,21 +385,21 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
return yield init_highlighting_buffer_from_stream(file, location, stream, content_type, cancellable);
|
||||
}
|
||||
|
||||
private async Gtk.SourceBuffer? init_highlighting_buffer_from_stream(Ggit.DiffFile file, File location, InputStream stream, string content_type, Cancellable cancellable)
|
||||
private async Gtk.TextBuffer? init_highlighting_buffer_from_stream(Ggit.DiffFile file, File location, InputStream stream, string content_type, Cancellable cancellable)
|
||||
{
|
||||
var manager = Gtk.SourceLanguageManager.get_default();
|
||||
var language = manager.guess_language(location != null ? location.get_basename() : null, content_type);
|
||||
|
||||
var buffer = new Gtk.SourceBuffer(this.buffer.tag_table);
|
||||
var buffer = new Gtk.TextBuffer(this.buffer.tag_table);
|
||||
|
||||
if (language != null)
|
||||
{
|
||||
buffer.language = language;
|
||||
//buffer.language = language;
|
||||
}
|
||||
|
||||
var style_scheme_manager = Gtk.SourceStyleSchemeManager.get_default();
|
||||
|
||||
buffer.highlight_syntax = true;
|
||||
//buffer.highlight_syntax = true;
|
||||
|
||||
d_stylesettings = try_settings(Gitg.Config.APPLICATION_ID + ".preferences.interface");
|
||||
if (d_stylesettings != null)
|
||||
|
@ -408,17 +410,22 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
update_style();
|
||||
} else {
|
||||
buffer.style_scheme = style_scheme_manager.get_scheme("classic");
|
||||
//buffer.style_scheme = style_scheme_manager.get_scheme("classic");
|
||||
}
|
||||
|
||||
var sfile = new Gtk.SourceFile();
|
||||
sfile.location = location;
|
||||
|
||||
var loader = new Gtk.SourceFileLoader.from_stream(buffer, sfile, stream);
|
||||
//var loader = new Gtk.SourceFileLoader.from_stream(buffer, sfile, stream);
|
||||
|
||||
try
|
||||
{
|
||||
yield loader.load_async(GLib.Priority.LOW, cancellable, null);
|
||||
var dis = new DataInputStream (stream);
|
||||
string line;
|
||||
while ((line = dis.read_line (null)) != null) {
|
||||
buffer.text += line;
|
||||
}
|
||||
//yield loader.load_async(GLib.Priority.LOW, cancellable, null);
|
||||
this.strip_carriage_returns(buffer);
|
||||
}
|
||||
catch (Error e)
|
||||
|
@ -440,7 +447,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
if (s != null)
|
||||
{
|
||||
((Gtk.SourceBuffer) buffer).style_scheme = s;
|
||||
//((Gtk.TextBuffer) buffer).style_scheme = s;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -461,19 +468,20 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
return null;
|
||||
}
|
||||
|
||||
private void strip_carriage_returns(Gtk.SourceBuffer buffer)
|
||||
private void strip_carriage_returns(Gtk.TextBuffer buffer)
|
||||
{
|
||||
var search_settings = new Gtk.SourceSearchSettings();
|
||||
|
||||
search_settings.regex_enabled = true;
|
||||
search_settings.search_text = "\\r";
|
||||
|
||||
var search_context = new Gtk.SourceSearchContext(buffer, search_settings);
|
||||
/*var search_context = new Gtk.SourceSearchContext(buffer, search_settings);
|
||||
|
||||
try
|
||||
{
|
||||
search_context.replace_all("", 0);
|
||||
} catch (Error e) {}
|
||||
*/
|
||||
}
|
||||
|
||||
private void update_highlighting_ready()
|
||||
|
@ -495,7 +503,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
// apply the tags that are applied to the highlighted source buffers.
|
||||
foreach (var region in d_regions)
|
||||
{
|
||||
Gtk.SourceBuffer? source;
|
||||
Gtk.TextBuffer? source;
|
||||
|
||||
if (region.type == RegionType.REMOVED)
|
||||
{
|
||||
|
@ -519,7 +527,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
var source_end_iter = source_iter;
|
||||
source_end_iter.forward_lines(region.length);
|
||||
|
||||
source.ensure_highlight(source_iter, source_end_iter);
|
||||
//source.ensure_highlight(source_iter, source_end_iter);
|
||||
|
||||
var buffer_end_iter = buffer_iter;
|
||||
buffer_end_iter.forward_lines(region.length);
|
||||
|
@ -603,9 +611,9 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
removed_attributes.background = Gdk.RGBA() { red = 1.0, green = 220.0 / 255.0, blue = 220.0 / 255.0, alpha = 1.0 };
|
||||
}
|
||||
|
||||
this.set_mark_attributes("header", header_attributes, 0);
|
||||
this.set_mark_attributes("added", added_attributes, 0);
|
||||
this.set_mark_attributes("removed", removed_attributes, 0);
|
||||
//this.set_mark_attributes("header", header_attributes, 0);
|
||||
//this.set_mark_attributes("added", added_attributes, 0);
|
||||
//this.set_mark_attributes("removed", removed_attributes, 0);
|
||||
}
|
||||
|
||||
protected override void constructed()
|
||||
|
@ -618,7 +626,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
|
||||
public void add_hunk(Ggit.DiffHunk hunk, Gee.ArrayList<Ggit.DiffLine> lines)
|
||||
{
|
||||
var buffer = this.buffer as Gtk.SourceBuffer;
|
||||
var buffer = this.buffer as Gtk.TextBuffer;
|
||||
|
||||
/* Diff hunk */
|
||||
var h = hunk.get_header();
|
||||
|
@ -640,7 +648,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
}
|
||||
|
||||
iter.set_line_offset(0);
|
||||
buffer.create_source_mark(null, "header", iter);
|
||||
//buffer.create_source_mark(null, "header", iter);
|
||||
|
||||
var header = @"@@ -$(hunk.get_old_start()),$(hunk.get_old_lines()) +$(hunk.get_new_start()),$(hunk.get_new_lines()) @@ $h\n";
|
||||
buffer.insert(ref iter, header, -1);
|
||||
|
@ -783,7 +791,7 @@ class Gitg.DiffViewFileRendererText : Gtk.SourceView, DiffSelectable, DiffViewFi
|
|||
if (category != null)
|
||||
{
|
||||
buffer.get_iter_at_line(out iter, line_hunk_start + i);
|
||||
buffer.create_source_mark(null, category, iter);
|
||||
//buffer.create_source_mark(null, category, iter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
private Gdk.Cursor d_cursor_hand;
|
||||
private bool d_is_rubber_band;
|
||||
|
||||
public Gtk.SourceView source_view
|
||||
public Gtk.TextView source_view
|
||||
{
|
||||
get; construct set;
|
||||
}
|
||||
|
@ -50,19 +50,19 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
var ret = new int[0];
|
||||
Gtk.TextIter iter;
|
||||
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
buffer.get_start_iter(out iter);
|
||||
|
||||
while (buffer.forward_iter_to_source_mark(ref iter, d_selection_category))
|
||||
/*while (buffer.forward_iter_to_source_mark(ref iter, d_selection_category))
|
||||
{
|
||||
ret += iter.get_line();
|
||||
}
|
||||
}*/
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public DiffViewFileSelectable(Gtk.SourceView source_view)
|
||||
public DiffViewFileSelectable(Gtk.TextView source_view)
|
||||
{
|
||||
Object(source_view: source_view);
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
d_selection_tag.foreground_rgba = theme_selected_fg_color;
|
||||
}
|
||||
|
||||
source_view.set_mark_attributes(d_selection_category, selection_attributes, 0);
|
||||
//source_view.set_mark_attributes(d_selection_category, selection_attributes, 0);
|
||||
}
|
||||
|
||||
private bool get_line_selected(Gtk.TextIter iter)
|
||||
|
@ -161,9 +161,9 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
start.set_line_offset(0);
|
||||
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
return buffer.get_source_marks_at_iter(start, d_selection_category) != null;
|
||||
return true;//buffer.get_source_marks_at_iter(start, d_selection_category) != null;
|
||||
}
|
||||
|
||||
private bool get_line_is_diff(Gtk.TextIter iter)
|
||||
|
@ -172,10 +172,10 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
start.set_line_offset(0);
|
||||
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
return (buffer.get_source_marks_at_iter(start, "added") != null) ||
|
||||
(buffer.get_source_marks_at_iter(start, "removed") != null);
|
||||
return true;//(buffer.get_source_marks_at_iter(start, "added") != null) ||
|
||||
//(buffer.get_source_marks_at_iter(start, "removed") != null);
|
||||
}
|
||||
|
||||
private bool get_line_is_hunk(Gtk.TextIter iter)
|
||||
|
@ -184,9 +184,9 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
start.set_line_offset(0);
|
||||
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
return buffer.get_source_marks_at_iter(start, "header") != null;
|
||||
return false;//buffer.get_source_marks_at_iter(start, "header") != null;
|
||||
}
|
||||
|
||||
private bool get_iter_from_pointer_position(out Gtk.TextIter iter)
|
||||
|
@ -225,7 +225,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
private void update_selection_range(Gtk.TextIter start, Gtk.TextIter end, bool select)
|
||||
{
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
Gtk.TextIter real_start, real_end;
|
||||
|
||||
|
@ -263,7 +263,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
if (select)
|
||||
{
|
||||
buffer.create_source_mark(null, d_selection_category, current);
|
||||
//buffer.create_source_mark(null, d_selection_category, current);
|
||||
|
||||
var line_end = current;
|
||||
|
||||
|
@ -286,7 +286,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
if (!select)
|
||||
{
|
||||
buffer.remove_source_marks(real_start, real_end, d_selection_category);
|
||||
//buffer.remove_source_marks(real_start, real_end, d_selection_category);
|
||||
buffer.remove_tag(d_selection_tag, real_start, real_end);
|
||||
}
|
||||
}
|
||||
|
@ -319,12 +319,13 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
{
|
||||
iter.forward_line();
|
||||
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
if (!buffer.forward_iter_to_source_mark(ref iter, "header"))
|
||||
/*if (!buffer.forward_iter_to_source_mark(ref iter, "header"))
|
||||
{
|
||||
iter.forward_to_end();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
private bool hunk_is_all_selected(Gtk.TextIter iter)
|
||||
|
@ -480,7 +481,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
|
||||
private void update_has_selection()
|
||||
{
|
||||
unowned Gtk.SourceBuffer buffer = (Gtk.SourceBuffer) source_view.buffer;
|
||||
unowned Gtk.TextBuffer buffer = (Gtk.TextBuffer) source_view.buffer;
|
||||
|
||||
Gtk.TextIter iter;
|
||||
buffer.get_start_iter(out iter);
|
||||
|
@ -493,7 +494,7 @@ class Gitg.DiffViewFileSelectable : Object
|
|||
}
|
||||
else
|
||||
{
|
||||
something_selected = buffer.forward_iter_to_source_mark(ref iter, d_selection_category);
|
||||
//something_selected = buffer.forward_iter_to_source_mark(ref iter, d_selection_category);
|
||||
}
|
||||
|
||||
if (something_selected != has_selection)
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<property name="right_margin">6</property>
|
||||
<property name="buffer">buffer</property>
|
||||
</template>
|
||||
<object class="GtkSourceBuffer" id="buffer">
|
||||
<object class="GtkTextBuffer" id="buffer">
|
||||
<property name="highlight_matching_brackets">False</property>
|
||||
<property name="implicit_trailing_newline">False</property>
|
||||
</object>
|
||||
|
|
|
@ -97,8 +97,8 @@ namespace GitgFiles
|
|||
|
||||
if (s != null)
|
||||
{
|
||||
var buf = d_source.get_buffer() as Gtk.SourceBuffer;
|
||||
buf.set_style_scheme(s);
|
||||
var buf = d_source.get_buffer() as Gtk.TextBuffer;
|
||||
//buf.set_style_scheme(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -154,9 +154,9 @@ namespace GitgFiles
|
|||
|
||||
update_style();
|
||||
} else {
|
||||
var buf = d_source.get_buffer() as Gtk.SourceBuffer;
|
||||
var buf = d_source.get_buffer() as Gtk.TextBuffer;
|
||||
var style_scheme_manager = Gtk.SourceStyleSchemeManager.get_default();
|
||||
buf.style_scheme = style_scheme_manager.get_scheme("classic");
|
||||
//buf.style_scheme = style_scheme_manager.get_scheme("classic");
|
||||
}
|
||||
|
||||
d_whenMapped = new Gitg.WhenMapped(d_paned);
|
||||
|
@ -199,7 +199,7 @@ namespace GitgFiles
|
|||
Gtk.TreeModel mod;
|
||||
Gtk.TreeIter iter;
|
||||
|
||||
var buf = d_source.get_buffer() as Gtk.SourceBuffer;
|
||||
var buf = d_source.get_buffer() as Gtk.TextBuffer;
|
||||
buf.set_text("");
|
||||
|
||||
if (!selection.get_selected(out mod, out iter) || d_model.get_isdir(iter))
|
||||
|
@ -249,7 +249,7 @@ namespace GitgFiles
|
|||
var manager = Gtk.SourceLanguageManager.get_default();
|
||||
|
||||
buf.set_text((string)content);
|
||||
buf.language = manager.guess_language(fname, ct);
|
||||
//buf.language = manager.guess_language(fname, ct);
|
||||
|
||||
wid = d_source;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<!-- interface-requires gtksourceview 3.0 -->
|
||||
<object class="GtkSourceBuffer" id="source_buffer_file"/>
|
||||
<object class="GtkTextBuffer" id="source_buffer_file"/>
|
||||
<object class="GtkPaned" id="paned_files">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
|
Loading…
Reference in a new issue