glimmer-cs-gladiator 0.8.1 → 0.9.2

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.
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: glimmer-cs-gladiator 0.8.1 ruby lib
5
+ # stub: glimmer-cs-gladiator 0.9.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "glimmer-cs-gladiator".freeze
9
- s.version = "0.8.1"
9
+ s.version = "0.9.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Andy Maleh".freeze]
14
- s.date = "2021-02-07"
14
+ s.date = "2021-12-10"
15
15
  s.description = "Gladiator (short for Glimmer Editor) is a Glimmer sample project under on-going development. It is not intended to be a full-fledged editor by any means, yet mostly a fun educational exercise in using Glimmer to build a text editor. Gladiator is also a personal tool for shaping an editor exactly the way I like. I leave building truly professional text editors to software tooling experts who would hopefully use Glimmer one day.".freeze
16
16
  s.email = "andy.am@gmail.com".freeze
17
17
  s.executables = ["glimmer-cs-gladiator".freeze, "gladiator".freeze, "gladiator-setup".freeze]
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  "lib/models/glimmer/gladiator/dir.rb",
37
37
  "lib/models/glimmer/gladiator/file.rb",
38
38
  "lib/views/glimmer/gladiator.rb",
39
+ "lib/views/glimmer/gladiator/file_edit_menu.rb",
39
40
  "lib/views/glimmer/gladiator/file_explorer_tree.rb",
40
41
  "lib/views/glimmer/gladiator/file_lookup_list.rb",
41
42
  "lib/views/glimmer/gladiator/gladiator_menu_bar.rb",
@@ -45,36 +46,30 @@ Gem::Specification.new do |s|
45
46
  s.homepage = "http://github.com/AndyObtiva/glimmer-cs-gladiator".freeze
46
47
  s.licenses = ["MIT".freeze]
47
48
  s.post_install_message = "\nTo make the gladiator command available system-wide (especially with RVM), make sure you run this command with jruby in path: gladiator-setup\n\n".freeze
48
- s.rubygems_version = "3.0.6".freeze
49
+ s.rubygems_version = "3.1.6".freeze
49
50
  s.summary = "Gladiator (Glimmer Editor) - Glimmer Custom Shell - Text Editor Built in Ruby".freeze
50
51
 
51
52
  if s.respond_to? :specification_version then
52
53
  s.specification_version = 4
54
+ end
53
55
 
54
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.4.3", "< 5.0.0.0"])
56
- s.add_runtime_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
57
- s.add_runtime_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
58
- s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
59
- s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
60
- s.add_development_dependency(%q<warbler>.freeze, ["= 2.0.5"])
61
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
62
- else
63
- s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.4.3", "< 5.0.0.0"])
64
- s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
65
- s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
66
- s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
67
- s.add_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
68
- s.add_dependency(%q<warbler>.freeze, ["= 2.0.5"])
69
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
70
- end
56
+ if s.respond_to? :add_runtime_dependency then
57
+ s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, ["~> 4.20.16.0"])
58
+ s.add_runtime_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
59
+ s.add_runtime_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
60
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
61
+ s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
62
+ s.add_development_dependency(%q<warbler>.freeze, ["= 2.0.5"])
63
+ s.add_development_dependency(%q<jruby-jars>.freeze, ["= 9.2.19.0"])
64
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
71
65
  else
72
- s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.4.3", "< 5.0.0.0"])
66
+ s.add_dependency(%q<glimmer-dsl-swt>.freeze, ["~> 4.20.16.0"])
73
67
  s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
74
68
  s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
75
69
  s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
76
70
  s.add_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
77
71
  s.add_dependency(%q<warbler>.freeze, ["= 2.0.5"])
72
+ s.add_dependency(%q<jruby-jars>.freeze, ["= 9.2.19.0"])
78
73
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
79
74
  end
80
75
  end
