3 from PyQt4
.QtCore
import Qt
4 from PyQt4
.QtGui
import QDialog
5 from PyQt4
.QtGui
import QMainWindow
6 from PyQt4
.QtGui
import QCheckBox
7 from maingui
import Ui_maingui
8 from outputgui
import Ui_outputgui
9 from optionsgui
import Ui_optionsgui
10 from branchgui
import Ui_branchgui
11 from commitgui
import Ui_commitgui
12 from createbranchgui
import Ui_createbranchgui
13 from pushgui
import Ui_pushgui
14 from syntax
import DiffSyntaxHighlighter
15 from syntax
import LogSyntaxHighlighter
18 class View(Ui_maingui
, QMainWindow
):
19 '''The main ugit interface.'''
20 def __init__(self
, parent
=None):
21 QMainWindow
.__init
__(self
, parent
)
22 Ui_maingui
.__init
__(self
)
24 self
.staged
.setAlternatingRowColors(True)
25 self
.unstaged
.setAlternatingRowColors(True)
26 self
.set_display
= self
.display_text
.setText
27 self
.set_info
= self
.displayLabel
.setText
28 self
.action_undo
= self
.commitmsg
.undo
29 self
.action_redo
= self
.commitmsg
.redo
30 self
.action_paste
= self
.commitmsg
.paste
31 self
.action_select_all
= self
.commitmsg
.selectAll
32 # Qt does not support noun/verbs
33 self
.commit_button
.setText(qtutils
.tr('Commit@@verb'))
34 self
.commit_menu
.setTitle(qtutils
.tr('Commit@@verb'))
35 # Default to creating a new commit(i.e. not an amend commit)
36 self
.new_commit_radio
.setChecked(True)
37 self
.toolbar_show_log
= self
.toolbar
.addAction(
38 qtutils
.get_qicon('git.png'),
39 'Show/Hide Log Window')
40 self
.toolbar_show_log
.setEnabled(True)
41 self
.addToolBar(Qt
.BottomToolBarArea
, self
.toolbar
)
43 checkbox
= QCheckBox(self
)
44 checkbox
.setText(self
.tr("Horizontal Status"))
45 self
.action_vertical
= self
.toolbar
.addWidget(checkbox
)
46 self
.horizontal_checkbox
= checkbox
48 # Diff/patch syntax highlighter
49 DiffSyntaxHighlighter(self
.display_text
.document())
54 def action_copy(self
):
55 cursor
= self
.commitmsg
.textCursor()
56 selection
= cursor
.selection().toPlainText()
57 qtutils
.set_clipboard(selection
)
58 def action_delete(self
):
59 self
.commitmsg
.textCursor().removeSelectedText()
60 def reset_display(self
):
63 def copy_display(self
):
64 cursor
= self
.display_text
.textCursor()
65 selection
= cursor
.selection().toPlainText()
66 qtutils
.set_clipboard(selection
)
67 def diff_selection(self
):
68 cursor
= self
.display_text
.textCursor()
69 offset
= cursor
.position()
70 selection
= cursor
.selection().toPlainText()
71 num_selected_lines
= selection
.count('\n')
72 return offset
, selection
74 class OutputGUI(Ui_outputgui
, QDialog
):
75 '''A simple dialog to display command output.'''
76 def __init__(self
, parent
=None, output
=None):
77 QDialog
.__init
__(self
, parent
)
78 Ui_outputgui
.__init
__(self
)
80 self
.setWindowTitle(self
.tr('Git Command Output'))
81 # Syntax highlight the log window
82 LogSyntaxHighlighter(self
.output_text
.document())
83 if output
: self
.set_output(output
)
85 self
.output_text
.clear()
86 def set_output(self
, output
):
87 self
.output_text
.setText(output
)
88 def log(self
, output
):
90 cursor
= self
.output_text
.textCursor()
91 cursor
.movePosition(cursor
.End
)
92 text
= self
.output_text
93 cursor
.insertText(time
.asctime() + '\n')
94 for line
in unicode(output
).splitlines():
95 cursor
.insertText(line
+ '\n')
96 cursor
.insertText('\n')
97 cursor
.movePosition(cursor
.End
)
98 text
.setTextCursor(cursor
)
100 class BranchGUI(Ui_branchgui
, QDialog
):
101 '''A dialog for choosing branches.'''
102 def __init__(self
, parent
=None, branches
=None):
103 QDialog
.__init
__(self
, parent
)
104 Ui_branchgui
.__init
__(self
)
107 if branches
: self
.add(branches
)
110 self
.branch_combo
.clear()
111 def add(self
, branches
):
112 for branch
in branches
:
113 self
.branches
.append(branch
)
114 self
.branch_combo
.addItem(branch
)
115 def get_selected(self
):
117 if self
.exec_() == QDialog
.Accepted
:
118 return self
.branches
[self
.branch_combo
.currentIndex()]
122 class CommitGUI(Ui_commitgui
, QDialog
):
123 def __init__(self
, parent
=None, title
=None):
124 QDialog
.__init
__(self
, parent
)
125 Ui_commitgui
.__init
__(self
)
127 if title
: self
.setWindowTitle(title
)
128 # Make the list widget slighty larger
129 self
.splitter
.setSizes([ 50, 200 ])
130 DiffSyntaxHighlighter(self
.commit_text
.document(),
133 class CreateBranchGUI(Ui_createbranchgui
, QDialog
):
134 def __init__(self
, parent
=None):
135 QDialog
.__init
__(self
, parent
)
136 Ui_createbranchgui
.__init
__(self
)
139 class PushGUI(Ui_pushgui
, QDialog
):
140 def __init__(self
, parent
=None):
141 QDialog
.__init
__(self
, parent
)
142 Ui_pushgui
.__init
__(self
)
145 class OptionsGUI(Ui_optionsgui
, QDialog
):
146 def __init__(self
, parent
=None):
147 QDialog
.__init
__(self
, parent
)
148 Ui_optionsgui
.__init
__(self
)