mdv 0.4.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9ea415d5cb925df17d9d4d5b08159c216db759c5649acf495d1193c735f8b3a
4
- data.tar.gz: 9102fc4355708e379ba96f00e4630ddcc653d2d32baaf7ee89b01479f8ead804
3
+ metadata.gz: 157742d804cd8625c8c157dba743e9ccaf5e3c22035c44ade34b4cc5f078ab5b
4
+ data.tar.gz: dc93ca82813f53fff68b46f659c2338250e5703eca326a777da2732c23372b61
5
5
  SHA512:
6
- metadata.gz: cd6419ac5e176c461df1284208f147a61bb289a28927aa6342ba2ee3a1bf5df984695a306d22476ad1ae4cd3fa4f3944831451be6814e4641dba01a7c29fc907
7
- data.tar.gz: 8b12ad0377ddebd0fffe0c2bd82991ef981e27ced5b5d5be5dbd927dd8ba6cac89fe1a1ef88cd06878341e8b125d408c3b9d5d48338a8ba4e99fcad04b0fb390
6
+ metadata.gz: 88e22ead99dc73e67273d52a6be5b134d36472dfee546bf1812465faf0c56045a9d5af1f4aecd084dcb969a632d70e0baf24e1391a34a5548b9cd0c3cd1a96b1
7
+ data.tar.gz: 6dcf7e0c5f1b9ddb3a7e61eaed787dd7b5932c84187648c9124cbcd84eb5b224935932e2e39a993e5a79c095d756518c587159183ba06040e60d1c0e373ea853
data/Changelog.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Change log
2
2
 
3
+ ## 0.7.0 / 2022-02-11
4
+
5
+ * Drop support for Ruby 2.5
6
+ * Support Ruby 3.1
7
+ * Update dependencies to allow github-markup version 4.0
8
+
9
+ ## 0.6.0 / 2021-01-17
10
+
11
+ * Drop support for Ruby 2.4
12
+ * Support Ruby 2.7 and 3.0
13
+ * Implement as a Gtk::Application
14
+
15
+ ## 0.5.1 / 2019-11-03
16
+
17
+ * Fix navigation signal handler that would cause program to abort just after
18
+ loading
19
+
20
+ ## 0.5.0 / 2019-10-20
21
+
22
+ * Drop support for Ruby 2.3 and lower
23
+ * Port to GirFFI-Gtk
24
+
3
25
  ## 0.4.1 / 2018-12-09
4
26
 
5
27
  * Update dependencies
data/README.md CHANGED
@@ -15,7 +15,15 @@ links open in default browser.
15
15
 
16
16
  ## Dependencies
17
17
 
18
- MDV depends on the wekit2-gtk gem.
18
+ MDV depends on the `gir_ffi-gtk` gem. Additionally, you need to install the
19
+ Webkit2Gtk library and its gobject-introspection information. On Debian and
20
+ Ubuntu, the following should work:
21
+
22
+ sudo apt-get install gir1.2-webkit2-4.0
23
+
24
+ On Ubuntu, you may also have to install two additional packages:
25
+
26
+ sudo apt-get install libwebkit2gtk-4.0-dev libjavascriptcoregtk-4.0-dev
19
27
 
20
28
  ## Contributing
21
29
 
@@ -24,5 +32,5 @@ on GitHub.
24
32
 
25
33
  ## License
26
34
 