Binary file
@@ -1,6 +1,6 @@
1
- require_relative '../glimmer-cs-gladiator'
2
-
3
- include Glimmer
4
-
5
- local_dir = ENV['LOCAL_DIR'] || '.'
6
- gladiator(project_dir_path: local_dir).open
1
+ require_relative '../glimmer-cs-gladiator'
2
+
3
+ include Glimmer
4
+
5
+ local_dir = ENV['LOCAL_DIR'] || '.'
6
+ gladiator(project_dir_path: local_dir).open
@@ -1,30 +1,30 @@
1
- $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
2
-
3
- require 'glimmer-dsl-swt'
4
- require 'filewatcher'
5
- require 'clipboard'
6
- require 'puts_debuggerer'
7
- require 'views/glimmer/gladiator'
8
-
9
- # Custom Composite Initializer (avoid default margins)
10
- Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['composite'] = lambda do |composite|
11
- if composite.get_layout.nil?
12
- layout = GridLayout.new
13
- composite.layout = layout
14
- end
15
- end
16
-
17
- # Custom LayoutProxy initialize method (avoid default margins)
18
- module Glimmer
19
- module SWT
20
- class LayoutProxy
21
- def initialize(underscored_layout_name, widget_proxy, args)
22
- @underscored_layout_name = underscored_layout_name
23
- @widget_proxy = widget_proxy
24
- args = SWTProxy.constantify_args(args)
25
- @swt_layout = self.class.swt_layout_class_for(underscored_layout_name).new(*args)
26
- @widget_proxy.swt_widget.setLayout(@swt_layout)
27
- end
28
- end
29
- end
30
- end
1
+ $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
2
+
3
+ require 'glimmer-dsl-swt'
4
+ require 'filewatcher'
5
+ require 'clipboard'
6
+ require 'puts_debuggerer'
7
+ require 'views/glimmer/gladiator'
8
+
9
+ # Custom Composite Initializer (avoid default margins)
10
+ Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['composite'] = lambda do |composite|
11
+ if composite.get_layout.nil?
12
+ layout = GridLayout.new
13
+ composite.layout = layout
14
+ end
15
+ end
16
+
17
+ # Custom LayoutProxy initialize method (avoid default margins)
18
+ module Glimmer
19
+ module SWT
20
+ class LayoutProxy
21
+ def initialize(underscored_layout_name, widget_proxy, args)
22
+ @underscored_layout_name = underscored_layout_name
23
+ @widget_proxy = widget_proxy
24
+ args = SWTProxy.constantify_args(args)
25
+ @swt_layout = self.class.swt_layout_class_for(underscored_layout_name).new(*args)
26
+ @widget_proxy.swt_widget.setLayout(@swt_layout)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,112 +1,112 @@
1
- module Glimmer
2
- class Gladiator
3
- class Command
4
- include Glimmer
5
-
6
- class << self
7
- include Glimmer
8
-
9
- def command_history
10
- @command_history ||= {}
11
- end
12
-
13
- def command_history_for(file)
14
- # keeping a first command to make redo support work by remembering next command after undoing all
15
- command_history[file] ||= [Command.new(file)]
16
- end
17
-
18
- def do(file, method = nil, *args, command: nil)
19
- if command.nil?
20
- command ||= Command.new(file, method, *args)
21
- command.previous_command = command_history_for(file).last
22
- unless command_history_for(file).last.method == :change_content! && method == :change_content!
23
- command_history_for(file).last.next_command = command
24
- end
25
- command.do
26
- command_history_for(file) << command unless command_history_for(file).last.method == :change_content! && method == :change_content!
27
- else
28
- command_history_for(file) << command
29
- end
30
- end
31
-
32
- def undo(file)
33
- return if command_history_for(file).size <= 1
34
- command = command_history_for(file).pop
35
- command&.undo
36
- end
37
-
38
- def redo(file)
39
- command = command_history_for(file).last
40
- command&.redo
41
- end
42
-
43
- def clear(file)
44
- command_history[file] = [Command.new(file)]
45
- end
46
- end
47
-
48
- attr_accessor :file, :method, :args, :previous_command, :next_command,
49
- :file_dirty_content, :file_caret_position, :file_selection_count, :previous_file_dirty_content, :previous_file_caret_position, :previous_file_selection_count
50
-
51
- def initialize(file, method = nil, *args)
52
- @file = file
53
- @method = method
54
- @args = args
55
- end
56
-
57
-
58
- def native?
59
- @method.nil?
60
- end
61
-
62
- def do
63
- return if native?
64
- backup
65
- execute
66
- end
67
-
68
- def undo
69
- return if native?
70
- restore
71
- end
72
-
73
- def redo
74
- return if next_command.nil?# || next_command.native?
75
- @file.dirty_content = next_command.file_dirty_content.clone
76
- @file.caret_position = next_command.file_caret_position
77
- @file.selection_count = next_command.file_selection_count
78
- Command.do(next_command.file, command: next_command)
79
- end
80
-
81
- def backup
82
- @previous_file_dirty_content = @file.dirty_content.clone
83
- @previous_file_caret_position = @file.caret_position
84
- @previous_file_selection_count = @file.selection_count
85
- if @method == :change_content!
86
- @previous_file_caret_position = @file.last_caret_position
87
- @previous_file_selection_count = @file.last_selection_count
88
- end
89
- end
90
-
91
- def restore
92
- @file.dirty_content = @previous_file_dirty_content.clone
93
- @file.caret_position = @previous_file_caret_position
94
- @file.selection_count = @previous_file_selection_count
95
- end
96
-
97
- def execute
98
- @file.start_command
99
- @file.send(@method, *@args)
100
- @file.end_command
101
- @file_dirty_content = @file.dirty_content.clone
102
- @file_caret_position = @file.caret_position
103
- @file_selection_count = @file.selection_count
104
- if previous_command.method == :change_content! && @method == :change_content!
105
- previous_command.file_dirty_content = @file_dirty_content
106
- previous_command.file_caret_position = @file_caret_position
107
- previous_command.file_selection_count = @file_selection_count
108
- end
109
- end
110
- end
111
- end
112
- end
1
+ module Glimmer
2
+ class Gladiator
3
+ class Command
4
+ include Glimmer
5
+
6
+ class << self
7
+ include Glimmer
8
+
9
+ def command_history
10
+ @command_history ||= {}
11
+ end
12
+
13
+ def command_history_for(file)
14
+ # keeping a first command to make redo support work by remembering next command after undoing all
15
+ command_history[file] ||= [Command.new(file)]
16
+ end
17
+
18
+ def do(file, method = nil, *args, command: nil)
19
+ if command.nil?
20
+ command ||= Command.new(file, method, *args)
21
+ command.previous_command = command_history_for(file).last
22
+ unless command_history_for(file).last.method == :change_content! && method == :change_content!
23
+ command_history_for(file).last.next_command = command
24
+ end
25
+ command.do
26
+ command_history_for(file) << command unless command_history_for(file).last.method == :change_content! && method == :change_content!
27
+ else
28
+ command_history_for(file) << command
29
+ end
30
+ end
31
+
32
+ def undo(file)
33
+ return if command_history_for(file).size <= 1
34
+ command = command_history_for(file).pop
35
+ command&.undo
36
+ end
37
+
38
+ def redo(file)
39
+ command = command_history_for(file).last
40
+ command&.redo
41
+ end
42
+
43
+ def clear(file)
44
+ command_history[file] = [Command.new(file)]
45
+ end
46
+ end
47
+
48
+ attr_accessor :file, :method, :args, :previous_command, :next_command,
49
+ :file_dirty_content, :file_caret_position, :file_selection_count, :previous_file_dirty_content, :previous_file_caret_position, :previous_file_selection_count
50
+
51
+ def initialize(file, method = nil, *args)
52
+ @file = file
53
+ @method = method
54
+ @args = args
55
+ end
56
+
57
+
58
+ def native?
59
+ @method.nil?
60
+ end
61
+
62
+ def do
63
+ return if native?
64
+ backup
65
+ execute
66
+ end
67
+
68
+ def undo
69
+ return if native?
70
+ restore
71
+ end
72
+
73
+ def redo
74
+ return if next_command.nil?# || next_command.native?
75
+ @file.dirty_content = next_command.file_dirty_content.clone
76
+ @file.caret_position = next_command.file_caret_position
77
+ @file.selection_count = next_command.file_selection_count
78
+ Command.do(next_command.file, command: next_command)
79
+ end
80
+
81
+ def backup
82
+ @previous_file_dirty_content = @file.dirty_content.clone
83
+ @previous_file_caret_position = @file.caret_position
84
+ @previous_file_selection_count = @file.selection_count
85
+ if @method == :change_content!
86
+ @previous_file_caret_position = @file.last_caret_position
87
+ @previous_file_selection_count = @file.last_selection_count
88
+ end
89
+ end
90
+
91
+ def restore
92
+ @file.dirty_content = @previous_file_dirty_content.clone
93
+ @file.caret_position = @previous_file_caret_position
94
+ @file.selection_count = @previous_file_selection_count
95
+ end
96
+
97
+ def execute
98
+ @file.start_command
99
+ @file.send(@method, *@args)
100
+ @file.end_command
101
+ @file_dirty_content = @file.dirty_content.clone
102
+ @file_caret_position = @file.caret_position
103
+ @file_selection_count = @file.selection_count
104
+ if previous_command.method == :change_content! && @method == :change_content!
105
+ previous_command.file_dirty_content = @file_dirty_content
106
+ previous_command.file_caret_position = @file_caret_position
107
+ previous_command.file_selection_count = @file_selection_count
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -6,7 +6,7 @@ module Glimmer
6
6
  include Glimmer
