Added commit message menu, other fixes
[ugit.git] / ugitlibs / qtutils.py
blob0cff2f758effbf3ddd04cbf4345c867062e5bbc0
1 from PyQt4 import QtGui
2 from PyQt4.QtGui import QClipboard
3 from PyQt4.QtGui import QFileDialog
4 from PyQt4.QtGui import QIcon
5 from PyQt4.QtGui import QListWidgetItem
6 from PyQt4.QtGui import QMessageBox
7 from PyQt4.QtGui import QPixmap
8 from views import GitCommandDialog
10 def create_listwidget_item(text, filename):
11 icon = QIcon(QPixmap(filename))
12 item = QListWidgetItem()
13 item.setIcon(icon)
14 item.setText(text)
15 return item
17 def information(parent, title, message):
18 '''Launches a QMessageBox information with the
19 provided title and message.'''
20 QMessageBox.information(parent, title, message)
22 def get_selected_row(list_widget):
23 '''Returns a(row_number, is_selected) tuple for a QListWidget.'''
24 row = list_widget.currentRow()
25 item = list_widget.item(row)
26 selected = item is not None and item.isSelected()
27 return(row, selected)
29 def get_selection_from_list(list_widget, items):
30 '''Returns an array of model items that correspond to
31 the selected QListWidget indices.'''
32 selected = []
33 for idx in range(list_widget.count()):
34 item = list_widget.item(idx)
35 if item.isSelected():
36 selected.append(items[idx])
37 return selected
39 def open_dialog(parent, title, filename=None):
40 qstr = QFileDialog.getOpenFileName(
41 parent, title, filename)
42 return str(qstr)
44 def save_dialog(parent, title, filename=None):
45 qstr = QFileDialog.getSaveFileName(
46 parent, title, filename)
47 return str(qstr)
49 def dir_dialog(parent, title, directory):
50 directory = QFileDialog.getExistingDirectory(
51 parent, title, directory)
52 return str(directory)
54 def qapp(): return QtGui.qApp
56 def question(parent, title, message, default=True):
57 '''Launches a QMessageBox question with the provided title and message.
58 Passing "default=False" will make "No" the default choice.'''
59 yes = QMessageBox.Yes
60 no = QMessageBox.No
61 buttons = yes | no
63 if default:
64 default = yes
65 else:
66 default = no
68 result = QMessageBox.question(parent,
69 title, message, buttons, default)
70 return result == QMessageBox.Yes
72 def set_clipboard(text):
73 qapp().clipboard().setText(text, QClipboard.Clipboard)
74 qapp().clipboard().setText(text, QClipboard.Selection)
76 def show_command(parent, output):
77 if not output: return
78 dialog = GitCommandDialog(parent, output=output)
79 dialog.show()
80 dialog.exec_()