27
- Copyright © 2012–2018 [Matijs van Zuijlen](http://www.matijs.net).
35
+ Copyright © 2012–2019 [Matijs van Zuijlen](http://www.matijs.net).
28
36
  See LICENSE for details.
data/bin/mdv CHANGED
@@ -1,15 +1,58 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'mdv'
4
+ require "mdv"
5
5
 
6
- Gtk.init
6
+ myapp = Gtk::Application.new("net.matijs.mdv", handles_open: true)
7
7
 
8
- WebKit2Gtk::WebContext.default.set_cache_model :document_viewer
8
+ def make_window(app)
9
+ win = Gtk::ApplicationWindow.new app
10
+ close_action = Gio::SimpleAction.new("close", nil)
11
+ close_action.signal_connect("activate") { win.destroy }
12
+ win.add_action close_action
13
+ win
14
+ end
9
15
 
10
- file = ARGV[0]
11
- raise 'Need file' unless file
16
+ myapp.signal_connect "startup" do |app|
17
+ WebKit2::WebContext.get_default.set_cache_model :document_viewer
12
18
 
13
- MDV::MarkdownViewer.new file
19
+ action = Gio::SimpleAction.new("quit", nil)
20
+ action.signal_connect("activate") { app.quit }
21
+ myapp.add_action action
14
22
 
15
- Gtk.main
23
+ myapp.set_accels_for_action "app.quit", ["<Ctrl>Q"]
24
+ myapp.set_accels_for_action "win.close", ["<Ctrl>W"]
25
+ myapp.set_accels_for_action "win.reload", ["<Ctrl>R"]
26
+
27
+ # Add menu so Atspi has a way to access the actions
28
+ menu = Gio::Menu.new
29
+ file_menu = Gio::Menu.new
30
+ file_menu.append "Close Window", "win.close"
31
+ file_menu.append "Quit", "app.quit"
32
+ menu.append_submenu "File", file_menu
33
+ view_menu = Gio::Menu.new
34
+ view_menu.append "Reload", "win.reload"
35
+ menu.append_submenu "View", view_menu
36
+
37
+ myapp.menubar = menu
38
+ end
39
+
40
+ myapp.signal_connect "activate" do |app, _user_data|
41
+ win = make_window(app)
42
+ win.show_all
43
+ win.children.first.visible = false
44
+ end
45
+
46
+ myapp.signal_connect "open" do |app, files, _hint, _user_data|
47
+ files.each do |file|
48
+ filename = file.path
49
+ win = make_window(app)
50
+ MDV::MarkdownViewer.new win, filename
51
+ win.show_all
52
+
53
+ # This hides the menubar but keeps it available for Atspi
54
+ win.children.first.visible = false
55
+ end
56
+ end
57
+
58
+ exit(myapp.run([$PROGRAM_NAME] + ARGV))
data/lib/mdv/document.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'github/markup'
3
+ require "github/markup"
4
4
 
5
5
  module MDV
6
6
  # Markdown document class
@@ -1,72 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'webkit2-gtk'
4
- require 'mdv/document'
3
+ require "gir_ffi-gtk3"
4
+ require "mdv/document"
5
+
6
+ GirFFI.setup :WebKit2, "4.0"
5
7
 
6
8
  module MDV
7
9
  # Markdown viewer window class
8
10
  class MarkdownViewer
9
- def initialize(file)
11
+ def initialize(win, file)
12
+ @win = win
10
13
  @document = Document.new(file)
11
14
  setup_gui
15
+ connect_actions
12
16
  reload
13
17
  connect_signals
14
- @win.show_all
15
18
  end
16
19
 
17
20
  private
18
21
 
19
22
  def connect_signals
20
- connect_key_press_event_signal
21
- connect_destroy_signal
22
23
  connect_web_view_signals
23
24
  end
24
25
 
25
- def connect_destroy_signal
26
- @win.signal_connect('destroy') { Gtk.main_quit }
27
- end
28
-
29
- def connect_key_press_event_signal
30
- @win.signal_connect 'key-press-event' do |_wdg, evt, _ud|
31
- handle_key(evt) if evt.state.control_mask?
32
- false
33
- end
34
- end
35
-
36
26
  def connect_web_view_signals
37
- web_view.signal_connect('context-menu') { true }
38
- web_view.signal_connect('decide-policy') do |_wv, decision, decision_type|
27
+ web_view.signal_connect("context-menu") { true }
28
+ web_view.signal_connect("decide-policy") do |_wv, decision, decision_type|
39
29
  handle_decide_policy(decision, decision_type)
40
30
  end
41
31
  end
42
32
 
43
- def handle_key(evt)
44
- case evt.keyval
45
- when 'q'.ord
46
- @win.destroy
47
- when 'r'.ord
48
- reload
49
- end
50
- end
51
-
52
33
  def handle_decide_policy(decision, decision_type)
53
- case decision_type.nick
54
- when 'navigation-action'
34
+ case decision_type
35
+ when :navigation_action
55
36
  action = decision.navigation_action
56
- if action.user_gesture?
37
+ if action.is_user_gesture
57
38
  Gtk.show_uri_on_window(@win, action.request.uri, 0)
58
39
  true
59
40
  end
60
- when 'new-window-action'
41
+ when :new_window_action
61
42
  true
62
43
  end
63
44
  end
64
45
 
65
46
  def setup_gui
66
- @win = Gtk::Window.new :toplevel
67
- @win.set_default_geometry 700, 500
68
-
69
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
70
55
  end
71
56
 
72
57
  def scrolled_window
@@ -76,7 +61,7 @@ module MDV
76
61
  end
77
62
 
78
63
  def web_view
79
- @web_view ||= WebKit2Gtk::WebView.new
64
+ @web_view ||= WebKit2::WebView.new
80
65
  end
81
66
 
82
67
  def reload
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MDV
4
+ VERSION = "0.7.0"
5
+ end
data/lib/mdv.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'mdv/markdown_viewer'
3
+ require_relative "mdv/markdown_viewer"
4
+ require_relative "mdv/version"
metadata CHANGED
@@ -1,144 +1,264 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.7.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: 2018-12-09 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: github-markdown
14
+ name: gir_ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.5
19
+ version: 0.15.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.6.5
26
+ version: 0.15.7
27
27
  - !ruby/object:Gem::Dependency
28
- name: github-markup
28
+ name: gir_ffi-gtk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: 0.15.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: 0.15.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: webkit2-gtk
42
+ name: github-markdown
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.3.0
47
+ version: 0.6.5
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.3.0
54
+ version: 0.6.5
55
55
  - !ruby/object:Gem::Dependency
56
- name: gnome_app_driver
56
+ name: github-markup
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '5'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '3'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '5'
75
+ - !ruby/object:Gem::Dependency
76
+ name: atspi_app_driver
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
59
79
  - - "~>"
60
80
  - !ruby/object:Gem::Version
61
- version: 0.2.1
81
+ version: 0.7.2
62
82
  type: :development
63
83
  prerelease: false
64
84
  version_requirements: !ruby/object:Gem::Requirement
65
85
  requirements:
66
86
  - - "~>"
67
87
  - !ruby/object:Gem::Version
68
- version: 0.2.1
88
+ version: 0.7.2
69
89
  - !ruby/object:Gem::Dependency
70
90
  name: minitest
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
93
  - - "~>"
74
94
  - !ruby/object:Gem::Version
75
- version: '5.5'
95
+ version: '5.12'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '5.12'
103
+ - !ruby/object:Gem::Dependency
104
+ name: pry
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.14.0
76
110
  type: :development
77
111
  prerelease: false
78
112
  version_requirements: !ruby/object:Gem::Requirement
79
113
  requirements:
80
114
  - - "~>"
81
115
  - !ruby/object:Gem::Version
82
- version: '5.5'
116
+ version: 0.14.0
83
117
  - !ruby/object:Gem::Dependency
84
118
  name: rake
85
119
  requirement: !ruby/object:Gem::Requirement
86
120
  requirements:
87
121
  - - "~>"
88
122
  - !ruby/object:Gem::Version
89
- version: '12.0'
123
+ version: '13.0'
90
124
  type: :development
91
125
  prerelease: false
92
126
  version_requirements: !ruby/object:Gem::Requirement
93
127
  requirements:
94
128
  - - "~>"
95
129
  - !ruby/object:Gem::Version
96
- version: '12.0'
97
- description: Quickly view markdown files on GNOME
130
+ version: '13.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake-manifest
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.2.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.2.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 1.25.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 1.25.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: rubocop-minitest
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.17.0
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 0.17.0
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop-packaging
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 0.5.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.5.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-performance
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 1.13.0
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 1.13.0
201
+ - !ruby/object:Gem::Dependency
202
+ name: simplecov
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 0.21.0
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 0.21.0
215
+ description: 'Quickly view markdown files on GNOME
216
+
217
+ '
98
218
  email:
99
219
  - matijs@matijs.net
100
220
  executables:
101
221
  - mdv
102
222
  extensions: []
103
- extra_rdoc_files: []
223
+ extra_rdoc_files:
224
+ - Changelog.md
225
+ - README.md
104
226
  files:
105
227
  - Changelog.md
106
- - Gemfile
107
228
  - LICENSE
108
229
  - README.md
109
- - Rakefile
110
230
  - bin/mdv
111
231
  - lib/mdv.rb
112
232
  - lib/mdv/document.rb
113
233
  - 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
234
+ - lib/mdv/version.rb
117
235
  homepage: http://www.github.com/mvz/mdv
118
236
  licenses:
119
237
  - MIT
120
- metadata: {}
121
- post_install_message:
122
- rdoc_options: []
238
+ metadata:
239
+ homepage_uri: http://www.github.com/mvz/mdv
240
+ source_code_uri: https://github.com/mvz/mdv
241
+ changelog_uri: https://github.com/mvz/mdv/blob/master/Changelog.md
242
+ rubygems_mfa_required: 'true'
243
+ post_install_message:
244
+ rdoc_options:
245
+ - "--main"
246
+ - README.md
123
247
  require_paths:
124
248
  - lib
125
249
  required_ruby_version: !ruby/object:Gem::Requirement
126
250
  requirements:
127
251
  - - ">="
128
252
  - !ruby/object:Gem::Version
129
- version: 2.3.0
253
+ version: 2.6.0
130
254
  required_rubygems_version: !ruby/object:Gem::Requirement
131
255
  requirements:
132
256
  - - ">="
133
257
  - !ruby/object:Gem::Version
134
258
  version: '0'
135
259
  requirements: []
136
- rubyforge_project:
137
- rubygems_version: 2.7.6
138
- signing_key:
260
+ rubygems_version: 3.3.3
261
+ signing_key:
139
262
  specification_version: 4
140
263
  summary: Simple Markdown Viewer
141
- test_files:
142
- - test/mdv/document_test.rb
143
- - test/test_helper.rb
144
- - test/end_to_end/basic_run_test.rb
264
+ 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,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../test_helper'
4
- require 'gnome_app_driver'
5
-
6
- # Test driver for the MDV application.
7
- class MDVDriver < GnomeAppDriver
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
- @driver.press_ctrl_q
25
-
26
- status = @driver.cleanup
27
- status.exitstatus.must_equal 0
28
- end
29
-
30
- after do
31
- @driver.cleanup
32
- end
33
- 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
data/test/test_helper.rb DELETED
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'