# git-gui branch (create/delete) support
# Copyright (C) 2006, 2007 Shawn Pearce

proc load_all_heads {} {
	global some_heads_tracking

	set rh refs/heads
	set rh_len [expr {[string length $rh] + 1}]
	set all_heads [list]
	set fd [git_read for-each-ref --format=%(refname) $rh]
	fconfigure $fd -translation binary -encoding utf-8
	while {[gets $fd line] > 0} {
		if {!$some_heads_tracking || ![is_tracking_branch $line]} {
			lappend all_heads [string range $line $rh_len end]
		}
	}
	close $fd

	return [lsort $all_heads]
}

proc load_all_tags {} {
	set all_tags [list]
	set fd [git_read for-each-ref \
		--sort=-taggerdate \
		--format=%(refname) \
		refs/tags]
	fconfigure $fd -translation binary -encoding utf-8
	while {[gets $fd line] > 0} {
		if {![regsub ^refs/tags/ $line {} name]} continue
		lappend all_tags $name
	}
	close $fd
	return $all_tags
}

proc radio_selector {varname value args} {
	upvar #0 $varname var
	set var $value
}
