mdv 0.3.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
- SHA1:
3
- metadata.gz: d8ae58018911dd37af67935880a3a18abbb7ffc4
4
- data.tar.gz: ddfab34f27ce6af584c4990a06f51e0888906317
2
+ SHA256:
3
+ metadata.gz: cb3eb712bbc1f685d269a4e97421efb66ff9416700159a90ec4cf5d1f24c2d72
4
+ data.tar.gz: 666ab4a8cc091d8bbe702385e43c6d96017a718a35efe19a131372abf1515b70
5
5
  SHA512:
6
- metadata.gz: 07b27b674063ce928eceedac586b67c278f4d1ae2f1a937a79490a3e6322fc89f44626c589afb36d76f2212ff98430ff0905608f08c8eaf5c080b58db3fa7a65
7
- data.tar.gz: 8e0ca22c3025613ec2e9baf39ef503a0c02cda169541e095a94c544bb7166e1694ec23304dfd21bdabeda1dcfb590b07650a77e1bba1b2160c3c1e79b0bd3756
6
+ metadata.gz: 6c6cd510080c885c528a62684a1b5571e3798da209bde4bedac13ea780aa0af2c2b37c5bd87a8e38b3770fbcefae7ba79f3731139973a837684e3bcbe85789aa
7
+ data.tar.gz: c584ebcbd56777548042385e80949bfc4dcd25062ceb8ac57feac63c05d23ba69b9ea8bceae71df47b12857f2356ed7f4c402a2eefd2dd5435ee1a8d60ee9eaf
@@ -1,8 +1,35 @@
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
+
9
+ ## 0.5.1 / 2019-11-03
10
+
11
+ * Fix navigation signal handler that would cause program to abort just after
12
+ loading
13
+
14
+ ## 0.5.0 / 2019-10-20
15
+
16
+ * Drop support for Ruby 2.3 and lower
17
+ * Port to GirFFI-Gtk
18
+
19
+ ## 0.4.1 / 2018-12-09
20
+
21
+ * Update dependencies
22
+
23
+ ## 0.4.0 / 2018-09-12
24
+
25
+ * Drop support for Ruby 2.2 and lower
26
+ * Update dependencies
27
+ * Hide context menus to prevent unwanted actions
28
+ * Open links in default browser instead of in mdv itself
29
+
3
30
  ## 0.3.1 / 2017-11-11
4
31
 
5
- * Port to Ruby-GNOME2
32
+ * Update dependencies
6
33
 
7
34
  ## 0.3.0 / 2017-04-25
8
35
 
@@ -24,7 +51,7 @@
24
51
 
25
52
  * Update dependency on GirFFI
26
53
  * Update code to use GirFFI's new bitmasks
27
- * Use updated atspi_app_driver to fix tests
54
+ * Use updated `atspi_app_driver` to fix tests
28
55
 
29
56
  ## 0.1.6 / 2015-10-17
30
57
 
@@ -35,7 +62,7 @@
35
62
 
36
63
  * Ensure all relevant files are released in the gem
37
64
  * Code restructuring
38
- * Tested end-to-end using atspi_app_driver
65
+ * Tested end-to-end using `atspi_app_driver`
39
66
  * Updated dependencies
40
67
 
41
68
  ## 0.1.4 / 2014-05-27
data/README.md CHANGED
@@ -6,7 +6,8 @@ Simple Markdown Viewer for GNOME 3.
6
6
 
7
7
  mdv README.md
8
8
 
9
- Press Ctrl-R to reload, Ctrl-Q to quit.
9
+ Press Ctrl-R to reload, Ctrl-Q to quit, Ctrl-C to copy selected text. Clicked
10
+ links open in default browser.
10
11
 
11
12
  ## Install
12
13
 
@@ -14,30 +15,22 @@ Press Ctrl-R to reload, Ctrl-Q to quit.
14
15
 
15
16
  ## Dependencies
16
17
 
17
- MDV needs some additional software installed in order to work.
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:
18
21
 
19
- ### Debian
22
+ sudo apt-get install gir1.2-webkit2-4.0
20
23
 
21
- The following should work:
24
+ On Ubuntu, you may also have to install two additional packages:
22
25
 
23
- sudo apt-get install libgirepository1.0-dev gobject-introspection
24
- sudo apt-get install libwebkit2gtk-4.0-dev
25
-
26
- ### Other OS
27
-
28
- To be determined. Please contribute back your experience in getting MDV running
29
- on your favorite operation system.
26
+ sudo apt-get install libwebkit2gtk-4.0-dev libjavascriptcoregtk-4.0-dev
30
27
 
31
28
  ## Contributing
32
29
 
33
30
  Contributions are welcome! Please feel free to create issues or pull requests
34
31
  on GitHub.
35
32
 
