@@ -3,6 +3,7 @@ module GtkMarkdownTextView
3
3
using Gtk4
4
4
import Gtk4: create_tag, apply_tag
5
5
import Gtk4. GLib: gobject_move_ref, GObject
6
+ import Gtk4. Pango
6
7
7
8
using Markdown
8
9
@@ -20,47 +21,37 @@ module GtkMarkdownTextView
20
21
21
22
mutable struct MarkdownTextView <: GtkTextView
22
23
handle:: Ptr{GObject}
23
- view:: GtkTextViewLeaf
24
24
buffer:: GtkTextBufferLeaf
25
25
26
26
function MarkdownTextView (m:: Markdown.MD , prelude:: String , mc:: MarkdownColors = MarkdownColors (); kwargs... )
27
27
28
28
buffer = GtkTextBuffer ()
29
29
buffer. text = prelude
30
30
view = GtkTextView (buffer; kwargs... )
31
-
32
- style_css (view,
33
- " window, view, textview, buffer, text {
34
- background-color: $(mc. background) ;
35
- color: $(mc. color) ;
36
- font-family: Monaco, Consolas, Courier, monospace;
37
- font-size: $(mc. font_size) pt;
38
- margin:0px;
39
- }"
40
- )
41
31
42
- # set_gtk_property!(view, :margin_left, 1)
43
32
view. monospace = true
44
- view. wrap_mode = true
33
+ view. wrap_mode = Pango . WrapMode_WORD_CHAR
45
34
46
35
fs = mc. font_size
47
36
48
- create_tag (buffer, " normal" , font = " $fs " )
49
- create_tag (buffer, " h1" , font = " bold $(fs + 3 ) " )
50
- create_tag (buffer, " h2" , font = " bold $(fs + 2 ) " )
51
- create_tag (buffer, " h3" , font = " bold $(fs + 1 ) " )
52
- create_tag (buffer, " h4" , font = " bold $(fs) " )
53
- create_tag (buffer, " h5" , font = " $(fs) " )
54
- create_tag (buffer, " h6" , font = " $(fs - 1 ) " )
55
- create_tag (buffer, " bold" , font = " bold $(fs) " )
56
- create_tag (buffer, " italic" , font = " italic $fs " )
57
- create_tag (buffer, " code" , font = " bold $fs " ,
37
+ create_tag (buffer, " normal" )
38
+ create_tag (buffer, " h1" , scale = 2.0 , weight = Pango . Weight_BOLD )
39
+ create_tag (buffer, " h2" , scale = 1.5 , weight = Pango . Weight_BOLD )
40
+ create_tag (buffer, " h3" , scale = 1.25 , weight = Pango . Weight_BOLD )
41
+ create_tag (buffer, " h4" , scale = 1.0 , weight = Pango . Weight_BOLD )
42
+ create_tag (buffer, " h5" , scale = 0.9 , weight = Pango . Weight_BOLD )
43
+ create_tag (buffer, " h6" , scale = 0.8 , weight = Pango . Weight_BOLD )
44
+ create_tag (buffer, " bold" , weight = Pango . Weight_BOLD )
45
+ create_tag (buffer, " italic" , style = Pango . Style_ITALIC )
46
+ create_tag (buffer, " code" , weight = Pango . Weight_BOLD ,
58
47
foreground= mc. highlight_color, background= mc. highlight_background)
59
48
60
49
insert_MD! (buffer, m)
61
50
62
- n = new (view. handle, view, buffer)
63
- gobject_move_ref (n, view)
51
+ n = new (view. handle, buffer)
52
+ mtv = gobject_move_ref (n, view)
53
+ style! (mtv, MarkdownColors ())
54
+ mtv
64
55
end
65
56
66
57
MarkdownTextView (m:: String ) = MarkdownTextView (Markdown. parse (m), " " )
@@ -88,7 +79,7 @@ module GtkMarkdownTextView
88
79
for el in m. text
89
80
i = insert_MD! (buffer, el, i)
90
81
end
91
- tag (buffer, " h$(min (N,4 )) " , ip, i)
82
+ tag (buffer, " h$(min (N,6 )) " , ip, i)
92
83
i
93
84
end
94
85
@@ -186,6 +177,22 @@ module GtkMarkdownTextView
186
177
end
187
178
end
188
179
180
+ # this sets the colors to the default too, which is not ideal
181
+ function fontsize! (m:: MarkdownTextView , fs)
182
+ mc = MarkdownColors (fs, " #000" , " #fff" , " #111" , " #eee" )
183
+ style! (m, mc)
184
+ end
189
185
186
+ function style! (m:: MarkdownTextView , mc:: MarkdownColors )
187
+ style_css (m,
188
+ " window, view, textview, buffer, text {
189
+ background-color: $(mc. background) ;
190
+ color: $(mc. color) ;
191
+ font-family: Monaco, Consolas, Courier, monospace;
192
+ font-size: $(mc. font_size) pt;
193
+ margin:0px;
194
+ }"
195
+ )
196
+ end
190
197
end
191
198
0 commit comments