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.
@@ -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.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 00:00:00.000000000 Z
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.0
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.0
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