Skip to content
Snippets Groups Projects

Implement file search

Merged Kien Le requested to merge feature-#10-search_folder_list into master
1 unresolved thread
Files
2
# UI and connectSignals for main_window
from typing import Union, List
from typing import Union, List, Optional, Iterable
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import QObject
from PySide2.QtGui import QIcon, QPixmap
from PySide2.QtWidgets import (
QMainWindow, QWidget, QTextBrowser, QPushButton, QLineEdit, QDateEdit,
QListWidget, QCheckBox, QRadioButton, QMenu, QAction, QLabel, QFrame,
QVBoxLayout, QHBoxLayout, QGridLayout, QAbstractItemView, QShortcut,
QActionGroup, QButtonGroup
QActionGroup, QButtonGroup, QStyle,
)
from sohstationviewer.view.calendar.calendar_widget import CalendarWidget
@@ -90,9 +92,9 @@ class UIMainWindow(object):
"""
self.search_line_edit: Union[QLineEdit, None] = None
"""
clear_button: clear search_line_edit
clear_button: clear search_line_edit
"""
self.clear_button: Union[QPushButton, None] = None
self.clear_search_action: Optional[QAction] = None
"""
search_button: filter list of files based on content of
self.search_line_edit
@@ -391,41 +393,52 @@ class UIMainWindow(object):
QAbstractItemView.ExtendedSelection)
search_layout = QHBoxLayout()
# search_layout.setSpacing(6)
left_layout.addLayout(search_layout)
self.search_line_edit = QLineEdit(self.central_widget)
self.search_line_edit.setPlaceholderText('Search...')
self.search_line_edit.setToolTip('Filter the list of files based on '
'the content.')
self.search_line_edit.textChanged.connect(self.main_window.filter_folder_list)
self.search_line_edit.setClearButtonEnabled(True)
try:
# This value was obtained from the C++ source of QT. We use it here
# so that the QAction found is guaranteed to be the clear button.
clear_action_name = '_q_qlineeditclearaction'
found_actions = self.search_line_edit.findChildren(
QAction, clear_action_name
)
self.clear_search_action: QAction = found_actions[0]
self.clear_search_action.triggered.connect(
self.main_window.clear_file_search
)
except IndexError:
# If the name of the clear button is changed in the C++ source of
# QT, nothing will be found. So, we raise an error to indicate this
# problem.
raise ValueError('No clear button could be found. Check its '
'objectName attribute using QObject.findChildren '
'without a name.')
search_layout.addWidget(self.search_line_edit)
search_layout.addSpacing(2)
self.clear_button = QPushButton('Clear', self.central_widget)
self.clear_button.setFixedWidth(70)
search_layout.addWidget(self.clear_button)
search_layout.addSpacing(2)
self.search_button = QPushButton('Search', self.central_widget)
self.search_button.setFixedWidth(70)
search_layout.addWidget(self.search_button)
search_grid = QGridLayout()
left_layout.addLayout(search_grid)
read_option_grid = QGridLayout()
left_layout.addLayout(read_option_grid)
self.from_data_card_check_box = QCheckBox(
'From Data Card', self.central_widget)
search_grid.addWidget(self.from_data_card_check_box, 0, 0, 1, 2)
read_option_grid.addWidget(self.from_data_card_check_box, 0, 0, 1, 2)
self.replot_button = QPushButton('RePlot', self.central_widget)
self.replot_button.setFixedWidth(95)
search_grid.addWidget(self.replot_button, 0, 3, 1, 1)
read_option_grid.addWidget(self.replot_button, 0, 3, 1, 1)
data_group = QButtonGroup()
self.data_radio_button = QRadioButton('data', self.central_widget)
data_group.addButton(self.data_radio_button)
self.data_radio_button.setEnabled(False)
search_grid.addWidget(self.data_radio_button, 1, 0, 1, 1)
read_option_grid.addWidget(self.data_radio_button, 1, 0, 1, 1)
self.sdata_radio_button = QRadioButton('sdata', self.central_widget)
self.sdata_radio_button.setEnabled(False)
data_group.addButton(self.sdata_radio_button)
search_grid.addWidget(self.sdata_radio_button, 1, 1, 1, 1)
read_option_grid.addWidget(self.sdata_radio_button, 1, 1, 1, 1)
color_tip_fmt = ('Set the background color of the plot '
' to {0}')
@@ -769,10 +782,6 @@ class UIMainWindow(object):
main_window.filter_folder_list
)
self.clear_button.pressed.connect(main_window.clear_file_search)
self.search_button.pressed.connect(main_window.filter_folder_list)
self.replot_button.clicked.connect(main_window.replot_loaded_data)
self.background_black_radio_button.toggled.connect(
Loading