glimmer-cs-gladiator 0.1.2 → 0.1.7

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.
@@ -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,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-cs-gladiator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.7
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-14 00:00:00.000000000 Z
11
+ date: 2020-06-02 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
+ - !ruby/object:Gem::Version
18
+ version: 0.7.0
19
+ - - "<"
17
20
  - !ruby/object:Gem::Version
18
- version: 0.7.2
21
+ version: 2.0.0
19
22
  name: glimmer
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 0.7.2
29
+ version: 0.7.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 2.0.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  requirement: !ruby/object:Gem::Requirement
29
35
  requirements:
@@ -94,6 +100,20 @@ dependencies:
94
100
  - - ">="
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.8.1
109
+ name: puts_debuggerer
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 0.8.1
97
117
  description: Gladiator (short for Glimmer Editor) is a Glimmer sample project under
98
118
  on-going development. It is not intended to be a full-fledged editor by any means,
99
119
  yet mostly a fun educational exercise in using Glimmer to build a text editor. Gladiator
@@ -116,6 +136,7 @@ files:
116
136
  - lib/models/glimmer/gladiator/dir.rb
117
137
  - lib/models/glimmer/gladiator/file.rb
118
138
  - lib/views/glimmer/gladiator.rb
139
+ - lib/views/glimmer/gladiator/text_editor.rb
119
140
  homepage: http://github.com/AndyObtiva/glimmer-cs-gladiator
120
141
  licenses:
121
142
  - MIT