~ubuntu-branches/ubuntu/intrepid/git-core/intrepid-updates

« back to all changes in this revision

Viewing changes to git-gui/lib/browser.tcl

  • Committer: Package Import Robot
  • Author(s): Gerrit Pape
  • Date: 2007-10-04 08:27:01 UTC
  • mfrom: (1.1.23)
  • Revision ID: package-import@ubuntu.com-20071004082701-rsd058ontoqz4i30
Tags: 1:1.5.3.4-1
new upstream point release (closes: #445188).

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
class browser {
5
5
 
 
6
image create photo ::browser::img_parent  -data {R0lGODlhEAAQAIUAAPwCBBxSHBxOHMTSzNzu3KzCtBRGHCSKFIzCjLzSxBQ2FAxGHDzCLCyeHBQ+FHSmfAwuFBxKLDSCNMzizISyjJzOnDSyLAw+FAQSDAQeDBxWJAwmDAQOBKzWrDymNAQaDAQODAwaDDyKTFSyXFTGTEy6TAQCBAQKDAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ1QIBwSCwaj0hiQCBICpcDQsFgGAaIguhhi0gohIsrQEDYMhiNrRfgeAQC5fMCAolIDhD2hFI5WC4YRBkaBxsOE2l/RxsHHA4dHmkfRyAbIQ4iIyQlB5NFGCAACiakpSZEJyinTgAcKSesACorgU4mJ6uxR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=}
 
7
image create photo ::browser::img_rblob   -data {R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJSWjPz+/Ozq7GxqbJyanPT29HRydMzOzDQyNIyKjERCROTi3Pz69PTy7Pzy7PTu5Ozm3LyqlJyWlJSSjJSOhOzi1LyulPz27PTq3PTm1OzezLyqjIyKhJSKfOzaxPz29OzizLyidIyGdIyCdOTOpLymhOzavOTStMTCtMS+rMS6pMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIAQECgajcNkQMBkDgKEQFK4LFgLhkMBIVUKroWEYlEgMLxbBKLQUBwc52HgAQ4LBo049atWQyIPA3pEdFcQEhMUFYNVagQWFxgZGoxfYRsTHB0eH5UJCJAYICEinUoPIxIcHCQkIiIllQYEGCEhJicoKYwPmiQeKisrKLFKLCwtLi8wHyUlMYwM0tPUDH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=}
 
8
image create photo ::browser::img_xblob   -data {R0lGODlhEAAQAIYAAPwCBFRWVFxaXNza3OTi3Nze3Ly2tJyanPz+/Ozq7GxubNzSxMzOzMTGxHRybDQyNLy+vHRydHx6fKSipISChIyKjGxqbERCRCwuLLy6vGRiZExKTCQiJAwKDLSytLy2rJSSlHx+fDw6PKyqrBQWFPTu5Ozm3LyulLS2tCQmJAQCBPTq3Ozi1MSynCwqLAQGBOTazOzizOzezLyqjBweHNzSvOzaxKyurHRuZNzOtLymhDw+PIyCdOzWvOTOpLyidNzKtOTStLyifMTCtMS+rLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAEChYeGg4oCAwQFjgYBBwGKggEECJkICQoIkwADCwwNDY2mDA4Lng8QDhESsLARExQVDhYXGBkWExIaGw8cHR4SCQQfFQ8eFgUgIQEiwiMSBMYfGB4atwEXDyQd0wQlJicPKAHoFyIpJCoeDgMrLC0YKBsX6i4kL+4OMDEyZijr5oLGNxUqUCioEcPGDAwjPNyI6MEDChQjcOSwsUDHgw07RIgI4KCkAgs8cvTw8eOBogAxQtXIASTISiEuBwUYMoRIixYnZggpUgTDywdIkWJIitRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7}
 
9
image create photo ::browser::img_tree    -data {R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=}
 
10
image create photo ::browser::img_symlink -data {R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7}
 
11
image create photo ::browser::img_unknown -data {R0lGODlhEAAQAIUAAPwCBFxaXIyKjNTW1Nze3LS2tJyanER2RGS+VPz+/PTu5GxqbPz69BQ6BCxeLFSqRPT29HRydMzOzDQyNERmPKSypCRWHIyKhERCRDyGPKz2nESiLBxGHCyCHGxubPz6/PTy7Ozi1Ly2rKSipOzm3LyqlKSWhCRyFOzizLymhNTKtNzOvOzaxOTStPz27OzWvOTOpLSupLyedMS+rMS6pMSulLyqjLymfLyifAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAamQIAQECgajcOkYEBoDgoBQyAJOCCuiENCsWBIh9aGw9F4HCARiXciRDQoBUnlYRlcIgsMG5CxXAgMGhscBRAEBRd7AB0eBBoIgxUfICEiikSPgyMMIAokJZcBkBybJgomIaBJAZoMpyCmqkMBFCcVCrgKKAwpoSorKqchKCwtvasIFBIhLiYvLzDHsxQNMcMKLDAwMqEz3jQ1NTY3ONyrE+jp6hN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7}
 
12
 
6
13
field w
7
14
field browser_commit
8
15
field browser_path
13
20
 
14
21
field ls_buf     {}; # Buffered record output from ls-tree
15
22
 
16
 
constructor new {commit} {
 
23
constructor new {commit {path {}}} {
17
24
        global cursor_ptr M1B
18
25
        make_toplevel top w
19
26
        wm title $top "[appname] ([reponame]): File Browser"
20
27
 
21
28
        set browser_commit $commit
22
 
        set browser_path $browser_commit:
 
29
        set browser_path $browser_commit:$path
23
30
 
24
31
        label $w.path \
25
32
                -textvariable @browser_path \
40
47
                -width 70 \
41
48
                -xscrollcommand [list $w.list.sbx set] \
42
49
                -yscrollcommand [list $w.list.sby set]
43
 
        $w_list tag conf in_sel \
44
 
                -background [$w_list cget -foreground] \
45
 
                -foreground [$w_list cget -background]
 
50
        rmsel_tag $w_list
46
51
        scrollbar $w.list.sbx -orient h -command [list $w_list xview]
47
52
        scrollbar $w.list.sby -orient v -command [list $w_list yview]
48
53
        pack $w.list.sbx -side bottom -fill x
73
78
 
74
79
        bind $w_list <Visibility> [list focus $w_list]
75
80
        set w $w_list
76
 
        _ls $this $browser_commit
 
81
        if {$path ne {}} {
 
82
                _ls $this $browser_commit:$path $path
 
83
        } else {
 
84
                _ls $this $browser_commit $path
 
85
        }
77
86
        return $this
78
87
}
79
88
 
173
182
                $w image create end \
174
183
                        -align center -padx 5 -pady 1 \
175
184
                        -name icon0 \
176
 
                        -image file_uplevel
 
185
                        -image ::browser::img_parent
177
186
                $w insert end {[Up To Parent]}
178
187
                lappend browser_files parent
179
188
        }
180
189
        lappend browser_stack [list $tree_id $name]
181
190
        $w conf -state disabled
182
191
 
183
 
        set cmd [list git ls-tree -z $tree_id]
184
 
        set fd [open "| $cmd" r]
 
192
        set fd [git_read ls-tree -z $tree_id]
185
193
        fconfigure $fd -blocking 0 -translation binary -encoding binary
186
194
        fileevent $fd readable [cb _read $fd]
187
195
}
204
212
 
205
213
                switch -- $type {
206
214
                blob {
207
 
                        set image file_mod
 
215
                        scan [lindex $info 0] %o mode
 
216
                        if {$mode == 0120000} {
 
217
                                set image ::browser::img_symlink
 
218
                        } elseif {($mode & 0100) != 0} {
 
219
                                set image ::browser::img_xblob
 
220
                        } else {
 
221
                                set image ::browser::img_rblob
 
222
                        }
208
223
                }
209
224
                tree {
210
 
                        set image file_dir
 
225
                        set image ::browser::img_tree
211
226
                        append path /
212
227
                }
213
228
                default {
214
 
                        set image file_question
 
229
                        set image ::browser::img_unknown
215
230
                }
216
231
                }
217
232
 
240
255
}
241
256
 
