glimmer-cs-gladiator 0.1.1 → 0.1.6
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 +4 -4
- data/README.md +24 -13
- data/bin/gladiator +8 -1
- data/lib/models/glimmer/gladiator/dir.rb +62 -22
- data/lib/models/glimmer/gladiator/file.rb +149 -52
- data/lib/views/glimmer/gladiator.rb +327 -123
- data/lib/views/glimmer/gladiator/text_editor.rb +119 -0
- metadata +19 -4
@@ -0,0 +1,119 @@
|
|
1
|
+
module Glimmer
|
2
|
+
class Gladiator
|
3
|
+
class TextEditor
|
4
|
+
include Glimmer::UI::CustomWidget
|
5
|
+
|
6
|
+
options :file
|
7
|
+
|
8
|
+
attr_reader :text_widget
|
9
|
+
|
10
|
+
after_body {
|
11
|
+
@text_widget = @text.swt_widget
|
12
|
+
}
|
13
|
+
|
14
|
+
body {
|
15
|
+
composite {
|
16
|
+
layout_data :fill, :fill, true, true
|
17
|
+
grid_layout 2, false
|
18
|
+
@line_numbers_text = text(:multi) {
|
19
|
+
layout_data(:right, :fill, false, true)
|
20
|
+
font name: 'Consolas', height: OS.mac? ? 15 : 12
|
21
|
+
background color(:widget_background)
|
22
|
+
foreground rgb(75, 75, 75)
|
23
|
+
text bind(file, 'line_numbers_content')
|
24
|
+
top_index bind(file, 'top_index', read_only: true)
|
25
|
+
on_focus_gained {
|
26
|
+
@text&.swt_widget.setFocus
|
27
|
+
}
|
28
|
+
on_key_pressed {
|
29
|
+
@text&.swt_widget.setFocus
|
30
|
+
}
|
31
|
+
on_mouse_up {
|
32
|
+
@text&.swt_widget.setFocus
|
33
|
+
}
|
34
|
+
}
|
35
|
+
@text = text(:multi, :border, :h_scroll, :v_scroll) {
|
36
|
+
layout_data :fill, :fill, true, true
|
37
|
+
font name: 'Consolas', height: OS.mac? ? 15 : 12
|
38
|
+
foreground rgb(75, 75, 75)
|
39
|
+
text bind(file, 'dirty_content')
|
40
|
+
focus true
|
41
|
+
selection bind(file, 'selection')
|
42
|
+
selection_count bind(file, 'selection_count')
|
43
|
+
top_index bind(file, 'top_index')
|
44
|
+
on_focus_lost {
|
45
|
+
file&.write_dirty_content
|
46
|
+
}
|
47
|
+
on_key_pressed { |key_event|
|
48
|
+
if key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == '/'
|
49
|
+
file.comment_line!
|
50
|
+
key_event.doit = false
|
51
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'k'
|
52
|
+
file.kill_line!
|
53
|
+
key_event.doit = false
|
54
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'd'
|
55
|
+
file.duplicate_line!
|
56
|
+
key_event.doit = false
|
57
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == '['
|
58
|
+
file.outdent!
|
59
|
+
key_event.doit = false
|
60
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == ']'
|
61
|
+
file.indent!
|
62
|
+
key_event.doit = false
|
63
|
+
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && key_event.keyCode == swt(:cr)
|
64
|
+
file.prefix_new_line!
|
65
|
+
key_event.doit = false
|
66
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:cr)
|
67
|
+
file.insert_new_line!
|
68
|
+
key_event.doit = false
|
69
|
+
elsif key_event.keyCode == swt(:page_up)
|
70
|
+
file.page_up
|
71
|
+
key_event.doit = false
|
72
|
+
elsif key_event.keyCode == swt(:page_down)
|
73
|
+
file.page_down
|
74
|
+
key_event.doit = false
|
75
|
+
elsif key_event.keyCode == swt(:home)
|
76
|
+
file.home
|
77
|
+
key_event.doit = false
|
78
|
+
elsif key_event.keyCode == swt(:end)
|
79
|
+
file.end
|
80
|
+
key_event.doit = false
|
81
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:arrow_up)
|
82
|
+
file.move_up!
|
83
|
+
key_event.doit = false
|
84
|
+
elsif key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:arrow_down)
|
85
|
+
file.move_down!
|
86
|
+
key_event.doit = false
|
87
|
+
end
|
88
|
+
}
|
89
|
+
on_verify_text { |verify_event|
|
90
|
+
key_code = verify_event.keyCode
|
91
|
+
case key_code
|
92
|
+
when swt(:cr)
|
93
|
+
if file.selection_count.to_i == 0
|
94
|
+
verify_event.text += file.current_line_indentation
|
95
|
+
end
|
96
|
+
when swt(:tab)
|
97
|
+
if file.selection_count.to_i > 0
|
98
|
+
file.indent!
|
99
|
+
verify_event.doit = false
|
100
|
+
else
|
101
|
+
verify_event.text = ' '
|
102
|
+
end
|
103
|
+
end
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
def extract_char(event)
|
111
|
+
event.keyCode.chr
|
112
|
+
rescue => e
|
113
|
+
nil
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-cs-gladiator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 0.7.
|
18
|
+
version: 0.7.6
|
19
19
|
name: glimmer
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.7.
|
26
|
+
version: 0.7.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.8.1
|
103
|
+
name: puts_debuggerer
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.8.1
|
97
111
|
description: Gladiator (short for Glimmer Editor) is a Glimmer sample project under
|
98
112
|
on-going development. It is not intended to be a full-fledged editor by any means,
|
99
113
|
yet mostly a fun educational exercise in using Glimmer to build a text editor. Gladiator
|
@@ -116,6 +130,7 @@ files:
|
|
116
130
|
- lib/models/glimmer/gladiator/dir.rb
|
117
131
|
- lib/models/glimmer/gladiator/file.rb
|
118
132
|
- lib/views/glimmer/gladiator.rb
|
133
|
+
- lib/views/glimmer/gladiator/text_editor.rb
|
119
134
|
homepage: http://github.com/AndyObtiva/glimmer-cs-gladiator
|
120
135
|
licenses:
|
121
136
|
- MIT
|