7
7
  include Glimmer::DataBinding::ObservableModel
8
8
 
9
- IGNORE_PATHS = ['.gladiator', '.git', 'coverage', 'packages', 'node_modules', 'tmp', 'vendor', 'pkg', 'dist']
9
+ IGNORE_PATHS = ['.gladiator', '.gladiator-scratchpad', '.git', 'coverage', 'packages', 'node_modules', 'tmp', 'vendor', 'pkg', 'dist']
10
10
 
11
11
  attr_accessor :selected_child, :filter, :children, :filtered_path_options, :filtered_path, :display_path, :ignore_paths
12
12
  attr_reader :name, :parent, :path
@@ -16,7 +16,7 @@ module Glimmer
16
16
  @project_dir = project_dir
17
17
  if is_local_dir
18
18
  @filewatcher = Filewatcher.new(path)
19
- Thread.new(@filewatcher) do |fw|
19
+ @filewatcher_thread = Thread.new(@filewatcher) do |fw|
20
20
  begin
21
21
  fw.watch do |filename, event|
22
22
  # TODO do fine grained processing of events for enhanced performance (e.g. dir refresh vs file change)
@@ -109,6 +109,19 @@ module Glimmer
109
109
  def selected_child_path_history
110
110
  @selected_child_path_history ||= []
