git-gui: handle non-standard worktree locations
[gitweb.git] / lib / option.tcl
index 40af44e3bff8e328b29a0a5b3f7457233701f853..1d55b49c9bd8182cad2066ecdb81630ca6ad24a6 100644 (file)
@@ -25,7 +25,7 @@ proc config_check_encodings {} {
 
 proc save_config {} {
        global default_config font_descs
-       global repo_config global_config
+       global repo_config global_config system_config
        global repo_config_new global_config_new
        global ui_comm_spell
 
@@ -49,7 +49,7 @@ proc save_config {} {
        foreach name [array names default_config] {
                set value $global_config_new($name)
                if {$value ne $global_config($name)} {
-                       if {$value eq $default_config($name)} {
+                       if {$value eq $system_config($name)} {
                                catch {git config --global --unset $name}
                        } else {
                                regsub -all "\[{}\]" $value {"} value
@@ -152,7 +152,7 @@ proc do_options {} {
                {i-1..99 gui.diffcontext {mc "Number of Diff Context Lines"}}
                {i-0..99 gui.commitmsgwidth {mc "Commit Message Text Width"}}
                {t gui.newbranchtemplate {mc "New Branch Name Template"}}
-               {t gui.encoding {mc "Default File Contents Encoding"}}
+               {c gui.encoding {mc "Default File Contents Encoding"}}
                } {
                set type [lindex $option 0]
                set name [lindex $option 1]
@@ -182,6 +182,7 @@ proc do_options {} {
                                pack $w.$f.$optid.v -side right -anchor e -padx 5
                                pack $w.$f.$optid -side top -anchor w -fill x
                        }
+                       c -
                        t {
                                frame $w.$f.$optid
                                label $w.$f.$optid.l -text "$text:"
@@ -194,6 +195,16 @@ proc do_options {} {
                                pack $w.$f.$optid.v -side left -anchor w \
                                        -fill x -expand 1 \
                                        -padx 5
+                               if {$type eq {c}} {
+                                       menu $w.$f.$optid.m
+                                       build_encoding_menu $w.$f.$optid.m \
+                                               [list set ${f}_config_new($name)] 1
+                                       button $w.$f.$optid.b \
+                                               -text [mc "Change"] \
+                                               -command [list popup_btn_menu \
+                                                       $w.$f.$optid.m $w.$f.$optid.b]
+                                       pack $w.$f.$optid.b -side left -anchor w
+                               }
                                pack $w.$f.$optid -side top -anchor w -fill x
                        }
                        }
@@ -273,17 +284,17 @@ proc do_options {} {
 }
 
 proc do_restore_defaults {} {
-       global font_descs default_config repo_config
+       global font_descs default_config repo_config system_config
        global repo_config_new global_config_new
 
        foreach name [array names default_config] {
-               set repo_config_new($name) $default_config($name)
-               set global_config_new($name) $default_config($name)
+               set repo_config_new($name) $system_config($name)
+               set global_config_new($name) $system_config($name)
        }
 
        foreach option $font_descs {
                set name [lindex $option 0]
-               set repo_config(gui.$name) $default_config(gui.$name)
+               set repo_config(gui.$name) $system_config(gui.$name)
        }
        apply_config