glimmer-cs-gladiator 0.7.1 → 0.7.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -2
- data/VERSION +1 -1
- data/glimmer-cs-gladiator.gemspec +8 -6
- data/lib/views/glimmer/gladiator.rb +31 -229
- data/lib/views/glimmer/gladiator/file_explorer_tree.rb +244 -0
- data/lib/views/glimmer/gladiator/file_lookup_list.rb +64 -0
- data/lib/views/glimmer/gladiator/text_editor.rb +27 -2
- metadata +6 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55dd5d14035a4d76ce686365ba16ab6a49c8f1fcbef2298d171fdeea2b2777b8
|
|
4
|
+
data.tar.gz: 65e5240faa47773332187063daa9500441ecc2a8a6b117aee646f4bf47162588
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 77ba3e5e51fc0b9a815ee753c1fbfe839714217a56259dd6a12b6646b08df28a33ecdf5c87dbe169e62fdfd4063d799378fcc7781c46623451ba2d6ac6055fbd
|
|
7
|
+
data.tar.gz: 20f95fcdaf04f39d4ce979e30846ab2442ac37d416830d63cc95413dd89942c426c36fbc98f2d6328f97e1717f08243cfa5dcb38cea79b0e89873315c4878f39
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 0.7.2
|
|
4
|
+
|
|
5
|
+
- Fallback font ("Courier") for text editor when "Consolas" is not available
|
|
6
|
+
- Refactor Gladiator Custom Shell to extract more Glimmer Custom Widgets from it like FileLookupList and FileExplorerTree
|
|
7
|
+
- Upgrade to glimmer-dsl-swt v4.18.0.2
|
|
8
|
+
|
|
3
9
|
## 0.7.1
|
|
4
10
|
|
|
5
11
|
- Update View -> Reset All to also reset the File Lookup/File Explorer Sash Width and the Navigation Bar (expanding it)
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# <img src='https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-gladiator/master/images/glimmer-cs-gladiator-logo.svg' height=85 /> Gladiator 0.7.
|
|
1
|
+
# <img src='https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-gladiator/master/images/glimmer-cs-gladiator-logo.svg' height=85 /> Gladiator 0.7.2 - [Ugliest Text Editor Ever!](https://www.reddit.com/r/ruby/comments/hgve8k/gladiator_glimmer_editor_ugliest_text_editor_ever/)
|
|
2
2
|
## [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=40 /> Glimmer Custom Shell](https://github.com/AndyObtiva/glimmer-dsl-swt#custom-shell-gem)
|
|
3
3
|
[](http://badge.fury.io/rb/glimmer-cs-gladiator)
|
|
4
4
|
|
|
@@ -150,7 +150,7 @@ To reuse Gladiator as a Glimmer Custom Shell inside another Glimmer application,
|
|
|
150
150
|
following to the application's `Gemfile`:
|
|
151
151
|
|
|
152
152
|
```
|
|
153
|
-
gem 'glimmer-cs-gladiator', '>= 0.7.
|
|
153
|
+
gem 'glimmer-cs-gladiator', '>= 0.7.2'
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Run:
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.7.
|
|
1
|
+
0.7.2
|
|
@@ -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.7.
|
|
5
|
+
# stub: glimmer-cs-gladiator 0.7.2 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "glimmer-cs-gladiator".freeze
|
|
9
|
-
s.version = "0.7.
|
|
9
|
+
s.version = "0.7.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-01-
|
|
14
|
+
s.date = "2021-01-17"
|
|
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 = ["gladiator".freeze]
|
|
@@ -33,6 +33,8 @@ Gem::Specification.new do |s|
|
|
|
33
33
|
"lib/models/glimmer/gladiator/dir.rb",
|
|
34
34
|
"lib/models/glimmer/gladiator/file.rb",
|
|
35
35
|
"lib/views/glimmer/gladiator.rb",
|
|
36
|
+
"lib/views/glimmer/gladiator/file_explorer_tree.rb",
|
|
37
|
+
"lib/views/glimmer/gladiator/file_lookup_list.rb",
|
|
36
38
|
"lib/views/glimmer/gladiator/text_editor.rb"
|
|
37
39
|
]
|
|
38
40
|
s.homepage = "http://github.com/AndyObtiva/glimmer-cs-gladiator".freeze
|
|
@@ -44,14 +46,14 @@ Gem::Specification.new do |s|
|
|
|
44
46
|
s.specification_version = 4
|
|
45
47
|
|
|
46
48
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
47
|
-
s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.
|
|
49
|
+
s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.2", "< 5.0.0.0"])
|
|
48
50
|
s.add_runtime_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
49
51
|
s.add_runtime_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
50
52
|
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
51
53
|
s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
|
|
52
54
|
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
53
55
|
else
|
|
54
|
-
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.
|
|
56
|
+
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.2", "< 5.0.0.0"])
|
|
55
57
|
s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
56
58
|
s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
57
59
|
s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
@@ -59,7 +61,7 @@ Gem::Specification.new do |s|
|
|
|
59
61
|
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
60
62
|
end
|
|
61
63
|
else
|
|
62
|
-
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.
|
|
64
|
+
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.2", "< 5.0.0.0"])
|
|
63
65
|
s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
64
66
|
s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
65
67
|
s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# Copyright (c) 2020-2021 Andy Maleh
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
# a copy of this software and associated documentation files (the
|
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
# the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be
|
|
12
|
+
# included in all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
1
22
|
require 'fileutils'
|
|
2
23
|
require 'os'
|
|
3
24
|
|
|
@@ -6,6 +27,8 @@ require 'models/glimmer/gladiator/file'
|
|
|
6
27
|
require 'models/glimmer/gladiator/command'
|
|
7
28
|
|
|
8
29
|
require 'views/glimmer/gladiator/text_editor'
|
|
30
|
+
require 'views/glimmer/gladiator/file_lookup_list'
|
|
31
|
+
require 'views/glimmer/gladiator/file_explorer_tree'
|
|
9
32
|
|
|
10
33
|
Clipboard.implementation = Clipboard::Java
|
|
11
34
|
Clipboard.copy(Clipboard.paste) # pre-initialize library to avoid slowdown during use
|
|
@@ -57,7 +80,7 @@ module Glimmer
|
|
|
57
80
|
pane_count && pane_count > 1
|
|
58
81
|
end
|
|
59
82
|
|
|
60
|
-
attr_reader :find_text, :filter_text, :
|
|
83
|
+
attr_reader :find_text, :filter_text, :line_number_text, :split_orientation
|
|
61
84
|
attr_accessor :current_tab_item, :current_tab_folder, :current_text_editor, :tab_folder1, :tab_folder2, :maximized_pane, :maximized_editor
|
|
62
85
|
alias maximized_pane? maximized_pane
|
|
63
86
|
alias maximized_editor? maximized_editor
|
|
@@ -102,7 +125,7 @@ module Glimmer
|
|
|
102
125
|
#
|
|
103
126
|
after_body {
|
|
104
127
|
observe(project_dir, 'children') do
|
|
105
|
-
select_tree_item unless
|
|
128
|
+
@file_explorer_tree.select_tree_item unless Gladiator.startup
|
|
106
129
|
end
|
|
107
130
|
observe(project_dir, 'selected_child') do |selected_file|
|
|
108
131
|
if selected_file
|
|
@@ -114,7 +137,7 @@ module Glimmer
|
|
|
114
137
|
}
|
|
115
138
|
body_root.pack_same_size
|
|
116
139
|
end
|
|
117
|
-
select_tree_item unless
|
|
140
|
+
@file_explorer_tree.select_tree_item unless Gladiator.startup
|
|
118
141
|
found_tab_item = selected_tab_item
|
|
119
142
|
if found_tab_item
|
|
120
143
|
@current_tab_folder.swt_widget.setSelection(found_tab_item)
|
|
@@ -442,28 +465,8 @@ module Glimmer
|
|
|
442
465
|
}
|
|
443
466
|
}
|
|
444
467
|
|
|
445
|
-
@file_lookup_list =
|
|
468
|
+
@file_lookup_list = file_lookup_list(gladiator: self, foreground_color: @default_foreground) {
|
|
446
469
|
layout_data :fill, :fill, true, true
|
|
447
|
-
#visible bind(self, 'project_dir.filter') {|f| !!f}
|
|
448
|
-
selection bind(project_dir, :filtered_path)
|
|
449
|
-
foreground @default_foreground
|
|
450
|
-
on_mouse_up {
|
|
451
|
-
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
|
452
|
-
}
|
|
453
|
-
on_key_pressed { |key_event|
|
|
454
|
-
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
455
|
-
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
|
456
|
-
@current_text_editor&.text_widget&.setFocus
|
|
457
|
-
end
|
|
458
|
-
}
|
|
459
|
-
drag_source(DND::DROP_COPY) {
|
|
460
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
461
|
-
on_drag_set_data { |event|
|
|
462
|
-
Gladiator.drag = true
|
|
463
|
-
list = event.widget.getControl
|
|
464
|
-
event.data = list.getSelection.first
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
470
|
}
|
|
468
471
|
}
|
|
469
472
|
|
|
@@ -503,84 +506,8 @@ module Glimmer
|
|
|
503
506
|
text 'File Explorer'
|
|
504
507
|
height display.bounds.height
|
|
505
508
|
|
|
506
|
-
@
|
|
509
|
+
@file_explorer_tree = file_explorer_tree(gladiator: self, foreground_color: @default_foreground) {
|
|
507
510
|
layout_data :fill, :fill, true, true
|
|
508
|
-
#visible bind(self, 'project_dir.filter') {|f| !f}
|
|
509
|
-
items bind(self, :project_dir), tree_properties(children: :children, text: :name)
|
|
510
|
-
foreground @default_foreground
|
|
511
|
-
drag_source(DND::DROP_COPY) {
|
|
512
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
513
|
-
on_drag_set_data { |event|
|
|
514
|
-
Gladiator.drag = true
|
|
515
|
-
tree = event.widget.getControl
|
|
516
|
-
tree_item = tree.getSelection.first
|
|
517
|
-
event.data = tree_item.getData.path
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
menu {
|
|
521
|
-
@open_menu_item = menu_item {
|
|
522
|
-
text 'Open'
|
|
523
|
-
on_widget_selected {
|
|
524
|
-
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
menu_item(:separator)
|
|
528
|
-
menu_item {
|
|
529
|
-
text 'Delete'
|
|
530
|
-
on_widget_selected {
|
|
531
|
-
tree_item = @file_tree.swt_widget.getSelection.first
|
|
532
|
-
delete_tree_item(tree_item)
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
menu_item {
|
|
536
|
-
text 'Refresh'
|
|
537
|
-
on_widget_selected {
|
|
538
|
-
project_dir.refresh
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
menu_item {
|
|
542
|
-
text 'Rename'
|
|
543
|
-
on_widget_selected {
|
|
544
|
-
rename_selected_tree_item
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
menu_item {
|
|
548
|
-
text 'New Directory'
|
|
549
|
-
on_widget_selected {
|
|
550
|
-
add_new_directory_to_selected_tree_item
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
menu_item {
|
|
554
|
-
text 'New File'
|
|
555
|
-
on_widget_selected {
|
|
556
|
-
add_new_file_to_selected_tree_item
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
on_swt_menudetect { |event|
|
|
561
|
-
path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
|
562
|
-
@open_menu_item.swt_widget.setEnabled(!::Dir.exist?(path)) if path
|
|
563
|
-
}
|
|
564
|
-
on_mouse_up {
|
|
565
|
-
if Gladiator.drag_and_drop
|
|
566
|
-
Gladiator.drag_and_drop = false
|
|
567
|
-
else
|
|
568
|
-
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
|
569
|
-
@current_text_editor&.text_widget&.setFocus
|
|
570
|
-
end
|
|
571
|
-
}
|
|
572
|
-
on_key_pressed { |key_event|
|
|
573
|
-
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
574
|
-
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
|
575
|
-
@current_text_editor&.text_widget&.setFocus
|
|
576
|
-
end
|
|
577
|
-
}
|
|
578
|
-
on_paint_control {
|
|
579
|
-
root_item = @file_tree.swt_widget.getItems.first
|
|
580
|
-
if root_item && !root_item.getExpanded
|
|
581
|
-
root_item.setExpanded(true)
|
|
582
|
-
end
|
|
583
|
-
}
|
|
584
511
|
}
|
|
585
512
|
}
|
|
586
513
|
|
|
@@ -602,13 +529,7 @@ module Glimmer
|
|
|
602
529
|
}
|
|
603
530
|
|
|
604
531
|
}
|
|
605
|
-
|
|
606
|
-
# TODO see if you could replace some of this with Glimmer DSL/API syntax
|
|
607
|
-
@file_tree_editor = TreeEditor.new(@file_tree.swt_widget);
|
|
608
|
-
@file_tree_editor.horizontalAlignment = swt(:left);
|
|
609
|
-
@file_tree_editor.grabHorizontal = true;
|
|
610
|
-
@file_tree_editor.minimumHeight = 20;
|
|
611
|
-
|
|
532
|
+
|
|
612
533
|
}
|
|
613
534
|
|
|
614
535
|
@editor_area_composite = composite {
|
|
@@ -1058,125 +979,6 @@ module Glimmer
|
|
|
1058
979
|
async_exec { body_root.pack_same_size }
|
|
1059
980
|
end
|
|
1060
981
|
|
|
1061
|
-
def extract_tree_item_path(tree_item)
|
|
1062
|
-
return if tree_item.nil?
|
|
1063
|
-
if tree_item.getParentItem
|
|
1064
|
-
::File.join(extract_tree_item_path(tree_item.getParentItem), tree_item.getText)
|
|
1065
|
-
else
|
|
1066
|
-
project_dir.path
|
|
1067
|
-
end
|
|
1068
|
-
end
|
|
1069
|
-
|
|
1070
|
-
def select_tree_item
|
|
1071
|
-
return unless project_dir.selected_child&.name
|
|
1072
|
-
tree_items_to_select = @file_tree.depth_first_search { |ti| ti.getData.path == project_dir.selected_child.path }
|
|
1073
|
-
@file_tree.swt_widget.setSelection(tree_items_to_select)
|
|
1074
|
-
end
|
|
1075
|
-
|
|
1076
|
-
def delete_tree_item(tree_item)
|
|
1077
|
-
return if tree_item.nil?
|
|
1078
|
-
file = tree_item.getData
|
|
1079
|
-
parent_path = ::File.dirname(file.path)
|
|
1080
|
-
if file.is_a?(Gladiator::Dir)
|
|
1081
|
-
file_paths = file.all_children.select {|f| f.is_a?(Gladiator::File)}.map(&:path)
|
|
1082
|
-
file.remove_all_observers
|
|
1083
|
-
else
|
|
1084
|
-
file_paths = [file.path]
|
|
1085
|
-
end
|
|
1086
|
-
file_paths.each do |file_path|
|
|
1087
|
-
found_tab_item = find_tab_item(file_path)
|
|
1088
|
-
if found_tab_item
|
|
1089
|
-
project_dir.selected_child_path_history.delete(found_tab_item.getData('file_path'))
|
|
1090
|
-
found_tab_item.getData('proxy')&.dispose
|
|
1091
|
-
end
|
|
1092
|
-
end
|
|
1093
|
-
file.delete! # TODO consider supporting command undo/redo
|
|
1094
|
-
project_dir.refresh(async: false)
|
|
1095
|
-
parent_tree_item = @file_tree.depth_first_search {|ti| ti.getData.path == parent_path}.first
|
|
1096
|
-
@file_tree.swt_widget.showItem(parent_tree_item)
|
|
1097
|
-
parent_tree_item.setExpanded(true)
|
|
1098
|
-
rescue => e
|
|
1099
|
-
puts e.full_message
|
|
1100
|
-
end
|
|
1101
|
-
|
|
1102
|
-
def add_new_directory_to_selected_tree_item
|
|
1103
|
-
project_dir.pause_refresh
|
|
1104
|
-
tree_item = @file_tree.swt_widget.getSelection.first
|
|
1105
|
-
directory_path = extract_tree_item_path(tree_item)
|
|
1106
|
-
return if directory_path.nil?
|
|
1107
|
-
if !::Dir.exist?(directory_path)
|
|
1108
|
-
tree_item = tree_item.getParentItem
|
|
1109
|
-
directory_path = ::File.dirname(directory_path)
|
|
1110
|
-
end
|
|
1111
|
-
new_directory_path = ::File.expand_path(::File.join(directory_path, 'new_directory'))
|
|
1112
|
-
FileUtils.mkdir_p(new_directory_path)
|
|
1113
|
-
project_dir.refresh(async: false, force: true)
|
|
1114
|
-
new_tree_item = @file_tree.depth_first_search {|ti| ti.getData.path == new_directory_path}.first
|
|
1115
|
-
@file_tree.swt_widget.showItem(new_tree_item)
|
|
1116
|
-
rename_tree_item(new_tree_item)
|
|
1117
|
-
end
|
|
1118
|
-
|
|
1119
|
-
def add_new_file_to_selected_tree_item
|
|
1120
|
-
project_dir.pause_refresh
|
|
1121
|
-
tree_item = @file_tree.swt_widget.getSelection.first
|
|
1122
|
-
directory_path = extract_tree_item_path(tree_item)
|
|
1123
|
-
if !::Dir.exist?(directory_path)
|
|
1124
|
-
tree_item = tree_item.getParentItem
|
|
1125
|
-
directory_path = ::File.dirname(directory_path)
|
|
1126
|
-
end
|
|
1127
|
-
new_file_path = ::File.expand_path(::File.join(directory_path, 'new_file'))
|
|
1128
|
-
FileUtils.touch(new_file_path)
|
|
1129
|
-
# TODO look into refreshing only the parent directory to avoid slowdown
|
|
1130
|
-
project_dir.refresh(async: false, force: true)
|
|
1131
|
-
new_tree_item = @file_tree.depth_first_search {|ti| ti.getData.path == new_file_path}.first
|
|
1132
|
-
@file_tree.swt_widget.showItem(new_tree_item)
|
|
1133
|
-
rename_tree_item(new_tree_item, true)
|
|
1134
|
-
end
|
|
1135
|
-
|
|
1136
|
-
def rename_selected_tree_item
|
|
1137
|
-
project_dir.pause_refresh
|
|
1138
|
-
tree_item = @file_tree.swt_widget.getSelection.first
|
|
1139
|
-
rename_tree_item(tree_item)
|
|
1140
|
-
end
|
|
1141
|
-
|
|
1142
|
-
def rename_tree_item(tree_item, new_file = false)
|
|
1143
|
-
original_file = tree_item.getData
|
|
1144
|
-
current_file = project_dir.selected_child_path == original_file.path
|
|
1145
|
-
found_tab_item = find_tab_item(original_file.path)
|
|
1146
|
-
found_text_editor = found_tab_item&.getData('text_editor')
|
|
1147
|
-
@file_tree.edit_tree_item(
|
|
1148
|
-
tree_item,
|
|
1149
|
-
after_write: -> (edited_tree_item) {
|
|
1150
|
-
file = edited_tree_item.getData
|
|
1151
|
-
file_path = file.path
|
|
1152
|
-
file.name
|
|
1153
|
-
if ::File.file?(file_path)
|
|
1154
|
-
if new_file
|
|
1155
|
-
project_dir.selected_child_path = file_path
|
|
1156
|
-
else
|
|
1157
|
-
found_text_editor&.file = file
|
|
1158
|
-
found_tab_item&.setData('file', file)
|
|
1159
|
-
found_tab_item&.setData('file_path', file.path)
|
|
1160
|
-
found_tab_item&.setText(file.name)
|
|
1161
|
-
body_root.pack_same_size
|
|
1162
|
-
if current_file
|
|
1163
|
-
project_dir.selected_child_path = file_path
|
|
1164
|
-
else
|
|
1165
|
-
selected_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
1166
|
-
end
|
|
1167
|
-
async_exec {
|
|
1168
|
-
@file_tree.swt_widget.showItem(edited_tree_item)
|
|
1169
|
-
}
|
|
1170
|
-
end
|
|
1171
|
-
end
|
|
1172
|
-
project_dir.resume_refresh
|
|
1173
|
-
},
|
|
1174
|
-
after_cancel: -> {
|
|
1175
|
-
project_dir.resume_refresh
|
|
1176
|
-
}
|
|
1177
|
-
)
|
|
1178
|
-
end
|
|
1179
|
-
|
|
1180
982
|
def extract_char(event)
|
|
1181
983
|
event.keyCode.chr
|
|
1182
984
|
rescue => e
|
|
@@ -1360,8 +1162,8 @@ module Glimmer
|
|
|
1360
1162
|
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
|
1361
1163
|
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
|
1362
1164
|
end
|
|
1363
|
-
select_tree_item
|
|
1364
|
-
|
|
1165
|
+
@file_explorer_tree.select_tree_item
|
|
1166
|
+
@file_explorer_tree.swt_widget.setFocus
|
|
1365
1167
|
elsif key_event.keyCode == swt(:esc)
|
|
1366
1168
|
if current_text_editor
|
|
1367
1169
|
project_dir.selected_child_path = current_text_editor.file.path
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Copyright (c) 2020-2021 Andy Maleh
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
# a copy of this software and associated documentation files (the
|
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
# the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be
|
|
12
|
+
# included in all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
22
|
+
module Glimmer
|
|
23
|
+
class Gladiator
|
|
24
|
+
class FileExplorerTree
|
|
25
|
+
include Glimmer::UI::CustomWidget
|
|
26
|
+
|
|
27
|
+
options :gladiator, :foreground_color
|
|
28
|
+
|
|
29
|
+
body {
|
|
30
|
+
tree {
|
|
31
|
+
#visible bind(self, 'project_dir.filter') {|f| !f}
|
|
32
|
+
items bind(self, :project_dir), tree_properties(children: :children, text: :name)
|
|
33
|
+
foreground foreground_color
|
|
34
|
+
drag_source(:drop_copy) {
|
|
35
|
+
transfer :text
|
|
36
|
+
on_drag_set_data { |event|
|
|
37
|
+
Gladiator.drag = true
|
|
38
|
+
tree = event.widget.getControl
|
|
39
|
+
tree_item = tree.getSelection.first
|
|
40
|
+
event.data = tree_item.getData.path
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
menu {
|
|
45
|
+
@open_menu_item = menu_item {
|
|
46
|
+
text 'Open'
|
|
47
|
+
on_widget_selected {
|
|
48
|
+
project_dir.selected_child_path = extract_tree_item_path(swt_widget.getSelection.first)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
menu_item(:separator)
|
|
52
|
+
menu_item {
|
|
53
|
+
text 'Delete'
|
|
54
|
+
on_widget_selected {
|
|
55
|
+
tree_item = swt_widget.getSelection.first
|
|
56
|
+
delete_tree_item(tree_item)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
menu_item {
|
|
60
|
+
text 'Refresh'
|
|
61
|
+
on_widget_selected {
|
|
62
|
+
project_dir.refresh
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
menu_item {
|
|
66
|
+
text 'Rename'
|
|
67
|
+
on_widget_selected {
|
|
68
|
+
rename_selected_tree_item
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
menu_item {
|
|
72
|
+
text 'New Directory'
|
|
73
|
+
on_widget_selected {
|
|
74
|
+
add_new_directory_to_selected_tree_item
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
menu_item {
|
|
78
|
+
text 'New File'
|
|
79
|
+
on_widget_selected {
|
|
80
|
+
add_new_file_to_selected_tree_item
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
on_swt_menudetect { |event|
|
|
86
|
+
path = extract_tree_item_path(swt_widget.getSelection.first)
|
|
87
|
+
@open_menu_item.swt_widget.setEnabled(!::Dir.exist?(path)) if path
|
|
88
|
+
}
|
|
89
|
+
on_mouse_up {
|
|
90
|
+
if Gladiator.drag_and_drop
|
|
91
|
+
Gladiator.drag_and_drop = false
|
|
92
|
+
else
|
|
93
|
+
project_dir.selected_child_path = extract_tree_item_path(swt_widget.getSelection&.first)
|
|
94
|
+
gladiator.current_text_editor&.text_widget&.setFocus
|
|
95
|
+
end
|
|
96
|
+
}
|
|
97
|
+
on_key_pressed { |key_event|
|
|
98
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
99
|
+
project_dir.selected_child_path = extract_tree_item_path(swt_widget.getSelection&.first)
|
|
100
|
+
gladiator.current_text_editor&.text_widget&.setFocus
|
|
101
|
+
end
|
|
102
|
+
}
|
|
103
|
+
on_paint_control {
|
|
104
|
+
root_item = swt_widget.getItems.first
|
|
105
|
+
if root_item && !root_item.getExpanded
|
|
106
|
+
root_item.setExpanded(true)
|
|
107
|
+
end
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
def project_dir
|
|
114
|
+
gladiator.project_dir
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def current_text_editor
|
|
118
|
+
gladiator.current_text_editor
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def extract_tree_item_path(tree_item)
|
|
122
|
+
return if tree_item.nil?
|
|
123
|
+
if tree_item.getParentItem
|
|
124
|
+
::File.join(extract_tree_item_path(tree_item.getParentItem), tree_item.getText)
|
|
125
|
+
else
|
|
126
|
+
project_dir.path
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def select_tree_item
|
|
131
|
+
return unless project_dir.selected_child&.name
|
|
132
|
+
tree_items_to_select = body_root.depth_first_search { |ti| ti.getData.path == project_dir.selected_child.path }
|
|
133
|
+
swt_widget.setSelection(tree_items_to_select)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def delete_tree_item(tree_item)
|
|
137
|
+
return if tree_item.nil?
|
|
138
|
+
file = tree_item.getData
|
|
139
|
+
parent_path = ::File.dirname(file.path)
|
|
140
|
+
if file.is_a?(Gladiator::Dir)
|
|
141
|
+
file_paths = file.all_children.select {|f| f.is_a?(Gladiator::File)}.map(&:path)
|
|
142
|
+
file.remove_all_observers
|
|
143
|
+
else
|
|
144
|
+
file_paths = [file.path]
|
|
145
|
+
end
|
|
146
|
+
file_paths.each do |file_path|
|
|
147
|
+
found_tab_item = gladiator.find_tab_item(file_path)
|
|
148
|
+
if found_tab_item
|
|
149
|
+
project_dir.selected_child_path_history.delete(found_tab_item.getData('file_path'))
|
|
150
|
+
found_tab_item.getData('proxy')&.dispose
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
file.delete! # TODO consider supporting command undo/redo
|
|
154
|
+
project_dir.refresh(async: false)
|
|
155
|
+
parent_tree_item = body_root.depth_first_search {|ti| ti.getData.path == parent_path}.first
|
|
156
|
+
swt_widget.showItem(parent_tree_item)
|
|
157
|
+
parent_tree_item.setExpanded(true)
|
|
158
|
+
rescue => e
|
|
159
|
+
puts e.full_message
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def add_new_directory_to_selected_tree_item
|
|
163
|
+
project_dir.pause_refresh
|
|
164
|
+
tree_item = swt_widget.getSelection.first
|
|
165
|
+
directory_path = extract_tree_item_path(tree_item)
|
|
166
|
+
return if directory_path.nil?
|
|
167
|
+
if !::Dir.exist?(directory_path)
|
|
168
|
+
tree_item = tree_item.getParentItem
|
|
169
|
+
directory_path = ::File.dirname(directory_path)
|
|
170
|
+
end
|
|
171
|
+
new_directory_path = ::File.expand_path(::File.join(directory_path, 'new_directory'))
|
|
172
|
+
FileUtils.mkdir_p(new_directory_path)
|
|
173
|
+
project_dir.refresh(async: false, force: true)
|
|
174
|
+
new_tree_item = body_root.depth_first_search {|ti| ti.getData.path == new_directory_path}.first
|
|
175
|
+
swt_widget.showItem(new_tree_item)
|
|
176
|
+
rename_tree_item(new_tree_item)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def add_new_file_to_selected_tree_item
|
|
180
|
+
project_dir.pause_refresh
|
|
181
|
+
tree_item = swt_widget.getSelection.first
|
|
182
|
+
directory_path = extract_tree_item_path(tree_item)
|
|
183
|
+
if !::Dir.exist?(directory_path)
|
|
184
|
+
tree_item = tree_item.getParentItem
|
|
185
|
+
directory_path = ::File.dirname(directory_path)
|
|
186
|
+
end
|
|
187
|
+
new_file_path = ::File.expand_path(::File.join(directory_path, 'new_file'))
|
|
188
|
+
FileUtils.touch(new_file_path)
|
|
189
|
+
# TODO look into refreshing only the parent directory to avoid slowdown
|
|
190
|
+
project_dir.refresh(async: false, force: true)
|
|
191
|
+
new_tree_item = body_root.depth_first_search {|ti| ti.getData.path == new_file_path}.first
|
|
192
|
+
swt_widget.showItem(new_tree_item)
|
|
193
|
+
rename_tree_item(new_tree_item, true)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def rename_selected_tree_item
|
|
197
|
+
project_dir.pause_refresh
|
|
198
|
+
tree_item = swt_widget.getSelection.first
|
|
199
|
+
rename_tree_item(tree_item)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def rename_tree_item(tree_item, new_file = false)
|
|
203
|
+
original_file = tree_item.getData
|
|
204
|
+
current_file = project_dir.selected_child_path == original_file.path
|
|
205
|
+
found_tab_item = gladiator.find_tab_item(original_file.path)
|
|
206
|
+
found_text_editor = found_tab_item&.getData('text_editor')
|
|
207
|
+
body_root.edit_tree_item(
|
|
208
|
+
tree_item,
|
|
209
|
+
after_write: -> (edited_tree_item) {
|
|
210
|
+
file = edited_tree_item.getData
|
|
211
|
+
file_path = file.path
|
|
212
|
+
file.name
|
|
213
|
+
if ::File.file?(file_path)
|
|
214
|
+
if new_file
|
|
215
|
+
project_dir.selected_child_path = file_path
|
|
216
|
+
else
|
|
217
|
+
found_text_editor&.file = file
|
|
218
|
+
found_tab_item&.setData('file', file)
|
|
219
|
+
found_tab_item&.setData('file_path', file.path)
|
|
220
|
+
found_tab_item&.setText(file.name)
|
|
221
|
+
body_root.pack_same_size
|
|
222
|
+
if current_file
|
|
223
|
+
project_dir.selected_child_path = file_path
|
|
224
|
+
else
|
|
225
|
+
selected_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
226
|
+
end
|
|
227
|
+
async_exec {
|
|
228
|
+
swt_widget.showItem(edited_tree_item)
|
|
229
|
+
}
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
project_dir.resume_refresh
|
|
233
|
+
},
|
|
234
|
+
after_cancel: -> {
|
|
235
|
+
project_dir.resume_refresh
|
|
236
|
+
}
|
|
237
|
+
)
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Copyright (c) 2020-2021 Andy Maleh
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
# a copy of this software and associated documentation files (the
|
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
# the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be
|
|
12
|
+
# included in all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
22
|
+
module Glimmer
|
|
23
|
+
class Gladiator
|
|
24
|
+
class FileLookupList
|
|
25
|
+
include Glimmer::UI::CustomWidget
|
|
26
|
+
|
|
27
|
+
options :gladiator, :foreground_color
|
|
28
|
+
|
|
29
|
+
body {
|
|
30
|
+
list(:border, :h_scroll, :v_scroll) {
|
|
31
|
+
selection bind(project_dir, :filtered_path)
|
|
32
|
+
# visible bind(project_dir, 'filter') {|f| pd swt_widget&.get_shell&.get_data('proxy'); swt_widget&.get_shell&.get_data('proxy')&.pack_same_size; !!f}
|
|
33
|
+
foreground foreground_color
|
|
34
|
+
on_mouse_up {
|
|
35
|
+
project_dir.selected_child_path = swt_widget.getSelection.first
|
|
36
|
+
}
|
|
37
|
+
on_key_pressed { |key_event|
|
|
38
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
39
|
+
project_dir.selected_child_path = swt_widget.getSelection.first
|
|
40
|
+
current_text_editor&.text_widget&.setFocus
|
|
41
|
+
end
|
|
42
|
+
}
|
|
43
|
+
drag_source(DND::DROP_COPY) {
|
|
44
|
+
transfer :text
|
|
45
|
+
on_drag_set_data { |event|
|
|
46
|
+
Gladiator.drag = true
|
|
47
|
+
list = event.widget.getControl
|
|
48
|
+
event.data = list.getSelection.first
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
def project_dir
|
|
55
|
+
gladiator.project_dir
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def current_text_editor
|
|
59
|
+
gladiator.current_text_editor
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# Copyright (c) 2020-2021 Andy Maleh
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
# a copy of this software and associated documentation files (the
|
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
# the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be
|
|
12
|
+
# included in all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
1
22
|
module Glimmer
|
|
2
23
|
class Gladiator
|
|
3
24
|
class TextEditor
|
|
@@ -7,6 +28,10 @@ module Glimmer
|
|
|
7
28
|
|
|
8
29
|
attr_reader :text_proxy
|
|
9
30
|
|
|
31
|
+
before_body {
|
|
32
|
+
@font_name = display.get_font_list(nil, true).map(&:name).include?('Consolas') ? 'Consolas' : 'Courier'
|
|
33
|
+
}
|
|
34
|
+
|
|
10
35
|
after_body {
|
|
11
36
|
load_content
|
|
12
37
|
}
|
|
@@ -18,7 +43,7 @@ module Glimmer
|
|
|
18
43
|
@line_numbers_text = styled_text(:multi, :border) {
|
|
19
44
|
layout_data(:right, :fill, false, true)
|
|
20
45
|
text ' '*4
|
|
21
|
-
font name:
|
|
46
|
+
font name: @font_name, height: OS.mac? ? 15 : 12
|
|
22
47
|
background color(:widget_background)
|
|
23
48
|
foreground :dark_blue
|
|
24
49
|
top_margin 5
|
|
@@ -39,7 +64,7 @@ module Glimmer
|
|
|
39
64
|
|
|
40
65
|
@text_proxy = send(text_widget_keyword) { |the_text|
|
|
41
66
|
layout_data :fill, :fill, true, true
|
|
42
|
-
font name:
|
|
67
|
+
font name: @font_name, height: OS.mac? ? 15 : 12
|
|
43
68
|
foreground rgb(75, 75, 75)
|
|
44
69
|
focus true
|
|
45
70
|
top_margin 5
|
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.7.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andy Maleh
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-01-
|
|
11
|
+
date: 2021-01-17 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: 4.18.0.
|
|
18
|
+
version: 4.18.0.2
|
|
19
19
|
- - "<"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: 5.0.0.0
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 4.18.0.
|
|
29
|
+
version: 4.18.0.2
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 5.0.0.0
|
|
@@ -127,6 +127,8 @@ files:
|
|
|
127
127
|
- lib/models/glimmer/gladiator/dir.rb
|
|
128
128
|
- lib/models/glimmer/gladiator/file.rb
|
|
129
129
|
- lib/views/glimmer/gladiator.rb
|
|
130
|
+
- lib/views/glimmer/gladiator/file_explorer_tree.rb
|
|
131
|
+
- lib/views/glimmer/gladiator/file_lookup_list.rb
|
|
130
132
|
- lib/views/glimmer/gladiator/text_editor.rb
|
|
131
133
|
homepage: http://github.com/AndyObtiva/glimmer-cs-gladiator
|
|
132
134
|
licenses:
|