111
111
  end
112
+
113
+ def close
114
+ all_children_files.each(&:close)
115
+ stop_filewatcher
116
+ end
117
+
118
+ def stop_filewatcher
119
+ @filewatcher&.stop
120
+ @filewatcher_thread&.kill
121
+ @filewatcher_thread = nil
122
+ @filewatcher&.finalize
123
+ @filewatcher = nil
124
+ end
112
125
 
113
126
  def pause_refresh
114
127
  @refresh_paused = true
@@ -177,7 +190,8 @@ module Glimmer
177
190
  # scratchpad scenario
178
191
  if selected_path.empty? # Scratchpad
179
192
  @selected_child&.write_dirty_content
180
- return (self.selected_child = File.new)
193
+ @scratchpad = (self.selected_child = File.new('', project_dir)) if @scratchpad.nil? || @scratchpad.closed?
194
+ return @scratchpad
181
195
  end
182
196
  full_selected_path = selected_path.include?(project_dir.path) ? selected_path : ::File.join(project_dir.path, selected_path)
183
197
  return if ::Dir.exist?(full_selected_path) ||
@@ -188,7 +202,6 @@ module Glimmer
188
202
  new_child = find_child_file(selected_path)
189
203
  begin
190
204
  unless new_child.dirty_content.nil?
191
- self.selected_child&.stop_filewatcher
192
205
  selected_child_path_history << new_child.path if new_child && !selected_child_path_history.include?(new_child.path)
193
206
  self.selected_child = new_child
194
207
  self.selected_child.start_filewatcher