def apply_matches(self, match_tuple): self.match_tuple = match_tuple matched_refs, matched_paths, dirs = match_tuple QStandardItem = QtGui.QStandardItem file_icon = qtutils.file_icon() dir_icon = qtutils.dir_icon() git_icon = qtutils.git_icon() matched_text = self.matched_text items = [] for ref in matched_refs: item = QStandardItem() item.setText(ref) item.setIcon(git_icon) items.append(item) if matched_paths and (not matched_text or matched_text in '--'): item = QStandardItem() item.setText('--') item.setIcon(file_icon) items.append(item) for match in matched_paths: item = QStandardItem() item.setText(match) if match in dirs: item.setIcon(dir_icon) else: item.setIcon(file_icon) items.append(item) self.clear() self.invisibleRootItem().appendRows(items)
def apply_matches(self, match_tuple): self.match_tuple = match_tuple matched_refs, matched_paths, dirs = match_tuple QStandardItem = QtGui.QStandardItem dir_icon = qtutils.dir_icon() git_icon = qtutils.git_icon() items = [] for ref in matched_refs: item = QStandardItem() item.setText(ref) item.setIcon(git_icon) items.append(item) for match in matched_paths: item = QStandardItem() item.setText(match) if match in dirs: item.setIcon(dir_icon) else: item.setIcon(self.icon_from_filename(match)) items.append(item) self.clear() self.invisibleRootItem().appendRows(items) self.emit(SIGNAL('updated()'))
def refresh(self): icon = qtutils.dir_icon() settings = self.settings items = [BookmarksTreeWidgetItem(path, icon) for path in settings.bookmarks] self.clear() self.addTopLevelItems(items)
def refresh(self): self.clear() settings = Settings() items = [] icon = qtutils.dir_icon() for path in settings.bookmarks + settings.recent: item = BookmarksTreeWidgetItem(path, icon) items.append(item) self.addTopLevelItems(items)
def __init__(self, path, is_dir): QtGui.QStandardItem.__init__(self) self.is_dir = is_dir self.path = path self.setEditable(False) self.setDragEnabled(False) self.setText(utils.basename(path)) if is_dir: self.setIcon(qtutils.dir_icon()) else: self.setIcon(qtutils.file_icon())
def refresh(self): self.clear() settings = Settings() items = [] icon = qtutils.dir_icon() recents = set(settings.recent) for path in settings.recent: item = BookmarksTreeWidgetItem(path, icon) items.append(item) for path in settings.bookmarks: if path in recents: # avoid duplicates continue item = BookmarksTreeWidgetItem(path, icon) items.append(item) self.addTopLevelItems(items)
def refresh(self): icon = qtutils.dir_icon() settings = self.settings # bookmarks if self.style == BOOKMARKS: items = [BookmarksTreeWidgetItem(path, icon) for path in settings.bookmarks] elif self.style == RECENT_REPOS: # recent items items = [BookmarksTreeWidgetItem(path, icon) for path in settings.recent] else: items = [] self.clear() self.addTopLevelItems(items)
def __init__(self, parent): QtGui.QStandardItemModel.__init__(self, parent) self.entries = {} self._interesting_paths = set() self._interesting_files = set() self._known_paths = set() self._dir_entries= {} self._dir_rows = collections.defaultdict(int) self.connect(self, SIGNAL('updated()'), self.refresh, Qt.QueuedConnection) model = main.model() model.add_observer(model.message_updated, self._model_updated) self.file_icon = qtutils.file_icon() self.dir_icon = qtutils.dir_icon()
def __init__(self, parent): QtGui.QStandardItemModel.__init__(self, parent) self.entries = {} self._interesting_paths = set() self._interesting_files = set() self._known_paths = set() self._dir_entries = {} self._dir_rows = collections.defaultdict(int) self.connect(self, SIGNAL('updated()'), self.refresh, Qt.QueuedConnection) model = main.model() model.add_observer(model.message_updated, self._model_updated) self.file_icon = qtutils.file_icon() self.dir_icon = qtutils.dir_icon()
def add_directory(self, parent, path): """Add a directory entry to the model.""" # Create model items row_items = self._create_row(path) # Use a standard directory icon row_items[0].setIcon(qtutils.dir_icon()) # Insert directories before file paths row = self._dir_rows.setdefault(parent, 0) parent.insertRow(row, row_items) self._dir_rows[parent] += 1 # Update the 'name' column for this entry self.entry(path).update_name() self._known_paths.add(path) return row_items[0]
def refresh(self): icon = qtutils.dir_icon() settings = self.settings # bookmarks if self.style == BOOKMARKS: items = [ BookmarksTreeWidgetItem(path, icon) for path in settings.bookmarks ] elif self.style == RECENT_REPOS: # recent items items = [ BookmarksTreeWidgetItem(path, icon) for path in settings.recent ] else: items = [] self.clear() self.addTopLevelItems(items)
def add_directory(self, parent, path): """Add a directory entry to the model.""" # Create model items row_items = self._create_row(path) # Use a standard directory icon row_items[0].setIcon(qtutils.dir_icon()) # Insert directories before file paths # TODO: have self._dir_rows's keys based on something less flaky than # QStandardItem instances. row = self._dir_rows.setdefault(id(parent), 0) parent.insertRow(row, row_items) self._dir_rows[id(parent)] += 1 # Update the 'name' column for this entry self.entry(path).update_name() self._known_paths.add(path) return row_items[0]
def __init__(self, parent): standard.Dialog.__init__(self, parent) self.setAttribute(QtCore.Qt.WA_MacMetalStyle) self.setWindowTitle(N_('Search')) self.mode_combo = QtGui.QComboBox() self.browse_button = create_toolbutton(icon=dir_icon(), tooltip=N_('Browse...')) self.query = QtGui.QLineEdit() self.start_date = QtGui.QDateEdit() self.start_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.start_date.setCalendarPopup(True) self.start_date.setDisplayFormat(N_('yyyy-MM-dd')) self.end_date = QtGui.QDateEdit() self.end_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.end_date.setCalendarPopup(True) self.end_date.setDisplayFormat(N_('yyyy-MM-dd')) self.search_button = QtGui.QPushButton() self.search_button.setText(N_('Search')) self.search_button.setDefault(True) self.max_count = QtGui.QSpinBox() self.max_count.setMinimum(5) self.max_count.setMaximum(9995) self.max_count.setSingleStep(5) self.max_count.setValue(500) self.commit_list = QtGui.QListWidget() self.commit_list.setMinimumSize(QtCore.QSize(1, 1)) self.commit_list.setAlternatingRowColors(True) self.commit_list.setSelectionMode( QtGui.QAbstractItemView.SingleSelection) self.commit_text = DiffTextEdit(self, whitespace=False) self.button_export = QtGui.QPushButton() self.button_export.setText(N_('Export Patches')) self.button_cherrypick = QtGui.QPushButton() self.button_cherrypick.setText(N_('Cherry Pick')) self.button_close = QtGui.QPushButton() self.button_close.setText(N_('Close')) self.top_layout = QtGui.QHBoxLayout() self.top_layout.setMargin(0) self.top_layout.setSpacing(defs.button_spacing) self.top_layout.addWidget(self.query) self.top_layout.addWidget(self.start_date) self.top_layout.addWidget(self.end_date) self.top_layout.addWidget(self.browse_button) self.top_layout.addWidget(self.search_button) self.top_layout.addStretch() self.top_layout.addWidget(self.mode_combo) self.top_layout.addWidget(self.max_count) self.splitter = QtGui.QSplitter() self.splitter.setHandleWidth(defs.handle_width) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setChildrenCollapsible(True) self.splitter.addWidget(self.commit_list) self.splitter.addWidget(self.commit_text) self.bottom_layout = QtGui.QHBoxLayout() self.bottom_layout.setMargin(0) self.bottom_layout.setSpacing(defs.spacing) self.bottom_layout.addWidget(self.button_export) self.bottom_layout.addWidget(self.button_cherrypick) self.bottom_layout.addStretch() self.bottom_layout.addWidget(self.button_close) self.main_layout = QtGui.QVBoxLayout() self.main_layout.setMargin(defs.margin) self.main_layout.setSpacing(defs.spacing) self.main_layout.addLayout(self.top_layout) self.main_layout.addWidget(self.splitter) self.main_layout.addLayout(self.bottom_layout) self.setLayout(self.main_layout) if self.parent(): self.resize(self.parent().width(), self.parent().height()) else: self.resize(720, 500)
def __init__(self, parent): standard.Dialog.__init__(self, parent) self.setAttribute(Qt.WA_MacMetalStyle) self.setWindowTitle(N_('Search')) self.mode_combo = QtGui.QComboBox() self.browse_button = create_toolbutton(icon=dir_icon(), tooltip=N_('Browse...')) self.query = QtGui.QLineEdit() self.start_date = QtGui.QDateEdit() self.start_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.start_date.setCalendarPopup(True) self.start_date.setDisplayFormat(N_('yyyy-MM-dd')) self.end_date = QtGui.QDateEdit() self.end_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.end_date.setCalendarPopup(True) self.end_date.setDisplayFormat(N_('yyyy-MM-dd')) self.search_button = QtGui.QPushButton() self.search_button.setText(N_('Search')) self.search_button.setDefault(True) self.max_count = QtGui.QSpinBox() self.max_count.setMinimum(5) self.max_count.setMaximum(9995) self.max_count.setSingleStep(5) self.max_count.setValue(500) self.commit_list = QtGui.QListWidget() self.commit_list.setMinimumSize(QtCore.QSize(1, 1)) self.commit_list.setAlternatingRowColors(True) self.commit_list.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.commit_text = DiffTextEdit(self, whitespace=False) self.button_export = QtGui.QPushButton() self.button_export.setText(N_('Export Patches')) self.button_cherrypick = QtGui.QPushButton() self.button_cherrypick.setText(N_('Cherry Pick')) self.button_close = QtGui.QPushButton() self.button_close.setText(N_('Close')) self.top_layout = qtutils.hbox(defs.no_margin, defs.button_spacing, self.query, self.start_date, self.end_date, self.browse_button, self.search_button, qtutils.STRETCH, self.mode_combo, self.max_count) self.splitter = qtutils.splitter(Qt.Vertical, self.commit_list, self.commit_text) self.bottom_layout = qtutils.hbox(defs.no_margin, defs.spacing, self.button_export, self.button_cherrypick, qtutils.STRETCH, self.button_close) self.main_layout = qtutils.vbox(defs.margin, defs.spacing, self.top_layout, self.splitter, self.bottom_layout) self.setLayout(self.main_layout) if self.parent(): self.resize(self.parent().width(), self.parent().height()) else: self.resize(720, 500)
def __init__(self, parent): standard.Dialog.__init__(self, parent) self.setAttribute(QtCore.Qt.WA_MacMetalStyle) self.setWindowTitle(N_("Search")) self.mode_combo = QtGui.QComboBox() self.browse_button = create_toolbutton(icon=dir_icon(), tooltip=N_("Browse...")) self.query = QtGui.QLineEdit() self.start_date = QtGui.QDateEdit() self.start_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.start_date.setCalendarPopup(True) self.start_date.setDisplayFormat(N_("yyyy-MM-dd")) self.end_date = QtGui.QDateEdit() self.end_date.setCurrentSection(QtGui.QDateTimeEdit.YearSection) self.end_date.setCalendarPopup(True) self.end_date.setDisplayFormat(N_("yyyy-MM-dd")) self.search_button = QtGui.QPushButton() self.search_button.setText(N_("Search")) self.search_button.setDefault(True) self.max_count = QtGui.QSpinBox() self.max_count.setMinimum(5) self.max_count.setMaximum(9995) self.max_count.setSingleStep(5) self.max_count.setValue(500) self.commit_list = QtGui.QListWidget() self.commit_list.setMinimumSize(QtCore.QSize(1, 1)) self.commit_list.setAlternatingRowColors(True) self.commit_list.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.commit_text = DiffTextEdit(self, whitespace=False) self.button_export = QtGui.QPushButton() self.button_export.setText(N_("Export Patches")) self.button_cherrypick = QtGui.QPushButton() self.button_cherrypick.setText(N_("Cherry Pick")) self.button_close = QtGui.QPushButton() self.button_close.setText(N_("Close")) self.top_layout = QtGui.QHBoxLayout() self.top_layout.setMargin(defs.no_margin) self.top_layout.setSpacing(defs.button_spacing) self.top_layout.addWidget(self.query) self.top_layout.addWidget(self.start_date) self.top_layout.addWidget(self.end_date) self.top_layout.addWidget(self.browse_button) self.top_layout.addWidget(self.search_button) self.top_layout.addStretch() self.top_layout.addWidget(self.mode_combo) self.top_layout.addWidget(self.max_count) self.splitter = QtGui.QSplitter() self.splitter.setHandleWidth(defs.handle_width) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setChildrenCollapsible(True) self.splitter.addWidget(self.commit_list) self.splitter.addWidget(self.commit_text) self.bottom_layout = QtGui.QHBoxLayout() self.bottom_layout.setMargin(defs.no_margin) self.bottom_layout.setSpacing(defs.spacing) self.bottom_layout.addWidget(self.button_export) self.bottom_layout.addWidget(self.button_cherrypick) self.bottom_layout.addStretch() self.bottom_layout.addWidget(self.button_close) self.main_layout = QtGui.QVBoxLayout() self.main_layout.setMargin(defs.margin) self.main_layout.setSpacing(defs.spacing) self.main_layout.addLayout(self.top_layout) self.main_layout.addWidget(self.splitter) self.main_layout.addLayout(self.bottom_layout) self.setLayout(self.main_layout) if self.parent(): self.resize(self.parent().width(), self.parent().height()) else: self.resize(720, 500)
def update_matches(self, case_sensitive): QStandardItem = QtGui.QStandardItem file_list = self.cmodel.everything() files = set(file_list) files_and_dirs = utils.add_parents(set(files)) dirs = files_and_dirs.difference(files) file_icon = qtutils.file_icon() dir_icon = qtutils.dir_icon() git_icon = qtutils.git_icon() model = self.cmodel refs = model.local_branches + model.remote_branches + model.tags matched_text = self.matched_text if matched_text: if case_sensitive: matched_refs = [r for r in refs if matched_text in r] else: matched_refs = [r for r in refs if matched_text.lower() in r.lower()] else: matched_refs = refs matched_refs.sort(cmp=self.lower_cmp) if matched_text: if case_sensitive: matched_paths = [f for f in files_and_dirs if matched_text in f] else: matched_paths = [f for f in files_and_dirs if matched_text.lower() in f.lower()] else: matched_paths = list(files_and_dirs) matched_paths.sort(cmp=self.lower_cmp) items = [] for ref in matched_refs: item = QStandardItem() item.setText(ref) item.setIcon(git_icon) items.append(item) if matched_paths and (not matched_text or matched_text in '--'): item = QStandardItem() item.setText('--') item.setIcon(file_icon) items.append(item) for match in matched_paths: item = QStandardItem() item.setText(match) if match in dirs: item.setIcon(dir_icon) else: item.setIcon(file_icon) items.append(item) self.clear() for item in items: self.appendRow(item)