[sushi] text: load the text buffer from JS
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sushi] text: load the text buffer from JS
- Date: Mon, 17 Jun 2019 22:53:41 +0000 (UTC)
commit 3a5cb89e48a5f686557166977dfae68f223f0996
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Mon Jun 17 15:40:24 2019 -0700
text: load the text buffer from JS
We don't need to use SushiTextLoader anymore to accomplish this.
src/libsushi/meson.build | 2 -
src/libsushi/sushi-text-loader.c | 307 ---------------------------------------
src/libsushi/sushi-text-loader.h | 40 -----
src/ui/mainWindow.js | 2 +-
src/viewers/text.js | 41 ++++--
5 files changed, 28 insertions(+), 364 deletions(-)
---
diff --git a/src/libsushi/meson.build b/src/libsushi/meson.build
index 3a3ca39..c43d4d6 100644
--- a/src/libsushi/meson.build
+++ b/src/libsushi/meson.build
@@ -6,7 +6,6 @@ libsushi_c = [
'sushi-media-bin.c',
'sushi-pdf-loader.c',
'sushi-sound-player.c',
- 'sushi-text-loader.c',
'sushi-utils.c',
]
@@ -18,7 +17,6 @@ libsushi_headers = [
'sushi-media-bin.h',
'sushi-pdf-loader.h',
'sushi-sound-player.h',
- 'sushi-text-loader.h',
'sushi-utils.h',
]
diff --git a/src/ui/mainWindow.js b/src/ui/mainWindow.js
index 87c2304..e24b717 100644
--- a/src/ui/mainWindow.js
+++ b/src/ui/mainWindow.js
@@ -219,7 +219,7 @@ var MainWindow = GObject.registerClass(class MainWindow extends Gtk.Window {
}
let klass = MimeHandler.getKlass(fileInfo.get_content_type());
- this._renderer = new klass(this.file);
+ this._renderer = new klass(this.file, fileInfo);
this._renderer.show_all();
this._renderer.expand = true;
this._embed.add(this._renderer);
diff --git a/src/viewers/text.js b/src/viewers/text.js
index bed0960..5d10a2a 100644
--- a/src/viewers/text.js
+++ b/src/viewers/text.js
@@ -23,7 +23,7 @@
*
*/
-const {Gdk, Gio, GLib, GObject, Gtk, GtkSource, Sushi} = imports.gi;
+const {Gdk, Gio, GLib, GObject, Gtk, GtkSource} = imports.gi;
const Renderer = imports.ui.renderer;
const Utils = imports.ui.utils;
@@ -53,16 +53,15 @@ var Klass = GObject.registerClass({
false)
},
}, class TextRenderer extends Gtk.ScrolledWindow {
- _init(file) {
+ _init(file, fileInfo) {
super._init();
- let textLoader = new Sushi.TextLoader();
- textLoader.connect('loaded', this._onBufferLoaded.bind(this));
- textLoader.uri = file.get_uri();
-
- this._view = new GtkSource.View({ editable: false,
+ let buffer = this._createBuffer(file, fileInfo);
+ this._view = new GtkSource.View({ buffer: buffer,
+ editable: false,
cursor_visible: false,
- monospace: true });
+ monospace: true,
+ show_line_numbers: !!buffer.language });
this._view.set_can_focus(false);
this._view.connect('button-press-event', (view, event) => {
let [, button] = event.get_button();
@@ -76,17 +75,31 @@ var Klass = GObject.registerClass({
this.isReady();
}
- _onBufferLoaded(loader, buffer) {
- buffer.highlight_syntax = true;
-
+ _createBuffer(file, fileInfo) {
+ let buffer = new GtkSource.Buffer();
let styleManager = GtkSource.StyleSchemeManager.get_default();
let geditScheme = _getGeditScheme();
let scheme = styleManager.get_scheme(geditScheme);
buffer.set_style_scheme(scheme);
- this._view.set_buffer(buffer);
- if (buffer.get_language())
- this._view.set_show_line_numbers(true);
+ let langManager = GtkSource.LanguageManager.get_default();
+ let language = langManager.guess_language(file.get_basename(),
+ fileInfo.get_content_type());
+ if (language)
+ buffer.set_language(language);
+
+ let sourceFile = new GtkSource.File({ location: file });
+ let loader = new GtkSource.FileLoader({ buffer: buffer,
+ file: sourceFile });
+ loader.load_async(0, null, null, (loader, result) => {
+ try {
+ loader.load_finish(result);
+ } catch (e) {
+ logError(e, `Unable to load the text file at ${loader.location.get_uri()}`);
+ }
+ });
+
+ return buffer;
}
get moveOnClick() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]