glimmer-cs-gladiator 0.8.1 → 0.9.2

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