mdv 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +6 -0
- data/bin/mdv +50 -6
- data/lib/mdv/markdown_viewer.rb +10 -27
- metadata +135 -22
- data/Gemfile +0 -5
- data/Rakefile +0 -25
- data/test/end_to_end/basic_run_test.rb +0 -34
- data/test/mdv/document_test.rb +0 -16
- data/test/test_helper.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb3eb712bbc1f685d269a4e97421efb66ff9416700159a90ec4cf5d1f24c2d72
|
4
|
+
data.tar.gz: 666ab4a8cc091d8bbe702385e43c6d96017a718a35efe19a131372abf1515b70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c6cd510080c885c528a62684a1b5571e3798da209bde4bedac13ea780aa0af2c2b37c5bd87a8e38b3770fbcefae7ba79f3731139973a837684e3bcbe85789aa
|
7
|
+
data.tar.gz: c584ebcbd56777548042385e80949bfc4dcd25062ceb8ac57feac63c05d23ba69b9ea8bceae71df47b12857f2356ed7f4c402a2eefd2dd5435ee1a8d60ee9eaf
|
data/Changelog.md
CHANGED
data/bin/mdv
CHANGED
@@ -3,13 +3,57 @@
|
|
3
3
|
|
4
4
|
require "mdv"
|
5
5
|
|
6
|
-
Gtk.
|
6
|
+
myapp = Gtk::Application.new("net.matijs.mdv",
|
7
|
+
{ handles_open: true })
|
7
8
|
|
8
|
-
|
9
|
+
def make_window(app)
|
10
|
+
win = Gtk::ApplicationWindow.new app
|
11
|
+
close_action = Gio::SimpleAction.new("close", nil)
|
12
|
+
close_action.signal_connect("activate") { win.destroy }
|
13
|
+
win.add_action close_action
|
14
|
+
win
|
15
|
+
end
|
9
16
|
|
10
|
-
|
11
|
-
|
17
|
+
myapp.signal_connect "startup" do |app|
|
18
|
+
WebKit2::WebContext.get_default.set_cache_model :document_viewer
|
12
19
|
|
13
|
-
|
20
|
+
action = Gio::SimpleAction.new("quit", nil)
|
21
|
+
action.signal_connect("activate") { app.quit }
|
22
|
+
myapp.add_action action
|
14
23
|
|
15
|
-
|
24
|
+
myapp.set_accels_for_action "app.quit", ["<Ctrl>Q"]
|
25
|
+
myapp.set_accels_for_action "win.close", ["<Ctrl>W"]
|
26
|
+
myapp.set_accels_for_action "win.reload", ["<Ctrl>R"]
|
27
|
+
|
28
|
+
# Add menu so Atspi has a way to access the actions
|
29
|
+
menu = Gio::Menu.new
|
30
|
+
file_menu = Gio::Menu.new
|
31
|
+
file_menu.append "Close Window", "win.close"
|
32
|
+
file_menu.append "Quit", "app.quit"
|
33
|
+
menu.append_submenu "File", file_menu
|
34
|
+
view_menu = Gio::Menu.new
|
35
|
+
view_menu.append "Reload", "win.reload"
|
36
|
+
menu.append_submenu "View", view_menu
|
37
|
+
|
38
|
+
myapp.menubar = menu
|
39
|
+
end
|
40
|
+
|
41
|
+
myapp.signal_connect "activate" do |app, _user_data|
|
42
|
+
win = make_window(app)
|
43
|
+
win.show_all
|
44
|
+
win.children.first.visible = false
|
45
|
+
end
|
46
|
+
|
47
|
+
myapp.signal_connect "open" do |app, files, _hint, _user_data|
|
48
|
+
files.each do |file|
|
49
|
+
filename = file.path
|
50
|
+
win = make_window(app)
|
51
|
+
MDV::MarkdownViewer.new win, filename
|
52
|
+
win.show_all
|
53
|
+
|
54
|
+
# This hides the menubar but keeps it available for Atspi
|
55
|
+
win.children.first.visible = false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
exit(myapp.run([$PROGRAM_NAME] + ARGV))
|
data/lib/mdv/markdown_viewer.rb
CHANGED
@@ -8,33 +8,21 @@ GirFFI.setup :WebKit2, "4.0"
|
|
8
8
|
module MDV
|
9
9
|
# Markdown viewer window class
|
10
10
|
class MarkdownViewer
|
11
|
-
def initialize(file)
|
11
|
+
def initialize(win, file)
|
12
|
+
@win = win
|
12
13
|
@document = Document.new(file)
|
13
14
|
setup_gui
|
15
|
+
connect_actions
|
14
16
|
reload
|
15
17
|
connect_signals
|
16
|
-
@win.show_all
|
17
18
|
end
|
18
19
|
|
19
20
|
private
|
20
21
|
|
21
22
|
def connect_signals
|
22
|
-
connect_key_press_event_signal
|
23
|
-
connect_destroy_signal
|
24
23
|
connect_web_view_signals
|
25
24
|
end
|
26
25
|
|
27
|
-
def connect_destroy_signal
|
28
|
-
@win.signal_connect("destroy") { Gtk.main_quit }
|
29
|
-
end
|
30
|
-
|
31
|
-
def connect_key_press_event_signal
|
32
|
-
@win.signal_connect "key-press-event" do |_wdg, evt, _ud|
|
33
|
-
handle_key(evt) if evt.state[:control_mask]
|
34
|
-
false
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
26
|
def connect_web_view_signals
|
39
27
|
web_view.signal_connect("context-menu") { true }
|
40
28
|
web_view.signal_connect("decide-policy") do |_wv, decision, decision_type|
|
@@ -42,15 +30,6 @@ module MDV
|
|
42
30
|
end
|
43
31
|
end
|
44
32
|
|
45
|
-
def handle_key(evt)
|
46
|
-
case evt.keyval
|
47
|
-
when "q".ord
|
48
|
-
@win.destroy
|
49
|
-
when "r".ord
|
50
|
-
reload
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
33
|
def handle_decide_policy(decision, decision_type)
|
55
34
|
case decision_type
|
56
35
|
when :navigation_action
|
@@ -65,10 +44,14 @@ module MDV
|
|
65
44
|
end
|
66
45
|
|
67
46
|
def setup_gui
|
68
|
-
@win = Gtk::Window.new :toplevel
|
69
|
-
@win.set_default_geometry 700, 500
|
70
|
-
|
71
47
|
@win.add scrolled_window
|
48
|
+
@win.set_default_size 700, 500
|
49
|
+
end
|
50
|
+
|
51
|
+
def connect_actions
|
52
|
+
reload_action = Gio::SimpleAction.new("reload", nil)
|
53
|
+
reload_action.signal_connect("activate") { reload }
|
54
|
+
@win.add_action reload_action
|
72
55
|
end
|
73
56
|
|
74
57
|
def scrolled_window
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mdv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matijs van Zuijlen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gir_ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.15.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.15.7
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: gir_ffi-gtk
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +72,14 @@ dependencies:
|
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
75
|
+
version: 0.7.0
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
82
|
+
version: 0.7.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: minitest
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '5.12'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.13.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.13.1
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: rake
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,50 +122,135 @@ dependencies:
|
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '13.0'
|
97
|
-
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rake-manifest
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.2.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.2.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.8.0
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.8.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop-minitest
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.10.1
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.10.1
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop-packaging
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.5.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.5.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rubocop-performance
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 1.9.0
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 1.9.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: simplecov
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 0.21.0
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.21.0
|
209
|
+
description: 'Quickly view markdown files on GNOME
|
210
|
+
|
211
|
+
'
|
98
212
|
email:
|
99
213
|
- matijs@matijs.net
|
100
214
|
executables:
|
101
215
|
- mdv
|
102
216
|
extensions: []
|
103
|
-
extra_rdoc_files:
|
217
|
+
extra_rdoc_files:
|
218
|
+
- Changelog.md
|
219
|
+
- README.md
|
104
220
|
files:
|
105
221
|
- Changelog.md
|
106
|
-
- Gemfile
|
107
222
|
- LICENSE
|
108
223
|
- README.md
|
109
|
-
- Rakefile
|
110
224
|
- bin/mdv
|
111
225
|
- lib/mdv.rb
|
112
226
|
- lib/mdv/document.rb
|
113
227
|
- lib/mdv/markdown_viewer.rb
|
114
|
-
- test/end_to_end/basic_run_test.rb
|
115
|
-
- test/mdv/document_test.rb
|
116
|
-
- test/test_helper.rb
|
117
228
|
homepage: http://www.github.com/mvz/mdv
|
118
229
|
licenses:
|
119
230
|
- MIT
|
120
|
-
metadata:
|
121
|
-
|
122
|
-
|
231
|
+
metadata:
|
232
|
+
homepage_uri: http://www.github.com/mvz/mdv
|
233
|
+
source_code_uri: https://github.com/mvz/mdv
|
234
|
+
changelog_uri: https://github.com/mvz/mdv/blob/master/Changelog.md
|
235
|
+
post_install_message:
|
236
|
+
rdoc_options:
|
237
|
+
- "--main"
|
238
|
+
- README.md
|
123
239
|
require_paths:
|
124
240
|
- lib
|
125
241
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
242
|
requirements:
|
127
243
|
- - ">="
|
128
244
|
- !ruby/object:Gem::Version
|
129
|
-
version: 2.
|
245
|
+
version: 2.5.0
|
130
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
247
|
requirements:
|
132
248
|
- - ">="
|
133
249
|
- !ruby/object:Gem::Version
|
134
250
|
version: '0'
|
135
251
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
137
|
-
signing_key:
|
252
|
+
rubygems_version: 3.2.3
|
253
|
+
signing_key:
|
138
254
|
specification_version: 4
|
139
255
|
summary: Simple Markdown Viewer
|
140
|
-
test_files:
|
141
|
-
- test/mdv/document_test.rb
|
142
|
-
- test/test_helper.rb
|
143
|
-
- test/end_to_end/basic_run_test.rb
|
256
|
+
test_files: []
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rake/clean"
|
4
|
-
require "bundler/gem_tasks"
|
5
|
-
require "rake/testtask"
|
6
|
-
|
7
|
-
namespace :test do
|
8
|
-
Rake::TestTask.new(:unit) do |t|
|
9
|
-
t.libs = ["lib"]
|
10
|
-
t.test_files = FileList["test/mdv/*_test.rb"]
|
11
|
-
t.warning = true
|
12
|
-
end
|
13
|
-
|
14
|
-
Rake::TestTask.new(:end_to_end) do |t|
|
15
|
-
t.libs = ["lib"]
|
16
|
-
t.test_files = FileList["test/end_to_end/*_test.rb"]
|
17
|
-
t.warning = true
|
18
|
-
end
|
19
|
-
|
20
|
-
task all: [:unit, :end_to_end]
|
21
|
-
end
|
22
|
-
|
23
|
-
task test: "test:all"
|
24
|
-
|
25
|
-
task default: "test"
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../test_helper"
|
4
|
-
require "atspi_app_driver"
|
5
|
-
|
6
|
-
# Test driver for the MDV application.
|
7
|
-
class MDVDriver < AtspiAppDriver
|
8
|
-
def initialize
|
9
|
-
super "mdv"
|
10
|
-
end
|
11
|
-
|
12
|
-
def boot(filename)
|
13
|
-
super arguments: [filename]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "The MDV application" do
|
18
|
-
before do
|
19
|
-
@driver = MDVDriver.new
|
20
|
-
@driver.boot("README.md")
|
21
|
-
end
|
22
|
-
|
23
|
-
it "starts and can be quit with Ctrl-q" do
|
24
|
-
sleep 1
|
25
|
-
@driver.press_ctrl_q
|
26
|
-
|
27
|
-
status = @driver.cleanup
|
28
|
-
_(status.exitstatus).must_equal 0
|
29
|
-
end
|
30
|
-
|
31
|
-
after do
|
32
|
-
@driver.cleanup
|
33
|
-
end
|
34
|
-
end
|
data/test/mdv/document_test.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../test_helper"
|
4
|
-
|
5
|
-
require "mdv/document"
|
6
|
-
|
7
|
-
describe MDV::Document do
|
8
|
-
let(:document) { MDV::Document.new("test/fixtures/test.md") }
|
9
|
-
|
10
|
-
describe "#html" do
|
11
|
-
it "renders the correct html" do
|
12
|
-
_(document.html)
|
13
|
-
.must_equal "<h1>Test</h1>\n\n<p>This is a test document.</p>\n"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
data/test/test_helper.rb
DELETED