36
- If you want to run the tests, you may need to install additional packages:
37
-
38
- sudo apt-get install gir1.2-atspi-2.0 libatk-adaptor
39
-
40
33
  ## License
41
34
 
42
- Copyright © 2012–2016 [Matijs van Zuijlen](http://www.matijs.net).
35
+ Copyright © 2012–2019 [Matijs van Zuijlen](http://www.matijs.net).
43
36
  See LICENSE for details.
data/bin/mdv CHANGED
@@ -1,14 +1,59 @@
1
1
  #!/usr/bin/env ruby
2
- require 'github/markup'
3
- require 'mdv'
2
+ # frozen_string_literal: true
4
3
 
5
- Gtk.init
4
+ require "mdv"
6
5
 
7
- WebKit2Gtk::WebContext.default.set_cache_model :document_viewer
6
+ myapp = Gtk::Application.new("net.matijs.mdv",
7
+ { handles_open: true })
8
8
 
9
- file = ARGV[0]
10
- raise 'Need file' unless file
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
11
16
 
12
- MDV::MarkdownViewer.new file
17
+ myapp.signal_connect "startup" do |app|
18
+ WebKit2::WebContext.get_default.set_cache_model :document_viewer
13
19
 
14
- Gtk.main
20
+ action = Gio::SimpleAction.new("quit", nil)
21
+ action.signal_connect("activate") { app.quit }
22
+ myapp.add_action action
23
+
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.rb CHANGED
@@ -1 +1,3 @@
1
- require_relative 'mdv/markdown_viewer'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "mdv/markdown_viewer"
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "github/markup"
4
+
5
+ module MDV
6
+ # Markdown document class
7
+ class Document
8
+ def initialize(file)
9
+ @file = file
10
+ end
11
+
12
+ def base_uri
13
+ @base_uri ||= "file://#{fullpath}"
14
+ end
15
+
16
+ def html
17
+ GitHub::Markup.render(fullpath, File.read(fullpath))
18
+ end
19
+
20
+ private
21
+
22
+ def fullpath
23
+ @fullpath ||= File.expand_path(@file, Dir.pwd)
24
+ end
25
+ end
26
+ end
@@ -1,76 +1,71 @@
1
- require 'webkit2-gtk'
1
+ # frozen_string_literal: true
2
+
3
+ require "gir_ffi-gtk3"
4
+ require "mdv/document"
5
+
6
+ GirFFI.setup :WebKit2, "4.0"
2
7
 
3
8
  module MDV
4
9
  # Markdown viewer window class
5
10
  class MarkdownViewer
6
- attr_reader :file
7
-
8
- def initialize(file)
9
- @file = file
11
+ def initialize(win, file)
12
+ @win = win
13
+ @document = Document.new(file)
10
14
  setup_gui
15
+ connect_actions
11
16
  reload
12
17
  connect_signals
13
- @win.show_all
14
18
  end
15
19
 
16
20
  private
17
21
 
18
22
  def connect_signals
19
- connect_key_press_event_signal
20
- connect_destroy_signal
23
+ connect_web_view_signals
21
24
  end
22
25
 
23
- def connect_destroy_signal
24
- @win.signal_connect('destroy') { Gtk.main_quit }
25
- end
26
-
27
- def connect_key_press_event_signal
28
- @win.signal_connect 'key-press-event' do |_wdg, evt, _ud|
29
- handle_key(evt) if evt.state.control_mask?
30
- false
26
+ def connect_web_view_signals
27
+ web_view.signal_connect("context-menu") { true }
28
+ web_view.signal_connect("decide-policy") do |_wv, decision, decision_type|
29
+ handle_decide_policy(decision, decision_type)
31
30
  end
32
31
  end
33
32
 
34
- def handle_key(evt)
35
- case evt.keyval
36
- when 'q'.ord
37
- @win.destroy
38
- when 'r'.ord
39
- reload
33
+ def handle_decide_policy(decision, decision_type)
34
+ case decision_type
35
+ when :navigation_action
36
+ action = decision.navigation_action
37
+ if action.is_user_gesture
38
+ Gtk.show_uri_on_window(@win, action.request.uri, 0)
39
+ true
40
+ end
41
+ when :new_window_action
42
+ true
40
43
  end
41
44
  end
42
45
 
43
46
  def setup_gui
44
- @win = Gtk::Window.new :toplevel
45
- @win.set_default_geometry 700, 500
46
-
47
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
48
55
  end
49
56
 
50
57
  def scrolled_window
51
- @scr ||= Gtk::ScrolledWindow.new(nil, nil).tap do |it|
58
+ @scrolled_window ||= Gtk::ScrolledWindow.new(nil, nil).tap do |it|
52
59
  it.add web_view
53
60
  end
54
61
  end
55
62
 
56
63
  def web_view
57
- @wv ||= WebKit2Gtk::WebView.new
58
- end
59
-
60
- def fullpath
61
- @fullpath ||= File.expand_path(file, Dir.pwd)
62
- end
63
-
64
- def base_uri
65
- @base_uri ||= "file://#{fullpath}"
66
- end
67
-
68
- def html
69
- GitHub::Markup.render(fullpath)
64
+ @web_view ||= WebKit2::WebView.new
70
65
  end
71
66
 
72
67
  def reload
73
- web_view.load_html html, base_uri
68
+ web_view.load_html @document.html, @document.base_uri
74
69
  end
75
70
  end
76
71
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.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: 2017-11-11 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
27
+ - !ruby/object:Gem::Dependency
28
+ name: gir_ffi-gtk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.15.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.15.0
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: github-markdown
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -30,112 +58,199 @@ dependencies:
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '1.1'
61
+ version: '3.0'
34
62
  type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '1.1'
68
+ version: '3.0'
41
69
  - !ruby/object:Gem::Dependency
42
- name: webkit2-gtk
70
+ name: atspi_app_driver
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: 3.2.0
48
- type: :runtime
75
+ version: 0.7.0
76
+ type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: 3.2.0
82
+ version: 0.7.0
55
83
  - !ruby/object:Gem::Dependency
56
- name: gnome_app_driver
84
+ name: minitest
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: 0.1.2
89
+ version: '5.12'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: 0.1.2
96
+ version: '5.12'
69
97
  - !ruby/object:Gem::Dependency
70
- name: minitest
98
+ name: pry
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: '5.5'
103
+ version: 0.13.1
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: '5.5'
110
+ version: 0.13.1
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: rake
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '12.0'
117
+ version: '13.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '13.0'
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
90
146
  type: :development
91
147
  prerelease: false
92
148
  version_requirements: !ruby/object:Gem::Requirement
93
149
  requirements:
94
150
  - - "~>"
95
151
  - !ruby/object:Gem::Version
96
- version: '12.0'
97
- description: Quickly view markdown files on GNOME
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
226
+ - lib/mdv/document.rb
112
227
  - lib/mdv/markdown_viewer.rb
113
- - test/end_to_end/basic_run_test.rb
114
- - test/test_helper.rb
115
228
  homepage: http://www.github.com/mvz/mdv
116
229
  licenses:
117
230
  - MIT
118
- metadata: {}
119
- post_install_message:
120
- 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
121
239
  require_paths:
122
240
  - lib
123
241
  required_ruby_version: !ruby/object:Gem::Requirement
124
242
  requirements:
125
243
  - - ">="
126
244
  - !ruby/object:Gem::Version
127
- version: '0'
245
+ version: 2.5.0
128
246
  required_rubygems_version: !ruby/object:Gem::Requirement
129
247
  requirements:
130
248
  - - ">="
131
249
  - !ruby/object:Gem::Version
132
250
  version: '0'
133
251
  requirements: []
134
- rubyforge_project:
135
- rubygems_version: 2.6.13
136
- signing_key:
252
+ rubygems_version: 3.2.3
253
+ signing_key:
137
254
  specification_version: 4
138
255
  summary: Simple Markdown Viewer
139
- test_files:
140
- - test/test_helper.rb
141
- - test/end_to_end/basic_run_test.rb
256
+ test_files: []
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
data/Rakefile DELETED
@@ -1,17 +0,0 @@
1
- require 'rake/clean'
2
- require 'bundler/gem_tasks'
3
- require 'rake/testtask'
4
-
5
- namespace :test do
6
- Rake::TestTask.new(:end_to_end) do |t|
7
- t.libs = ['lib']
8
- t.test_files = FileList['test/end_to_end/*_test.rb']
9
- t.warning = true
10
- end
11
-
12
- task all: [:end_to_end]
13
- end
14
-
15
- task test: 'test:all'
16
-
17
- task default: 'test'
@@ -1,31 +0,0 @@
1
- require_relative '../test_helper'
2
- require 'gnome_app_driver'
3
-
4
- # Test driver for the MDV application.
5
- class MDVDriver < GnomeAppDriver
6
- def initialize
7
- super 'mdv'
8
- end
9
-
10
- def boot(filename)
11
- super arguments: [filename]
12
- end
13
- end
14
-
15
- describe 'The MDV application' do
16
- before do
17
- @driver = MDVDriver.new
18
- @driver.boot('README.md')
19
- end
20
-
21
- it 'starts and can be quit with Ctrl-q' do
22
- @driver.press_ctrl_q
23
-
24
- status = @driver.cleanup
25
- status.exitstatus.must_equal 0
26
- end
27
-
28
- after do
29
- @driver.cleanup
30
- end
31
- end
@@ -1 +0,0 @@
1
- require 'minitest/autorun'