Modified the default label text box into a drop down (#824)

* Modified the default label text box into a drop down

* Unchecked the box at startup

* Removed commented code

* Removed unnecessary update method for the combobox

* Changed naming style for class
This commit is contained in:
Aditya Kumar 2022-01-26 21:48:13 +05:30 committed by GitHub
parent c35efbd480
commit 276f40f5e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 4 deletions

0
data/predefined_classes.txt Normal file → Executable file
View File

View File

@ -30,6 +30,7 @@ except ImportError:
from PyQt4.QtCore import *
from libs.combobox import ComboBox
from libs.default_label_combobox import DefaultLabelComboBox
from libs.resources import *
from libs.constants import *
from libs.utils import *
@ -113,6 +114,8 @@ class MainWindow(QMainWindow, WindowMixin):
# Load predefined classes to the list
self.load_predefined_classes(default_prefdef_class_file)
self.default_label = self.label_hist[0]
# Main widgets and related state.
self.label_dialog = LabelDialog(parent=self, list_item=self.label_hist)
@ -126,10 +129,11 @@ class MainWindow(QMainWindow, WindowMixin):
# Create a widget for using default label
self.use_default_label_checkbox = QCheckBox(get_str('useDefaultLabel'))
self.use_default_label_checkbox.setChecked(False)
self.default_label_text_line = QLineEdit()
self.default_label_combo_box = DefaultLabelComboBox(self,items=self.label_hist)
use_default_label_qhbox_layout = QHBoxLayout()
use_default_label_qhbox_layout.addWidget(self.use_default_label_checkbox)
use_default_label_qhbox_layout.addWidget(self.default_label_text_line)
use_default_label_qhbox_layout.addWidget(self.default_label_combo_box)
use_default_label_container = QWidget()
use_default_label_container.setLayout(use_default_label_qhbox_layout)
@ -900,6 +904,9 @@ class MainWindow(QMainWindow, WindowMixin):
else:
self.label_list.item(i).setCheckState(2)
def default_label_combo_selection_changed(self, index):
self.default_label=self.label_hist[index]
def label_selection_changed(self):
item = self.current_item()
if item and self.canvas.editing():
@ -925,7 +932,7 @@ class MainWindow(QMainWindow, WindowMixin):
position MUST be in global coordinates.
"""
if not self.use_default_label_checkbox.isChecked() or not self.default_label_text_line.text():
if not self.use_default_label_checkbox.isChecked():
if len(self.label_hist) > 0:
self.label_dialog = LabelDialog(
parent=self, list_item=self.label_hist)
@ -937,7 +944,7 @@ class MainWindow(QMainWindow, WindowMixin):
text = self.label_dialog.pop_up(text=self.prev_label_text)
self.lastLabel = text
else:
text = self.default_label_text_line.text()
text = self.default_label
# Add Chris
self.diffc_button.setChecked(False)

View File

@ -0,0 +1,27 @@
import sys
try:
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QComboBox
except ImportError:
# needed for py3+qt4
# Ref:
# http://pyqt.sourceforge.net/Docs/PyQt4/incompatible_apis.html
# http://stackoverflow.com/questions/21217399/pyqt4-qtcore-qvariant-object-instead-of-a-string
if sys.version_info.major >= 3:
import sip
sip.setapi('QVariant', 2)
from PyQt4.QtGui import QWidget, QHBoxLayout, QComboBox
class DefaultLabelComboBox(QWidget):
def __init__(self, parent=None, items=[]):
super(DefaultLabelComboBox, self).__init__(parent)
layout = QHBoxLayout()
self.cb = QComboBox()
self.items = items
self.cb.addItems(self.items)
self.cb.currentIndexChanged.connect(parent.default_label_combo_selection_changed)
layout.addWidget(self.cb)
self.setLayout(layout)