2 from PyQt4
.QtGui
import QDialog
6 from qobserver
import QObserver
7 from views
import PushGUI
9 def push_branches(model
, parent
):
10 model
= model
.clone(init
=False)
11 view
= PushGUI(parent
)
12 controller
= PushController(model
,view
)
14 return view
.exec_() == QDialog
.Accepted
16 class PushController(QObserver
):
17 def __init__(self
, model
, view
):
18 QObserver
.__init
__(self
,model
,view
)
20 self
.model_to_view('remote', 'remoteText')
21 self
.model_to_view('remotes', 'remoteList')
22 self
.model_to_view('local_branch', 'localBranchText')
23 self
.model_to_view('local_branches', 'localBranchList')
24 self
.model_to_view('remote_branch', 'remoteBranchText')
25 self
.model_to_view('remote_branches', 'remoteBranchList')
27 self
.add_actions('remotes', self
.remotes
)
29 self
.add_signals('textChanged(const QString&)',
32 view
.remoteBranchText
)
33 self
.add_signals('itemClicked(QListWidgetItem *)',
36 view
.remoteBranchList
)
37 self
.add_signals('itemSelectionChanged()',
40 view
.remoteBranchList
)
41 self
.add_signals('released()',
46 remoteList
= self
.remote_list
,
47 localBranchList
= self
.local_branch_list
,
48 remoteBranchList
= self
.remote_branch_list
,
49 pushButton
= self
.push
,
52 self
.connect(view
.cancelButton
, 'released()', view
.reject
)
53 model
.notify_observers(
54 'remotes','local_branches','remote_branches')
57 if not self
.model
.get_remote():
58 errmsg
= self
.tr('No repository selected.')
59 qtutils
.show_output(self
.view
, errmsg
)
62 if not self
.model
.get_remote_branch():
63 errmsg
= self
.tr('Please supply a branch name.')
64 qtutils
.show_output(self
.view
, errmsg
)
67 if not self
.model
.get_local_branch():
68 msg
= self
.tr('Pushing with an empty local branch '
69 + 'will remove the remote branch.\n'
71 if not qtutils
.question(self
.view
, self
.tr('warning'), msg
):
74 remote
= self
.model
.get_remote()
75 local_branch
= self
.model
.get_local_branch()
76 remote_branch
= self
.model
.get_remote_branch()
77 ffwd
= self
.view
.allowFFOnlyCheckBox
.isChecked()
78 tags
= self
.view
.tagsCheckBox
.isChecked()
80 status
, output
= self
.model
.push(remote
,
81 local_branch
, remote_branch
,
84 qtutils
.show_output(self
.view
, output
)
88 def remotes(self
, widget
):
90 for remote
in self
.model
.get_remotes():
91 url
= self
.model
.remote_url(remote
)
92 display
= '%s\t(%s %s)' \
93 % (remote
, unicode(self
.tr('URL:')), url
)
94 displayed
.append(display
)
95 qtutils
.set_items(widget
,displayed
)
97 def remote_list(self
,*rest
):
98 widget
= self
.view
.remoteList
99 remotes
= self
.model
.get_remotes()
100 selection
= qtutils
.get_selected_item(widget
,remotes
)
101 if not selection
: return
102 self
.model
.set_remote(selection
)
103 self
.view
.remoteText
.selectAll()
105 def local_branch_list(self
,*rest
):
106 branches
= self
.model
.get_local_branches()
107 widget
= self
.view
.localBranchList
108 selection
= qtutils
.get_selected_item(widget
,branches
)
109 if not selection
: return
111 self
.model
.set_local_branch(selection
)
112 self
.model
.set_remote_branch(selection
)
114 self
.view
.localBranchText
.selectAll()
115 self
.view
.remoteBranchText
.selectAll()
117 def remote_branch_list(self
,*rest
):
118 widget
= self
.view
.remoteBranchList
119 branches
= self
.model
.get_remote_branches()
120 selection
= qtutils
.get_selected_item(widget
,branches
)
121 if not selection
: return
123 branch
= utils
.basename(selection
)
124 self
.model
.set_remote_branch(branch
)
125 self
.view
.remoteBranchText
.selectAll()