242
257
}
 
258
 
 
259
class browser_open {
 
260
 
 
261
field w              ; # widget path
 
262
field w_rev          ; # mega-widget to pick the initial revision
 
263
 
 
264
constructor dialog {} {
 
265
        make_toplevel top w
 
266
        wm title $top "[appname] ([reponame]): Browse Branch Files"
 
267
        if {$top ne {.}} {
 
268
                wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
 
269
        }
 
270
 
 
271
        label $w.header \
 
272
                -text {Browse Branch Files} \
 
273
                -font font_uibold
 
274
        pack $w.header -side top -fill x
 
275
 
 
276
        frame $w.buttons
 
277
        button $w.buttons.browse -text Browse \
 
278
                -default active \
 
279
                -command [cb _open]
 
280
        pack $w.buttons.browse -side right
 
281
        button $w.buttons.cancel -text {Cancel} \
 
282
                -command [list destroy $w]
 
283
        pack $w.buttons.cancel -side right -padx 5
 
284
        pack $w.buttons -side bottom -fill x -pady 10 -padx 10
 
285
 
 
286
        set w_rev [::choose_rev::new $w.rev {Revision}]
 
287
        $w_rev bind_listbox <Double-Button-1> [cb _open]
 
288
        pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5
 
289
 
 
290
        bind $w <Visibility> [cb _visible]
 
291
        bind $w <Key-Escape> [list destroy $w]
 
292
        bind $w <Key-Return> [cb _open]\;break
 
293
        tkwait window $w
 
294
}
 
295
 
 
296
method _open {} {
 
297
        if {[catch {$w_rev commit_or_die} err]} {
 
298
                return
 
299
        }
 
300
        set name [$w_rev get]
 
301
        destroy $w
 
302
        browser::new $name
 
303
}
 
304
 
 
305
method _visible {} {
 
306
        grab $w
 
307
        $w_rev focus_filter
 
308
}
 
309
 
 
310
}