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 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"