3 from qobserver
import QObserver
8 class GitPushController(QObserver
):
9 def __init__(self
, model
, view
):
10 QObserver
.__init
__(self
,model
,view
)
12 self
.model_to_view('remote', 'remoteText')
13 self
.model_to_view('remotes', 'remoteList')
14 self
.model_to_view('local_branch', 'localBranchText')
15 self
.model_to_view('remote_branch', 'remoteBranchText')
16 self
.model_to_view('local_branches', 'localBranchList')
17 self
.model_to_view('remote_branches', 'remoteBranchList')
19 self
.add_signals('textChanged(const QString&)', view
.remoteText
,
20 view
.localBranchText
, view
.remoteBranchText
)
22 self
.add_signals( 'itemSelectionChanged()', view
.remoteList
,
23 view
.localBranchList
, view
.remoteBranchList
)
25 self
.add_signals('released()',
26 view
.pushButton
, view
.cancelButton
)
28 self
.connect(view
.cancelButton
, 'clicked()', view
.reject
)
30 self
.add_actions('remotes', self
.remotes
)
32 'remoteList': self
.remote_list
,
33 'localBranchList': self
.local_branch_list
,
34 'remoteBranchList': self
.remote_branch_list
,
35 'pushButton': self
.push
,
38 model
.init_branch_data()
41 if not self
.model
.get_remote():
42 errmsg
= 'ERROR: Please specify a remote.'
43 qtutils
.show_command(self
.view
, errmsg
)
46 if not self
.model
.get_remote_branch():
47 errmsg
= 'ERROR: Please specify a remote branch.'
48 qtutils
.show_command(self
.view
, errmsg
)
51 if not self
.model
.get_local_branch():
52 msg
= ('Pushing with an empty local branch '
53 + 'will remove the remote branch.\n'
55 if not qtutils
.question(self
.view
,
59 remote
= self
.model
.get_remote()
60 local_branch
= self
.model
.get_local_branch()
61 remote_branch
= self
.model
.get_remote_branch()
62 ffwd
= self
.view
.allowFFOnlyCheckBox
.isChecked()
63 tags
= self
.view
.tagsCheckBox
.isChecked()
65 status
, output
= cmds
.git_push(remote
,
66 local_branch
, remote_branch
,
69 qtutils
.show_command(self
.view
, output
)
73 def remotes(self
, widget
):
75 for remote
in self
.model
.get_remotes():
76 url
= cmds
.git_remote_url(remote
)
77 display
= '%s\t(%s %s)' \
78 % (remote
, unicode(self
.tr('URL:')), url
)
79 displayed
.append(display
)
80 qtutils
.set_items(widget
,displayed
)
82 def remote_list(self
):
83 widget
= self
.view
.remoteList
84 remotes
= self
.model
.get_remotes()
85 selection
= qtutils
.get_selected_item(widget
,remotes
)
86 if not selection
: return
87 self
.model
.set_remote(selection
)
88 self
.view
.remoteText
.selectAll()
90 def local_branch_list(self
):
91 branches
= self
.model
.get_local_branches()
92 widget
= self
.view
.localBranchList
93 selection
= qtutils
.get_selected_item(widget
,branches
)
94 if not selection
: return
96 self
.model
.set_local_branch(selection
)
97 self
.model
.set_remote_branch(selection
)
99 self
.view
.localBranchText
.selectAll()
100 self
.view
.remoteBranchText
.selectAll()
102 def remote_branch_list(self
):
103 widget
= self
.view
.remoteBranchList
104 branches
= self
.model
.get_remote_branches()
105 selection
= qtutils
.get_selected_item(widget
,branches
)
106 if not selection
: return
108 branch
= utils
.basename(selection
)
109 self
.model
.set_remote_branch(branch
)
110 self
.view
.remoteBranchText
.selectAll()