1 """Provides BookmarksDialog."""
5 from PyQt4
import QtGui
6 from PyQt4
import QtCore
7 from PyQt4
.QtCore
import SIGNAL
10 from cola
import qtutils
11 from cola
import settings
12 from cola
import utils
13 from cola
.widgets
import defs
14 from cola
.widgets
import standard
17 def manage_bookmarks():
18 dlg
= BookmarksDialog(qtutils
.active_window())
24 class BookmarksDialog(standard
.Dialog
):
25 def __init__(self
, parent
):
26 standard
.Dialog
.__init
__(self
, parent
)
27 self
.model
= settings
.Settings()
30 self
.setWindowTitle(self
.tr('Bookmarks'))
31 self
.setWindowModality(QtCore
.Qt
.WindowModal
)
32 self
.layt
= QtGui
.QVBoxLayout(self
)
33 self
.layt
.setMargin(defs
.margin
)
34 self
.layt
.setSpacing(defs
.spacing
)
36 self
.bookmarks
= QtGui
.QListWidget(self
)
37 self
.bookmarks
.setAlternatingRowColors(True)
38 self
.bookmarks
.setSelectionMode(QtGui
.QAbstractItemView
41 self
.layt
.addWidget(self
.bookmarks
)
42 self
.button_layout
= QtGui
.QHBoxLayout()
44 self
.open_button
= QtGui
.QPushButton(self
)
45 self
.open_button
.setText(self
.tr('Open'))
46 self
.open_button
.setIcon(qtutils
.open_icon())
47 self
.button_layout
.addWidget(self
.open_button
)
49 self
.add_button
= QtGui
.QPushButton(self
)
50 self
.add_button
.setText(self
.tr('Add'))
51 self
.add_button
.setIcon(qtutils
.icon('add.svg'))
52 self
.button_layout
.addWidget(self
.add_button
)
54 self
.delete_button
= QtGui
.QPushButton(self
)
55 self
.delete_button
.setText(self
.tr('Delete'))
56 self
.delete_button
.setIcon(qtutils
.discard_icon())
57 self
.delete_button
.setEnabled(False)
58 self
.button_layout
.addWidget(self
.delete_button
)
59 self
.button_layout
.addStretch()
61 self
.save_button
= QtGui
.QPushButton(self
)
62 self
.save_button
.setText(self
.tr('Save'))
63 self
.save_button
.setIcon(qtutils
.save_icon())
64 self
.save_button
.setEnabled(False)
65 self
.button_layout
.addWidget(self
.save_button
)
67 self
.close_button
= QtGui
.QPushButton(self
)
68 self
.close_button
.setText(self
.tr('Close'))
69 self
.button_layout
.addWidget(self
.close_button
)
71 self
.layt
.addLayout(self
.button_layout
)
73 self
.connect(self
.open_button
, SIGNAL('clicked()'), self
.open_repo
)
74 self
.connect(self
.add_button
, SIGNAL('clicked()'), self
.add
)
75 self
.connect(self
.delete_button
, SIGNAL('clicked()'), self
.delete
)
76 self
.connect(self
.save_button
, SIGNAL('clicked()'), self
.save
)
77 self
.connect(self
.close_button
, SIGNAL('clicked()'), self
.accept
)
78 self
.connect(self
.bookmarks
, SIGNAL('itemSelectionChanged()'),
79 self
.item_selection_changed
)
81 self
.update_bookmarks()
83 def update_bookmarks(self
):
84 self
.bookmarks
.clear()
85 self
.bookmarks
.addItems(self
.model
.bookmarks
)
88 return qtutils
.selection_list(self
.bookmarks
, self
.model
.bookmarks
)
90 def item_selection_changed(self
):
91 has_selection
= bool(self
.selection())
92 self
.delete_button
.setEnabled(has_selection
)
95 """Saves the bookmarks settings and exits"""
97 qtutils
.information("Bookmarks Saved")
98 self
.save_button
.setEnabled(False)
101 path
, ok
= qtutils
.prompt('Path to git repository:',
102 title
='Enter Git Repository',
103 text
=core
.decode(os
.getcwd()))
106 self
.model
.bookmarks
.append(path
)
107 self
.update_bookmarks()
111 """Opens a new git-cola session on a bookmark"""
112 for repo
in self
.selection():
113 utils
.fork([sys
.executable
, sys
.argv
[0], '--repo', repo
])
116 """Removes a bookmark from the bookmarks list"""
117 selection
= self
.selection()
120 for repo
in selection
:
121 self
.model
.remove_bookmark(repo
)
122 self
.update_bookmarks()
123 self
.save_button
.setEnabled(True)