Skip to content

Commit 0db0113

Browse files
authored
Use Blueprint to create the GtkSourceView (#182)
1 parent bb5df9b commit 0db0113

File tree

4 files changed

+31
-48
lines changed

4 files changed

+31
-48
lines changed

src/Source View/main.blp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,24 @@ Adw.StatusPage {
1010
orientation: vertical;
1111
halign: center;
1212

13-
ScrolledWindow scrolled_window {
13+
ScrolledWindow {
1414
height-request: 180;
1515
width-request: 600;
1616
has-frame: true;
17+
18+
GtkSource.View {
19+
auto-indent: true;
20+
indent-width: 2;
21+
show-line-numbers: true;
22+
monospace: true;
23+
24+
buffer: GtkSource.Buffer buffer {};
25+
}
1726
}
1827

1928
LinkButton {
20-
label: _("API Reference");
21-
uri: "https://gnome.pages.gitlab.gnome.org/gtksourceview/gtksourceview5/class.View.html";
29+
label: _("Documentation");
30+
uri: "https://gnome.pages.gitlab.gnome.org/gtksourceview/gtksourceview5/";
2231
}
2332
}
2433
}

src/Source View/main.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,12 @@ import GtkSource from "gi://GtkSource";
44
// However, you _have_ to call this once during the startup in your application - e.g. in GApplication::startup
55
GtkSource.init();
66

7-
// Get the language we want to use
7+
const buffer = workbench.builder.get_object("buffer");
8+
9+
// Set the language we want to use
810
const language_manager = GtkSource.LanguageManager.get_default();
911
const language = language_manager.get_language("js");
12+
buffer.set_language(language);
1013

11-
// Create the buffer - this holds the text that's used in the SourceView
12-
const buffer = GtkSource.Buffer.new_with_language(language);
14+
// The buffer holds the text that's used in the SourceView
1315
buffer.set_text('console.log("Hello World!");', -1);
14-
15-
// Create the SourceView which displays the buffer's display
16-
const source_view = new GtkSource.View({
17-
auto_indent: true,
18-
indent_width: 4,
19-
buffer,
20-
show_line_numbers: true,
21-
});
22-
23-
// Add the SourceView to our ScrolledView so its displayed
24-
const scrolled_window = workbench.builder.get_object("scrolled_window");
25-
scrolled_window.set_child(source_view);

src/Source View/main.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,19 @@
22

33
gi.require_version("Gtk", "4.0")
44
gi.require_version("GtkSource", "5")
5-
from gi.repository import Gtk, GtkSource
5+
from gi.repository import GtkSource
66
import workbench
77

88
# Strictly speaking we don't _have_ to do this here since WorkBench does this for us.
99
# However, you _have_ to call this once during the startup in your application - e.g. in GApplication::startup
1010
GtkSource.init()
1111

12-
# Get the language we want to use
12+
buffer = workbench.builder.get_object("buffer")
13+
14+
# Set the language we want to use
1315
language_manager = GtkSource.LanguageManager.get_default()
1416
language = language_manager.get_language("js")
17+
buffer.set_language(language)
1518

16-
# Create the buffer - this holds the text that's used in the SourceView
17-
buffer = GtkSource.Buffer.new_with_language(language)
18-
buffer.set_text('console.log("Hello World!")', -1)
19-
20-
# Create the SourceView which displays the buffer's display
21-
source_view = GtkSource.View(
22-
auto_indent=True, indent_width=4, buffer=buffer, show_line_numbers=True
23-
)
24-
25-
# Add the SourceView to our ScrolledView so its displayed
26-
scrolled_window: Gtk.ScrolledWindow = workbench.builder.get_object("scrolled_window")
27-
scrolled_window.set_child(source_view)
19+
# The buffer holds the text that's used in the SourceView
20+
buffer.set_text('print "Hello World"', -1)

src/Source View/main.vala

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,13 @@ public void main () {
77
*/
88
GtkSource.init ();
99

10-
// Get the language we want to use
11-
var language_manager = GtkSource.LanguageManager.get_default ();
12-
var language = language_manager.get_language ("js");
13-
// Create the buffer - this holds the text that's used in the SourceView
14-
var buffer = new GtkSource.Buffer.with_language (language) {
15-
text = "console.log(\"Hello World!\");"
16-
};
10+
var buffer = (GtkSource.Buffer) workbench.builder.get_object ("buffer");
1711

18-
// Create the SourceView which displays the buffer's display
19-
var source_view = new GtkSource.View.with_buffer (buffer) {
20-
auto_indent = true,
21-
indent_width = 4,
22-
show_line_numbers = true
23-
};
12+
// Set the language we want to use
13+
var language_manager = GtkSource.LanguageManager.get_default ();
14+
var language = language_manager.get_language ("vala");
15+
buffer.language = language;
2416

25-
// Add the SourceView to our ScrolledView so its displayed
26-
var scrolled_window = (Gtk.ScrolledWindow) workbench.builder.get_object ("scrolled_window");
27-
scrolled_window.child = source_view;
17+
// The buffer holds the text that's used in the SourceView
18+
buffer.text = "stdout.printf (\"Hello World\");";
2819
}

0 commit comments

Comments
 (0)