mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
File list: Indicate the item being edited currently
This commit is contained in:
parent
8e93d4e45f
commit
ea3d7bf6fc
@ -186,6 +186,7 @@ class Boss(QObject):
|
||||
self.current_metadata = self.gui.current_metadata = container.mi
|
||||
self.global_undo.open_book(container)
|
||||
self.gui.update_window_title()
|
||||
self.gui.file_list.current_edited_name = None
|
||||
self.gui.file_list.build(container, preserve_state=False)
|
||||
self.gui.action_save.setEnabled(False)
|
||||
self.update_global_history_actions()
|
||||
@ -881,10 +882,13 @@ class Boss(QObject):
|
||||
break
|
||||
if name is not None and getattr(ed, 'syntax', None) == 'html':
|
||||
self.gui.preview.show(name)
|
||||
if name is not None:
|
||||
self.gui.file_list.mark_name_as_current(name)
|
||||
if ed.has_line_numbers:
|
||||
self.gui.cursor_position_widget.update_position(*ed.cursor_position)
|
||||
else:
|
||||
actions['go-to-line-number'].setEnabled(False)
|
||||
self.gui.file_list.clear_currently_edited_name()
|
||||
|
||||
def update_cursor_position(self):
|
||||
ed = self.gui.central.current_editor
|
||||
|
@ -13,7 +13,7 @@ from functools import partial
|
||||
|
||||
import sip
|
||||
from PyQt4.Qt import (
|
||||
QWidget, QTreeWidget, QGridLayout, QSize, Qt, QTreeWidgetItem, QIcon,
|
||||
QWidget, QTreeWidget, QGridLayout, QSize, Qt, QTreeWidgetItem, QIcon, QFont,
|
||||
QStyledItemDelegate, QStyle, QPixmap, QPainter, pyqtSignal, QMenu, QTimer,
|
||||
QDialogButtonBox, QDialog, QLabel, QLineEdit, QVBoxLayout, QScrollArea, QRadioButton)
|
||||
|
||||
@ -105,6 +105,7 @@ class FileList(QTreeWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QTreeWidget.__init__(self, parent)
|
||||
self.current_edited_name = None
|
||||
self.delegate = ItemDelegate(self)
|
||||
self.delegate.rename_requested.connect(self.rename_requested)
|
||||
self.setTextElideMode(Qt.ElideMiddle)
|
||||
@ -170,6 +171,29 @@ class FileList(QTreeWidget):
|
||||
if q == name:
|
||||
self.scrollToItem(c)
|
||||
|
||||
def mark_name_as_current(self, name):
|
||||
current = self.item_from_name(name)
|
||||
if current is not None:
|
||||
if self.current_edited_name is not None:
|
||||
ci = self.item_from_name(self.current_edited_name)
|
||||
if ci is not None:
|
||||
ci.setData(0, Qt.FontRole, None)
|
||||
self.current_edited_name = name
|
||||
self.mark_item_as_current(current)
|
||||
|
||||
def mark_item_as_current(self, item):
|
||||
font = QFont(self.font())
|
||||
font.setItalic(True)
|
||||
font.setBold(True)
|
||||
item.setData(0, Qt.FontRole, font)
|
||||
|
||||
def clear_currently_edited_name(self):
|
||||
if self.current_edited_name:
|
||||
ci = self.item_from_name(self.current_edited_name)
|
||||
if ci is not None:
|
||||
ci.setData(0, Qt.FontRole, None)
|
||||
self.current_edited_name = None
|
||||
|
||||
def build(self, container, preserve_state=True):
|
||||
if preserve_state:
|
||||
state = self.get_state()
|
||||
@ -325,6 +349,9 @@ class FileList(QTreeWidget):
|
||||
if preserve_state:
|
||||
self.set_state(state)
|
||||
|
||||
if self.current_edited_name:
|
||||
self.mark_item_as_current(self.current_edited_name)
|
||||
|
||||
def show_context_menu(self, point):
|
||||
item = self.itemAt(point)
|
||||
if item is None or item in set(self.categories.itervalues()):
|
||||
@ -662,7 +689,7 @@ class FileListWidget(QWidget):
|
||||
'edit_file', 'merge_requested', 'mark_requested',
|
||||
'export_requested', 'replace_requested'):
|
||||
getattr(self.file_list, x).connect(getattr(self, x))
|
||||
for x in ('delete_done', 'select_name', 'request_edit'):
|
||||
for x in ('delete_done', 'select_name', 'request_edit', 'mark_name_as_current', 'clear_currently_edited_name'):
|
||||
setattr(self, x, getattr(self.file_list, x))
|
||||
|
||||
def build(self, container, preserve_state=True):
|
||||
|
Loading…
x
Reference in New Issue
Block a user