mdv 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a2cec14c5185dae382cc61022bbdc30b8621644586dbbdba96f825ef9a66215
4
- data.tar.gz: 365112da6ecc882062830f5aecd5c4bbd1723f7753a98d3e0ea133ff9010b0e6
3
+ metadata.gz: cb3eb712bbc1f685d269a4e97421efb66ff9416700159a90ec4cf5d1f24c2d72
4
+ data.tar.gz: 666ab4a8cc091d8bbe702385e43c6d96017a718a35efe19a131372abf1515b70
5
5
  SHA512:
6
- metadata.gz: 197d4648bcdb8ae24f038f972cfdb8e57a67e65d44112b3ec8a570ab1f06de2bfbb592e72e8c0618f89ff71a442ff8cc6c61a571849e8b6298d0d7afdbc2f783
7
- data.tar.gz: 86acd0e5e657abec6c8f523169e80cee1a642dc42c31dfbb4126180e0cc3b5f60983b8b1140d12cf0cd8bb365c9b642d8881302914bc13fa208c64166207ab97
6
+ metadata.gz: 6c6cd510080c885c528a62684a1b5571e3798da209bde4bedac13ea780aa0af2c2b37c5bd87a8e38b3770fbcefae7ba79f3731139973a837684e3bcbe85789aa
7
+ data.tar.gz: c584ebcbd56777548042385e80949bfc4dcd25062ceb8ac57feac63c05d23ba69b9ea8bceae71df47b12857f2356ed7f4c402a2eefd2dd5435ee1a8d60ee9eaf
@@ -1,5 +1,11 @@
1
1
  # Change log
2
2
 
3
+ ## 0.6.0 / 2021-01-17
4
+
5
+ * Drop support for Ruby 2.4
6
+ * Support Ruby 2.7 and 3.0
7
+ * Implement as a Gtk::Application
8
+
3
9
  ## 0.5.1 / 2019-11-03
4
10
 
5
11
  * Fix navigation signal handler that would cause program to abort just after
data/bin/mdv CHANGED
@@ -3,13 +3,57 @@
3
3
 
4
4
  require "mdv"
5
5
 
6
- Gtk.init
6
+ myapp = Gtk::Application.new("net.matijs.mdv",
7
+ { handles_open: true })
7
8
 
8
- WebKit2::WebContext.get_default.set_cache_model :document_viewer
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
- file = ARGV[0]
11
- raise "Need file" unless file
17
+ myapp.signal_connect "startup" do |app|
18
+ WebKit2::WebContext.get_default.set_cache_model :document_viewer
12
19
 
13
- MDV::MarkdownViewer.new file
20
+ action = Gio::SimpleAction.new("quit", nil)
21
+ action.signal_connect("activate") { app.quit }
22
+ myapp.add_action action
14
23
 
15
- Gtk.main
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))
@@ -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.5.1
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: 2019-11-03 00:00:00.000000000 Z
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.6.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.6.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
- description: Quickly view markdown files on GNOME
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
- post_install_message:
122
- rdoc_options: []
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.4.0
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.0.6
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
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- gemspec
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
@@ -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
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "minitest/autorun"