mdv 0.3.1 → 0.6.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
- 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'