Source code for eye.helpers.build_locationlist
# this project is licensed under the WTFPLv2, see COPYING.txt for details
from PyQt5.QtCore import Qt, QSortFilterProxyModel, QRegExp
from eye.app import qApp
from eye.connector import register_signal, disabled
from eye.consts import AbsolutePathRole
from eye.widgets.locationlist import LocationList
__all__ = ('set_enabled',)
@register_signal('builder', 'started')
@disabled
def on_build_start(builder):
loclist = add_location_list(qApp().last_window, show=False)
if loclist is None:
return
loclist.clear()
loclist.setColumns(builder.columns())
@register_signal('builder', 'warning_printed')
@disabled
def on_build_warning(builder, info):
add_item(builder, info, 'warning')
@register_signal('builder', 'error_printed')
@disabled
def on_build_error(builder, info):
add_item(builder, info, 'error')
def add_location_list(win, show=True):
if getattr(win, 'build_loclist', None) is None:
win.build_loclist = LocationList()
win.build_loclist.setWindowTitle(win.build_loclist.tr('Build results'))
win.build_loclist.add_category('build_location_list')
win.add_dockable(Qt.BottomDockWidgetArea, win.build_loclist)
if show:
win.build_loclist.show()
return win.build_loclist
def add_item(builder, info, msg_type):
loclist = add_location_list(qApp().last_window)
loclist.addItem(info)
@register_signal('window', 'focused_buffer')
@disabled
def filter_on_focus(window, focused):
loclist = getattr(window, 'build_loclist', None)
if not loclist:
return
model = loclist.model()
if not getattr(model, 'is_filter_on_focus', False):
orig = model
model = QSortFilterProxyModel()
model.is_filter_on_focus = True
loclist.setModel(model)
model.setSourceModel(orig)
model.setFilterRole(AbsolutePathRole)
model.setFilterRegExp(QRegExp.escape(focused.path or ''))
[docs]
def set_enabled(enabled=True):
"""Enable or disable the plugin"""
on_build_start.enabled = enabled
on_build_warning.enabled = enabled
on_build_error.enabled = enabled