tekkub-fugit 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +2 -2
- data/fugit.gemspec +2 -2
- data/lib/fugit/diff.rb +6 -6
- data/lib/fugit/index_list.rb +70 -32
- metadata +2 -2
data/VERSION.yml
CHANGED
data/fugit.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{fugit}
|
3
|
-
s.version = "0.0.
|
3
|
+
s.version = "0.0.2"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Tekkub"]
|
7
|
-
s.date = %q{2009-02-
|
7
|
+
s.date = %q{2009-02-11}
|
8
8
|
s.default_executable = %q{fugit}
|
9
9
|
s.description = %q{A cross-platform replacement for git-gui based on wxruby}
|
10
10
|
s.email = %q{tekkub@gmail.com}
|
data/lib/fugit/diff.rb
CHANGED
@@ -7,6 +7,7 @@ module Fugit
|
|
7
7
|
self.set_font(Font.new(8, FONTFAMILY_TELETYPE, FONTSTYLE_NORMAL, FONTWEIGHT_NORMAL))
|
8
8
|
|
9
9
|
@list = TreeCtrl.new(self, ID_ANY, nil, nil, NO_BORDER|TR_MULTIPLE|TR_HIDE_ROOT|TR_FULL_ROW_HIGHLIGHT|TR_NO_LINES)
|
10
|
+
@root = @list.add_root("root")
|
10
11
|
@list.hide
|
11
12
|
|
12
13
|
@list_menu = Menu.new
|
@@ -26,7 +27,6 @@ module Fugit
|
|
26
27
|
evt_tree_item_activated(@list.get_id, :on_double_click)
|
27
28
|
|
28
29
|
register_for_message(:commit_saved, :clear)
|
29
|
-
register_for_message(:index_changed, :clear)
|
30
30
|
register_for_message(:diff_clear, :clear)
|
31
31
|
register_for_message(:diff_set, :set_diff)
|
32
32
|
register_for_message(:diff_raw, :change_value)
|
@@ -41,13 +41,13 @@ module Fugit
|
|
41
41
|
@text.hide
|
42
42
|
@list.hide
|
43
43
|
|
44
|
-
@list.
|
45
|
-
|
44
|
+
@list.delete_children(@root)
|
45
|
+
|
46
46
|
chunks.each do |chunk|
|
47
47
|
diff = header + "\n" + chunk
|
48
48
|
diff = diff + "\n" if diff[-1..-1] != "\n" # git bitches if we don't have a proper newline at the end of the diff
|
49
49
|
chunk.split("\n").each do |line|
|
50
|
-
id = @list.append_item(root, line.gsub("\t", " "), -1, -1, [diff, type])
|
50
|
+
id = @list.append_item(@root, line.gsub("\t", " "), -1, -1, [diff, type])
|
51
51
|
|
52
52
|
color = case line[0..0]
|
53
53
|
when "+"
|
@@ -91,7 +91,7 @@ module Fugit
|
|
91
91
|
def on_item_menu_request(event)
|
92
92
|
i = event.get_item
|
93
93
|
@menu_data = nil
|
94
|
-
unless @
|
94
|
+
unless @root == i
|
95
95
|
@menu_data = @list.get_item_data(i)
|
96
96
|
@list_menu.set_label(@menu_stage_chunk.get_id, (@menu_data[1] == :staged ? "Unstage chunk" : "Stage chunk"))
|
97
97
|
@list.popup_menu(@list_menu)
|
@@ -104,7 +104,7 @@ module Fugit
|
|
104
104
|
|
105
105
|
def on_double_click(event)
|
106
106
|
i = event.get_item
|
107
|
-
apply_diff(*@list.get_item_data(i)) unless @
|
107
|
+
apply_diff(*@list.get_item_data(i)) unless @root == i
|
108
108
|
end
|
109
109
|
|
110
110
|
def apply_diff(diff, type)
|
data/lib/fugit/index_list.rb
CHANGED
@@ -17,6 +17,12 @@ module Fugit
|
|
17
17
|
imagelist << get_icon("script.png")
|
18
18
|
@index.set_image_list(imagelist)
|
19
19
|
|
20
|
+
root = @index.add_root("root")
|
21
|
+
@unstaged = @index.append_item(root, "Unstaged", 0)
|
22
|
+
@staged = @index.append_item(root, "Staged", 1)
|
23
|
+
@index.set_item_bold(@unstaged)
|
24
|
+
@index.set_item_bold(@staged)
|
25
|
+
|
20
26
|
@toolbar = ToolBar.new(self, ID_ANY, nil, nil, TB_HORIZONTAL|NO_BORDER|TB_NODIVIDER)
|
21
27
|
@toolbar.set_tool_bitmap_size(Size.new(16,16))
|
22
28
|
@toolbar.add_tool(101, "Stage all", get_icon("folder_add.png"), "Stage all")
|
@@ -34,6 +40,9 @@ module Fugit
|
|
34
40
|
evt_tree_sel_changed(@index.get_id, :on_click)
|
35
41
|
evt_tree_item_activated(@index.get_id, :on_double_click)
|
36
42
|
|
43
|
+
evt_tool(101, :on_stage_all_clicked)
|
44
|
+
evt_tool(104, :on_unstage_all_clicked)
|
45
|
+
|
37
46
|
evt_tree_item_collapsing(@index.get_id) {|event| event.veto}
|
38
47
|
|
39
48
|
register_for_message(:refresh, :update_tree)
|
@@ -73,24 +82,35 @@ module Fugit
|
|
73
82
|
staged.reject! {|file, sha| committed[file] == sha}
|
74
83
|
|
75
84
|
@index.hide
|
76
|
-
@index.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
@index.
|
87
|
-
|
88
|
-
|
85
|
+
selection = @index.get_selections.map {|i| @index.get_item_data(i)}
|
86
|
+
@index.delete_children(@unstaged)
|
87
|
+
@index.delete_children(@staged)
|
88
|
+
|
89
|
+
others.split("\n").each {|file| @index.append_item(@unstaged, file, 2, -1, [file, :new, :unstaged])}
|
90
|
+
modified.split("\n").each {|file| @index.append_item(@unstaged, file, 3, -1, [file, :modified, :unstaged]) unless deleted.include?(file)}
|
91
|
+
deleted.each {|file| @index.append_item(@unstaged, file, 4, -1, [file, :deleted, :unstaged])}
|
92
|
+
staged.each {|file, sha| @index.append_item(@staged, file, 5, -1, [file, :modified, :staged])}
|
93
|
+
|
94
|
+
@index.sort_children(@unstaged)
|
95
|
+
@index.sort_children(@staged)
|
96
|
+
@index.select_item(@unstaged, false)
|
97
|
+
@index.select_item(@staged, false)
|
98
|
+
|
99
|
+
to_select = []
|
100
|
+
@index.each {|i| to_select << i if selection.include?(@index.get_item_data(i))}
|
101
|
+
to_select.each {|i| @index.select_item(i)}
|
102
|
+
if to_select.size == 1
|
103
|
+
set_diff(*@index.get_item_data(to_select[0]))
|
104
|
+
else
|
105
|
+
send_message(:diff_clear)
|
89
106
|
end
|
90
107
|
|
91
108
|
@index.expand_all
|
109
|
+
@index.ensure_visible(to_select.empty? ? @unstaged : to_select[0])
|
110
|
+
@index.set_scroll_pos(HORIZONTAL, 0)
|
92
111
|
@index.show
|
93
112
|
self.enable
|
113
|
+
self.set_focus unless to_select.size == 1
|
94
114
|
end
|
95
115
|
|
96
116
|
|
@@ -100,33 +120,17 @@ module Fugit
|
|
100
120
|
i = event.get_item
|
101
121
|
return if i == 0 || !self.enabled?
|
102
122
|
|
103
|
-
if @index.
|
123
|
+
if i == @unstaged || i == @staged || @index.get_selections.size != 1
|
104
124
|
send_message(:diff_clear)
|
105
125
|
else
|
106
|
-
(
|
107
|
-
case status
|
108
|
-
when :unstaged
|
109
|
-
case change
|
110
|
-
when :new
|
111
|
-
val = File.read(file)
|
112
|
-
send_message(:diff_raw, val)
|
113
|
-
when :modified, :deleted
|
114
|
-
val = `git diff -- #{file}`
|
115
|
-
send_message(:diff_set, val, :unstaged)
|
116
|
-
else
|
117
|
-
send_message(:diff_clear)
|
118
|
-
end
|
119
|
-
when :staged
|
120
|
-
val = `git diff --cached -- #{file}`
|
121
|
-
send_message(:diff_set, val, :staged)
|
122
|
-
end
|
126
|
+
set_diff(*@index.get_item_data(i))
|
123
127
|
end
|
124
128
|
end
|
125
129
|
|
126
130
|
|
127
131
|
def on_double_click(event)
|
128
132
|
i = event.get_item
|
129
|
-
unless @
|
133
|
+
unless i == @unstaged || i == @staged
|
130
134
|
(file, change, status) = @index.get_item_data(i)
|
131
135
|
case status
|
132
136
|
when :unstaged
|
@@ -144,5 +148,39 @@ module Fugit
|
|
144
148
|
end
|
145
149
|
end
|
146
150
|
|
151
|
+
def on_stage_all_clicked(event)
|
152
|
+
children = @index.get_children(@unstaged).map {|child| @index.get_item_data(child)}
|
153
|
+
to_delete = children.reject {|file, change, status| change != :deleted}.map {|f,c,s| f}
|
154
|
+
to_add = children.map {|f,c,s| f} - to_delete
|
155
|
+
`git rm --cached "#{to_delete.join('" "')}"` unless to_delete.empty?
|
156
|
+
`git add "#{to_add.join('" "')}"` unless to_add.empty?
|
157
|
+
send_message(:index_changed)
|
158
|
+
end
|
159
|
+
|
160
|
+
def on_unstage_all_clicked(event)
|
161
|
+
children = @index.get_children(@staged).map {|child| @index.get_item_data(child)[0]}
|
162
|
+
`git reset "#{children.join('" "')}"` unless children.empty?
|
163
|
+
send_message(:index_changed)
|
164
|
+
end
|
165
|
+
|
166
|
+
def set_diff(file, change, status)
|
167
|
+
case status
|
168
|
+
when :unstaged
|
169
|
+
case change
|
170
|
+
when :new
|
171
|
+
val = File.read(file)
|
172
|
+
send_message(:diff_raw, val)
|
173
|
+
when :modified, :deleted
|
174
|
+
val = `git diff -- #{file}`
|
175
|
+
send_message(:diff_set, val, :unstaged)
|
176
|
+
else
|
177
|
+
send_message(:diff_clear)
|
178
|
+
end
|
179
|
+
when :staged
|
180
|
+
val = `git diff --cached -- #{file}`
|
181
|
+
send_message(:diff_set, val, :staged)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
147
185
|
end
|
148
186
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tekkub-fugit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tekkub
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-11 00:00:00 -08:00
|
13
13
|
default_executable: fugit
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|