Compare commits

...

2 Commits

Author SHA1 Message Date
svkalinin f26067b24f Починил push 2022-10-21 11:16:38 +03:00
svkalinin 88df8e7d47 Добавлены новые иконки 2022-10-20 16:42:42 +03:00
3 changed files with 217 additions and 9 deletions

View File

@ -12,8 +12,8 @@
namespace eval Git {
variable gitCommand
proc GetConfig {} {
global activeProject
proc GetConfig {option} {
global activeProject cfgVariables
set confOptions {
remote.origin.url
user.user
@ -21,6 +21,28 @@ namespace eval Git {
init.defaultbranch
branch.master.remote
}
if {$activeProject ne ""} {
cd $activeProject
}
set cmd exec
lappend cmd $cfgVariables(gitCommand)
lappend cmd "config"
switch $option {
all {
lappend cmd "-l"
}
default {
lappend cmd "--get"
lappend cmd "$option"
}
}
# lappend cmd $activeProject
catch $cmd pipe
foreach line [split $pipe "\n"] {
lappend res $line
}
return $res
}
proc Branches {opt} {
@ -130,10 +152,33 @@ namespace eval Git {
global cfgVariables activeProject
}
proc Push {} {
global cfgVariables activeProject
proc PushPrepare {} {
global cfgVariables activeProject gitUser gitPassword
# set cmd exec
cd $activeProject
set url [Git::GetConfig remote.origin.url]
puts $url
if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
Git::AuthorizationDialog "[::msgcat::mc "Authorization required"] [::msgcat::mc "for"] Git" $url
} else {
Git::Push $url
}
}
proc Push {url} {
global cfgVariables activeProject gitUser gitPassword
# set cmd exec
lappend cmd "$cfgVariables(gitCommand)"
cd $activeProject
lappend cmd "push"
lappend cmd "$url"
# lappend cmd "$activeProject"
puts "$cmd"
# set pipe [open "|$cfgVariables(gitCommand) $cmd" "RDWR"]
# fconfigure $pipe -buffering none -blocking no
# close $pipe
return
}
proc Merge {} {
global cfgVariables activeProject
}
@ -249,9 +294,9 @@ namespace eval Git {
$w.body.lBox delete 0 end
$w.body.lLog delete 0 end
foreach { word } [Git::Status] {
# puts $word
if [regexp -nocase -- {([\w\s])([\s\w?]+)\s../(.+?)} $word match v1 v2 fileName] {
# puts "$v1 $v2 $fileName"
puts ">>$word"
if [regexp -nocase -- {([\w\s]+)([\s\w?]+)\s(../|)(.+?)} $word match v1 v2 v3 fileName] {
puts "$v1 $v2 $fileName"
# $fr.body.t delete 1.0 end
if {$v1 ne " "} {
$w.body.lCommit insert end $fileName
@ -270,6 +315,71 @@ namespace eval Git {
# End Git commit history
}
proc AddToplevel {lbl img {win_name .auth}} {
set cmd "destroy $win_name"
if [winfo exists $win_name] {destroy $win_name}
toplevel $win_name
wm transient $win_name .
wm title $win_name [::msgcat::mc "Add record"]
# wm iconphoto $win_name tcl
ttk::label $win_name.lbl -image $img -anchor nw
set frm [ttk::labelframe $win_name.frm -text $lbl -labelanchor nw]
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
set frm_btn [ttk::frame $win_name.frm_btn ]
ttk::button $frm_btn.btn_ok -image done_20x20 -command { }
ttk::button $frm_btn.btn_cancel -command $cmd -image cancel_20x20
grid $win_name.lbl -row 0 -column 0 -sticky nsw -padx 0 -pady 1 -rowspan 2
grid $frm -row 0 -column 1 -sticky nw -padx 2 -pady 2
grid $frm_btn -row 1 -column 1 -sticky sew -padx 0 -pady 0
pack $frm_btn.btn_cancel $frm_btn.btn_ok -side right -padx 5 -pady 5
#pack $frm_btn.btn_ok -side right -padx 2
bind $win_name <Escape> $cmd
return $frm
}
proc GetAuthData {url} {
global gitUser gitPassword
# puts [.auth_win.frm.ent_name get]
# puts [.auth_win.frm.ent_pwd get]
set gitUser [.auth_win.frm.ent_name get]
set gitPassword [.auth_win.frm.ent_pwd get]
if [regexp -nocase -all -- {^(http|https)://(.+)} $url match proto address] {
puts $gitUser
puts $gitPassword
if {$gitUser ne ""} {
append repoUrl "$proto"
append repoUrl "://"
append repoUrl "$gitUser"
}
if {$gitPassword ne ""} {
append repoUrl ":$gitPassword"
append repoUrl "@$address"
}
puts $repoUrl
Git::Push $repoUrl
}
destroy .auth_win
}
proc AuthorizationDialog {txt url} {
global gitUser gitPassword
set frm [Git::AddToplevel "$txt" key_64x64 .auth_win]
wm title .auth_win [::msgcat::mc "Authorization"]
ttk::label $frm.lbl_name -text [::msgcat::mc "User name"]
ttk::entry $frm.ent_name
ttk::label $frm.lbl_pwd -text [::msgcat::mc "Password"]
ttk::entry $frm.ent_pwd
grid $frm.lbl_name -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_name -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_pwd -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_pwd -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
#set frm_btn [frame .add.frm_btn -border 0]
.auth_win.frm_btn.btn_ok configure -command "Git::GetAuthData $url"
}
proc Dialog {} {
global cfgVariables activeProject nbEditor
variable fr
@ -324,7 +434,7 @@ namespace eval Git {
-command "Git::Commit $fr.body.tCommit; Git::DialogUpdate $fr"
ttk::button $fr.body.bPush -image doneall_20x20 -compound left \
-text "[::msgcat::mc "Push changes"]" \
-command "Git::Push; Git::DialogUpdate $fr"
-command "Git::PushPrepare; Git::DialogUpdate $fr"
ttk::label $fr.body.lblLog -padding {3 3} -text "[::msgcat::mc "Commit history"]:"
listbox $fr.body.lLog -border 0 \

View File

@ -1136,3 +1136,95 @@ image create photo git_logo_20x20 -data {
pG6IsIPHB8KWb3kTSxX+xNG74FZtSJaBua7ME3ogz3rmpf8y9UCkhbYK3eJ4QAA5AZMAVcKZeYsq
+wEJrowfIBN3bgAAAABJRU5ErkJggg==
}
image create photo cancel_24x24 -data {
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TxVIqDmaQ4pChOlkQFXHUKhShQqgVWnUwufQLmrQkKS6OgmvBwY/FqoOLs64OroIg
+AHi6OSk6CIl/i8ptIjx4Lgf7+497t4BQrPCdKtnHNAN20wnE1I2tyr1vSIMERFEEVKYVZuT5RR8
x9c9Any9i/Ms/3N/jn4tbzEgIBHPspppE28QT2/aNc77xCIrKRrxOfGYSRckfuS66vEb56LLAs8U
zUx6nlgklopdrHYxK5k68RRxTNMNyheyHmuctzjrlTpr35O/MJI3Vpa5TnMYSSxiCTIkqKijjAps
xGk1SLGQpv2Ejz/q+mVyqeQqg5FjAVXoUFw/+B/87tYqTE54SZEE0PviOB8jQN8u0Go4zvex47RO
gOAzcGV0/NUmMPNJeqOjxY6AgW3g4rqjqXvA5Q4w9FRTTMWVgjSFQgF4P6NvygGDt0B4zeutvY/T
ByBDXaVugINDYLRI2es+7w519/bvmXZ/Py11cov1aNesAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI
WXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5goUDB835f/YowAAAYhJREFUSMed1T9rFUEUBfDf28Ei
a0wjiqAQEFSIWhj/YW+TBFux0u9l6XcQUqaxUBDsBEMsrDQmpnkGeSF5KZyVdd3ZmfVUw9y759y5
c89O8BsT3MI9nMc3nBiPG3iAi9jF8SQG1vCwlbiLV5gWEk+wEQtssIeXATWexqQGZ3ENHzErIH+C
u539GgdVXEx6PryAF1gsIF9NxOsKP/A9kTAkkiM/wXbAHF9wE2d6EvvalSOfYxOfQtz4iR2sDIhc
jyJHWO9caB/5OwitwDQjUseTXC6o/G27j11cwvNIOAb/kHdPUHqSYvKUwFiRJPmQQCPyGXdQDeRt
4U0qWGVMtJopAm7jXCoYBsjXcb+g/3VrhGclAmPIsyIhYf8hEx0lCqv7fpChp/KcQ7cKHT9rC+Ta
0h7FEsf/EWkEHuPRiDkvEbmKDwELeJb4bQyZKCeyiP0qLqqxDo34Gp/Ww0R8qcI+Dv6DPCcyx077
wVmOU3CI13g/wgdTbONKdPWv5sHpJi4k7mIM/uI4BbiEbyFWMDzeAAAAAElFTkSuQmCC
}
image create photo cancel_20x20 -data {
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9
kT1Iw0AcxV9TxVIqDmaQ4pChOlkQFXHUKhShQqgVWnUwufQLmrQkKS6OgmvBwY/FqoOLs64OroIg
+AHi6OSk6CIl/i8ptIjx4Lgf7+497t4BQrPCdKtnHNAN20wnE1I2tyr1vSIMERFEEVKYVZuT5RR8
x9c9Any9i/Ms/3N/jn4tbzEgIBHPspppE28QT2/aNc77xCIrKRrxOfGYSRckfuS66vEb56LLAs8U
zUx6nlgklopdrHYxK5k68RRxTNMNyheyHmuctzjrlTpr35O/MJI3Vpa5TnMYSSxiCTIkqKijjAps
xGk1SLGQpv2Ejz/q+mVyqeQqg5FjAVXoUFw/+B/87tYqTE54SZEE0PviOB8jQN8u0Go4zvex47RO
gOAzcGV0/NUmMPNJeqOjxY6AgW3g4rqjqXvA5Q4w9FRTTMWVgjSFQgF4P6NvygGDt0B4zeutvY/T
ByBDXaVugINDYLRI2es+7w519/bvmXZ/Py11cov1aNesAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI
WXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5goUDCcn79d0PAAAAMJJREFUOMvt0jFqAlEUheFPMxDQ
dGliG1HQtdgJMQtwdROyDXcggkXKKIizAsU0NzA8ZsQBC4s51ePd934O51xaPZyeau7nmOGAIpmN
sMQbNunHbg1wiD4WASjDFujhvYnDAybIMMUOrwHLcMJ3hXudK3GM8VECKJ1zbJs4hCN+w2EW8Zzx
VQe7luHdW/4v4DPcnXGJ95PItGgCHCUF5FhXFFXcClziOSngiH0JOsTqVuAAL7Ea26SofcB+qha7
1QPqD+48J+QQ8e7VAAAAAElFTkSuQmCC
}
image create photo key_64x64 -data {
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
}

View File

@ -13,6 +13,8 @@
::msgcat::mcset ru "Archive directory" "Каталог c архивами"
::msgcat::mcset ru "Archive file mask" "Маска архива"
::msgcat::mcset ru "Author" "Автор"
::msgcat::mcset ru "Authorization" "Авторизация"
::msgcat::mcset ru "Authorization required" "Требуется авторизация"
::msgcat::mcset ru "Braces" "Скобки"
::msgcat::mcset ru "Branch" "Ветка"
::msgcat::mcset ru "Quad braces" "Квадратные скобки"
@ -72,6 +74,7 @@
::msgcat::mcset ru "Editor font bold" "Шрифт редактора жирный"
::msgcat::mcset ru "Editor settings" "Настройки редактора"
::msgcat::mcset ru "Encode" "Перекодировка"
::msgcat::mcset ru "Authorisation required" "Требуется авторизация"
::msgcat::mcset ru "Error open URL" "Ошибка открытия URL"
::msgcat::mcset ru "Exit" "Выход"
::msgcat::mcset ru "File" "Файл"
@ -85,6 +88,7 @@
::msgcat::mcset ru "Find" "Найти"
::msgcat::mcset ru "Found" "Найдено"
::msgcat::mcset ru "Find in files" "Найти в файлах"
::msgcat::mcset ru "for" "для"
::msgcat::mcset ru "Font normal" "Нормальный шрифт"
::msgcat::mcset ru "Font bold" "Жирный шрифт"
::msgcat::mcset ru "FTP password" "FTP пароль"
@ -136,6 +140,7 @@
::msgcat::mcset ru "Overwrite" "Замена"
::msgcat::mcset ru "Parameters" "Параметры"
::msgcat::mcset ru "Subparameters" "Субпараметры"
::msgcat::mcset ru "Password" "Пароль"
::msgcat::mcset ru "Paste" "Вставить"
::msgcat::mcset ru "Paste from clipboard" "Вставить из буфера"
::msgcat::mcset ru "Percent" "Знак процента"
@ -197,6 +202,7 @@
::msgcat::mcset ru "Title normal" "Файл нормальный"
::msgcat::mcset ru "Title modify" "Файл изменен"
::msgcat::mcset ru "Toolbar" "Панель инструментов"
::msgcat::mcset ru "User name" "Имя пользователя"
::msgcat::mcset ru "Undo" "Отменить"
::msgcat::mcset ru "Update" "Обновить"
::msgcat::mcset ru "Untraceable file" "Неотслеживаемый файл"