glimmer-cs-gladiator 0.1.1 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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