diff --git a/.gitignore b/.gitignore index ceda881..d343f07 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ __pycache__/ /build /dist /*.spec -/tmp/ -/.cache/ +tmp/ +.cache/ /output/ .DS_Store diff --git a/src/Application.py b/src/Application.py index 565b5e9..4e4b39e 100644 --- a/src/Application.py +++ b/src/Application.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -47,7 +47,6 @@ class MyWindow(QtWidgets.QMainWindow): - def __init__(self): super().__init__() self.ui = Ui_MainWindow() @@ -57,14 +56,15 @@ def __init__(self): self.ui.leNumTrain.setValidator(QIntValidator(1, 10000, self)) self.ui.leNumTest.setValidator(QIntValidator(1, 5000, self)) self.ui.leOutlierRate.setValidator(QDoubleValidator(0.1, 0.5, 2, self)) - self.ui.lbProgress.setText('就绪') + self.ui.lbProgress.setText("就绪") self.ui.lbImage.setScaledContents(True) self.data_config = DataConfig() self.model_config = ModelConfig() self.ui.cbModelName.addItems(MODEL_ZOO.model_list) - self.ui.cbModelName.setCurrentText('KNN') + self.ui.cbModelName.setCurrentText("KNN") from src.NAME import NAME + self.ui.centralwidget.setWindowTitle(NAME) self.ui.leNumTrain.setText(str(self.data_config.n_train)) @@ -76,13 +76,13 @@ def __init__(self): @pyqtSlot(str) def on_cbModelName_currentTextChanged(self, value: str): - LOG.info(f'cbModelName: {value}') + LOG.info(f"cbModelName: {value}") self.model_config.name = value @pyqtSlot() def on_leSeed_editingFinished(self): value = self.ui.leSeed.text() - LOG.info(f'leSeed: {value}') + LOG.info(f"leSeed: {value}") try: self.data_config.seed = int(value) except ValueError: @@ -91,7 +91,7 @@ def on_leSeed_editingFinished(self): @pyqtSlot() def on_leNumTrain_editingFinished(self): value = self.ui.leNumTrain.text() - LOG.info(f'leNumTrain: {value}') + LOG.info(f"leNumTrain: {value}") try: self.data_config.n_train = int(value) except ValueError: @@ -100,7 +100,7 @@ def on_leNumTrain_editingFinished(self): @pyqtSlot() def on_leNumTest_editingFinished(self): value = self.ui.leNumTest.text() - LOG.info(f'leNumTest: {value}') + LOG.info(f"leNumTest: {value}") try: self.data_config.n_test = int(value) except ValueError: @@ -109,7 +109,7 @@ def on_leNumTest_editingFinished(self): @pyqtSlot() def on_leOutlierRate_editingFinished(self): value = self.ui.leOutlierRate.text() - LOG.info(f'leOutlierRate: {value}') + LOG.info(f"leOutlierRate: {value}") try: self.data_config.contamination = float(value) except ValueError: @@ -118,7 +118,7 @@ def on_leOutlierRate_editingFinished(self): @pyqtSlot() def on_leNumFeas_editingFinished(self): value = self.ui.leNumFeas.text() - LOG.info(f'leNumFeas: {value}') + LOG.info(f"leNumFeas: {value}") try: self.data_config.n_features = int(value) except ValueError: @@ -126,17 +126,21 @@ def on_leNumFeas_editingFinished(self): @pyqtSlot() def on_pbRunDetect_clicked(self): - LOG.info(f'pbRunDetect clicked') + LOG.info(f"pbRunDetect clicked") if self.job is not None: - QMessageBox.warning(self, '警告', '检测进行中,请等待', - QMessageBox.StandardButton.Yes, - QMessageBox.StandardButton.Yes) + QMessageBox.warning( + self, + "警告", + "检测进行中,请等待", + QMessageBox.StandardButton.Yes, + QMessageBox.StandardButton.Yes, + ) return pgb = self.ui.pgbEvaluator pgb.reset() pgb.setRange(0, len(RunEvaluator.ACTION_LIST) - 1) - self.ui.lbProgress.setText('检测中') + self.ui.lbProgress.setText("检测中") self.job = RunEvaluator( parent=self, data_config=self.data_config, @@ -146,10 +150,10 @@ def on_pbRunDetect_clicked(self): self.job.start() ACTION_TO_PROGRESS = dict( - load_data='数据加载完成', - load_model='模型加载完成', - detect='检测完成', - visualize='可视化完成', + load_data="数据加载完成", + load_model="模型加载完成", + detect="检测完成", + visualize="可视化完成", ) def reset_job(self): @@ -161,28 +165,31 @@ def reset_job(self): self.job = None def build_slot_dict(self): - def on_visualize(tag: str, image: str): on_progress(tag) label = self.ui.lbImage image = QtGui.QPixmap(image).scaled(label.width(), label.height()) assert not image.isNull() label.setPixmap(image) - LOG.info(f'Label on {image}, tag {tag}') + LOG.info(f"Label on {image}, tag {tag}") self.reset_job() def on_error(tag: str, msg: str): - LOG.info(f'Error {msg}, tag {tag}') - QMessageBox.warning(self, '错误', msg, - QMessageBox.StandardButton.Yes, - QMessageBox.StandardButton.Yes) + LOG.info(f"Error {msg}, tag {tag}") + QMessageBox.warning( + self, + "错误", + msg, + QMessageBox.StandardButton.Yes, + QMessageBox.StandardButton.Yes, + ) self.reset_job() def on_progress(tag: str): assert tag in self.ACTION_TO_PROGRESS text = self.ACTION_TO_PROGRESS[tag] self.ui.lbProgress.setText(text) - LOG.info(f'Progress {tag} => {text}') + LOG.info(f"Progress {tag} => {text}") pgb = self.ui.pgbEvaluator val_pgb = RunEvaluator.ACTION_LIST.index(tag) assert val_pgb != -1 @@ -202,10 +209,10 @@ class RunEvaluator(QThread): # error not in here!! ACTION_LIST = [ - 'load_data', - 'load_model', - 'detect', - 'visualize', + "load_data", + "load_model", + "detect", + "visualize", ] def __init__( @@ -221,16 +228,16 @@ def __init__( self.evaluator = DetectionEvaluator() for key, slot in slot_dict.items(): try: - sig = getattr(self, f'sig_{key}') + sig = getattr(self, f"sig_{key}") except AttributeError: continue sig.connect(slot) def get_args(self, key): - if key == 'load_data': - return (self.data_config, ) - if key == 'load_model': - return (self.model_config, ) + if key == "load_data": + return (self.data_config,) + if key == "load_model": + return (self.model_config,) return tuple() def run(self) -> None: @@ -240,13 +247,13 @@ def run(self) -> None: try: ret = action(*args) except Exception as e: - self.sig_error.emit('error', str(e)) + self.sig_error.emit("error", str(e)) traceback.print_exc() - LOG.warning(f'Error in action {key}') + LOG.warning(f"Error in action {key}") return else: - sig = getattr(self, f'sig_{key}') - if key == 'visualize': + sig = getattr(self, f"sig_{key}") + if key == "visualize": sig.emit(key, str(ret)) else: sig.emit(key) diff --git a/src/Batch.py b/src/Batch.py index 89830ff..1bfca2b 100644 --- a/src/Batch.py +++ b/src/Batch.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,7 +27,7 @@ from pathlib import Path as P from src.OutlierDetect import * -OUTPUT_DIR = ensure_dir(PROJ_DIR.joinpath('output')) +OUTPUT_DIR = ensure_dir(PROJ_DIR.joinpath("output")) def make_data_config(contamination): @@ -41,10 +41,9 @@ def make_data_config(contamination): def run(data_config: DataConfig, model_config: ModelConfig, root: P): c = data_config - prefix = '-'.join(map(str, [c.n_train, c.n_test, c.n_features])) - root = root.joinpath(prefix).joinpath(f'{c.contamination_percent}') - DetectionEvaluator().load_data(c).load_model( - model_config).detect().visualize(root) + prefix = "-".join(map(str, [c.n_train, c.n_test, c.n_features])) + root = root.joinpath(prefix).joinpath(f"{c.contamination_percent}") + DetectionEvaluator().load_data(c).load_model(model_config).detect().visualize(root) def get_args(rate_list, model_list, root): @@ -61,8 +60,8 @@ def batch_run(): rate_list = [0.1, 0.3, 0.5] Parallel(NUM_JOBS, verbose=VERBOSE)( - delayed(run)(*args) - for args in get_args(rate_list, model_list, OUTPUT_DIR)) + delayed(run)(*args) for args in get_args(rate_list, model_list, OUTPUT_DIR) + ) if __name__ == "__main__": diff --git a/src/NAME.py b/src/NAME.py index 3e7db5a..285e300 100644 --- a/src/NAME.py +++ b/src/NAME.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -NAME = '异常流量数据分析软件' -print(f'NAME IS {NAME}') +NAME = "异常流量数据分析软件" +print(f"NAME IS {NAME}") diff --git a/src/OutlierDetect.py b/src/OutlierDetect.py index a555bb5..1987747 100644 --- a/src/OutlierDetect.py +++ b/src/OutlierDetect.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -54,15 +54,16 @@ def ensure_dir(dir: P): LOG = logging.getLogger("[OutlierDetect]") PROJ_DIR = P(__file__).parent TMP_DIR = ensure_dir(PROJ_DIR.joinpath("tmp")) -CACHE_DIR = ensure_dir(PROJ_DIR.joinpath('.cache')) +CACHE_DIR = ensure_dir(PROJ_DIR.joinpath(".cache")) MEMORY = Memory(location=CACHE_DIR, verbose=VERBOSE) NUM_JOBS = 1 -EAGER = os.getenv('ODQT_EAGER', '') +EAGER = os.getenv("ODQT_EAGER", "") if EAGER: - LOG.info('EAGER loading pyod modules...') + LOG.info("EAGER loading pyod modules...") import src.PYODLIBS as PYODLIBS - LOG.info('Done') + + LOG.info("Done") else: PYODLIBS = None @@ -83,8 +84,7 @@ class DataConfig: def contamination_percent(self): return int(100 * self.contamination) - def load_data(self) -> 'Data': - + def load_data(self) -> "Data": @MEMORY.cache def _load_data(self: DataConfig): from pyod.utils.data import generate_data @@ -98,10 +98,11 @@ def _load_data(self: DataConfig): n_features=self.n_features, random_state=self.seed, ) - LOG.info(f'Begin TSNE') + LOG.info(f"Begin TSNE") d.X_train2d, d.X_test2d = Parallel(1)( - delayed(tsne)(X) for X in [d.X_train, d.X_test]) - LOG.info('End TSNE') + delayed(tsne)(X) for X in [d.X_train, d.X_test] + ) + LOG.info("End TSNE") return d @@ -110,10 +111,9 @@ def _load_data(self: DataConfig): @dataclass class ModelConfig: - name: str = 'KNN' + name: str = "KNN" def load_model(self, contamination: float): - @MEMORY.cache def _load_model(self: ModelConfig, contamination: float): cls = MODEL_ZOO.load(self.name) @@ -132,8 +132,7 @@ class Model: def name(self): return self.model_config.name - def detect(self, data: 'Data'): - + def detect(self, data: "Data"): @MEMORY.cache def _detect(self: Model, data: Data): self.model.fit(data.X_train, data.y_train) @@ -141,7 +140,8 @@ def _detect(self: Model, data: Data): res.y_train_pred = self.model.labels_ res.y_train_scores = self.model.decision_scores_ res.y_test_pred, res.y_test_pred_confidence = self.model.predict( - data.X_test, return_confidence=True) + data.X_test, return_confidence=True + ) return res return _detect(self, data) @@ -230,7 +230,7 @@ def dis2real(self, dis: str): return self.display2real.get(dis, dis) -MODEL_ZOO = ModelZoo(AutoEncoder='MVC') +MODEL_ZOO = ModelZoo(AutoEncoder="MVC") @dataclass @@ -259,6 +259,7 @@ class DetectionResult: """ 检测结果。基于它可以进行各种可视化和展示。 """ + # get the prediction labels and outlier scores of the training data y_train_pred = None # binary labels (0: inliers, 1: outliers) y_train_scores = None # raw outlier scores @@ -309,10 +310,12 @@ def visualize(self, parent: P = None): parent = ensure_dir(parent.absolute()) import os + temp = P.cwd() os.chdir(parent) clf_name, data, res = self.model.name, self.data, self.result from pyod.utils.example import visualize + visualize( clf_name=clf_name, show_figure=False, @@ -325,11 +328,10 @@ def visualize(self, parent: P = None): y_test_pred=res.y_test_pred, ) os.chdir(temp) - image = parent.joinpath(f'{clf_name}.png') + image = parent.joinpath(f"{clf_name}.png") return image if __name__ == "__main__": ev = DetectionEvaluator() - ev.load_data(DataConfig()).load_model( - ModelConfig()).detect().visualize(TMP_DIR) + ev.load_data(DataConfig()).load_model(ModelConfig()).detect().visualize(TMP_DIR) diff --git a/src/PYODLIBS.py b/src/PYODLIBS.py index 097939e..dabc6b8 100644 --- a/src/PYODLIBS.py +++ b/src/PYODLIBS.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/src/UserInterface.py b/src/UserInterface.py index acd454d..f139bb6 100644 --- a/src/UserInterface.py +++ b/src/UserInterface.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -37,1314 +37,1316 @@ class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(884, 749) - MainWindow.setStyleSheet("/* ------------------------------------------------------------------------ */\n" -"/* QtMaterial - https://github.com/UN-GCPDS/qt-material\n" -"/* By Yeison Cardona - GCPDS\n" -"/* ------------------------------------------------------------------------ */\n" -"\n" -"*{\n" -" color: #555555;\n" -"\n" -" font-family: Roboto;\n" -"\n" -" \n" -" font-size: 13px;\n" -" \n" -"\n" -" \n" -" line-height: 13px;\n" -" \n" -"\n" -" selection-background-color: #75a7ff;\n" -" selection-color: #3c3c3c;\n" -"}\n" -"\n" -"*:focus {\n" -" outline: none;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Custom colors */\n" -"\n" -".danger{\n" -" color: #dc3545;\n" -" background-color: transparent;\n" -"}\n" -"\n" -".warning{\n" -" color: #ffc107;\n" -" background-color: transparent;\n" -"}\n" -"\n" -".success{\n" -" color: #17a2b8;\n" -" background-color: transparent;\n" -"}\n" -"\n" -".danger:disabled{\n" -" color: rgba(220, 53, 69, 0.4);\n" -" border-color: rgba(220, 53, 69, 0.4);\n" -"}\n" -"\n" -".warning:disabled{\n" -" color: rgba(255, 193, 7, 0.4);\n" -" border-color: rgba(255, 193, 7, 0.4);\n" -"}\n" -"\n" -".success:disabled{\n" -" color: rgba(23, 162, 184, 0.4);\n" -" border-color: rgba(23, 162, 184, 0.4);\n" -"}\n" -"\n" -".danger:flat:disabled{\n" -" background-color: rgba(220, 53, 69, 0.1);\n" -"}\n" -"\n" -".warning:flat:disabled{\n" -" background-color: rgba(255, 193, 7, 0.1);\n" -"}\n" -"\n" -".success:flat:disabled{\n" -" background-color: rgba(23, 162, 184, 0.1);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Basic widgets */\n" -"\n" -"QWidget {\n" -" background-color: #e6e6e6;\n" -"}\n" -"\n" -"QGroupBox,\n" -"QFrame {\n" -" background-color: #e6e6e6;\n" -" border: 2px solid #ffffff;\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QGroupBox.fill_background,\n" -"QFrame.fill_background {\n" -" background-color: #f5f5f5;\n" -" border: 2px solid #f5f5f5;\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QSplitter {\n" -" background-color: transparent;\n" -" border: none\n" -"}\n" -"\n" -"QStatusBar {\n" -" color: #555555;\n" -" background-color: rgba(255, 255, 255, 0.2);\n" -" border-radius: 0px;\n" -"}\n" -"\n" -"QScrollArea,\n" -"QStackedWidget,\n" -"QWidget > QToolBox,\n" -"QToolBox > QWidget,\n" -"QTabWidget > QWidget {\n" -" border: none;\n" -"}\n" -"\n" -"QTabWidget::pane {\n" -" border: none;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Inputs */\n" -"\n" -"QDateTimeEdit,\n" -"QSpinBox,\n" -"QDoubleSpinBox,\n" -"QTextEdit,\n" -"QLineEdit,\n" -"QPushButton {\n" -" color: #2979ff;\n" -" background-color: #e6e6e6;\n" -" border: 2px solid #2979ff;\n" -" border-radius: 4px;\n" -" height: 32px;\n" -"}\n" -"\n" -"QDateTimeEdit,\n" -"QSpinBox,\n" -"QDoubleSpinBox,\n" -"QTreeView,\n" -"QListView,\n" -"QLineEdit,\n" -"QComboBox {\n" -" padding-left: 16px;\n" -" border-radius: 0px;\n" -" background-color: #f5f5f5;\n" -" border-width: 0 0 2px 0;\n" -" border-radius: 0px;\n" -" border-top-left-radius: 4px;\n" -" border-top-right-radius: 4px;\n" -" height: 32px;\n" -"}\n" -"\n" -"QPlainTextEdit {\n" -" border-radius: 4px;\n" -" padding: 8px 16px;\n" -" background-color: #e6e6e6;\n" -" border: 2px solid #ffffff;\n" -"}\n" -"\n" -"QTextEdit {\n" -" padding: 8px 16px;\n" -" border-radius: 4px;\n" -" background-color: #f5f5f5;\n" -"}\n" -"\n" -"QDateTimeEdit:disabled,\n" -"QSpinBox:disabled,\n" -"QDoubleSpinBox:disabled,\n" -"QTextEdit:disabled,\n" -"QLineEdit:disabled {\n" -" color: rgba(41, 121, 255, 0.2);\n" -" background-color: rgba(245, 245, 245, 0.75);\n" -" border: 2px solid rgba(41, 121, 255, 0.2);\n" -" border-width: 0 0 2px 0;\n" -" padding: 0px 16px;\n" -" border-radius: 0px;\n" -" border-top-left-radius: 4px;\n" -" border-top-right-radius: 4px;\n" -" height: 32px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QComboBox */\n" -"\n" -"QComboBox {\n" -" color: #2979ff;\n" -" border: 1px solid #2979ff;\n" -" border-width: 0 0 2px 0;\n" -" background-color: #f5f5f5;\n" -" border-radius: 0px;\n" -" border-top-left-radius: 4px;\n" -" border-top-right-radius: 4px;\n" -" height: 32px;\n" -"}\n" -"\n" -"QComboBox:disabled {\n" -" color: rgba(41, 121, 255, 0.2);\n" -" background-color: rgba(245, 245, 245, 0.75);\n" -" border-bottom: 2px solid rgba(41, 121, 255, 0.2);\n" -"}\n" -"\n" -"QComboBox::drop-down {\n" -" border: none;\n" -" color: #2979ff;\n" -" width: 20px;\n" -"}\n" -"\n" -"QComboBox::down-arrow {\n" -" image: url(icon:/primary/downarrow.svg);\n" -" margin-right: 12px;\n" -"}\n" -"\n" -"QComboBox::down-arrow:disabled {\n" -" image: url(icon:/disabled/downarrow.svg);\n" -" margin-right: 12px;\n" -"}\n" -"\n" -"QComboBox QAbstractItemView {\n" -" background-color: #f5f5f5;\n" -" border: 2px solid #ffffff;\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QComboBox[frame=\'false\'] {\n" -" color: #2979ff;\n" -" background-color: transparent;\n" -" border: 1px solid transparent;\n" -"}\n" -"QComboBox[frame=\'false\']:disabled {\n" -" color: rgba(41, 121, 255, 0.2);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Spin buttons */\n" -"\n" -"QDateTimeEdit::up-button,\n" -"QDoubleSpinBox::up-button,\n" -"QSpinBox::up-button {\n" -" subcontrol-origin: border;\n" -" subcontrol-position: top right;\n" -" width: 20px;\n" -" image: url(icon:/primary/uparrow.svg);\n" -" border-width: 0px;\n" -" margin-right: 5px;\n" -"}\n" -"\n" -"QDateTimeEdit::up-button:disabled,\n" -"QDoubleSpinBox::up-button:disabled,\n" -"QSpinBox::up-button:disabled {\n" -" image: url(icon:/disabled/uparrow.svg);\n" -"}\n" -"\n" -"QDateTimeEdit::down-button,\n" -"QDoubleSpinBox::down-button,\n" -"QSpinBox::down-button {\n" -" subcontrol-origin: border;\n" -" subcontrol-position: bottom right;\n" -" width: 20px;\n" -" image: url(icon:/primary/downarrow.svg);\n" -" border-width: 0px;\n" -" border-top-width: 0;\n" -" margin-right: 5px;\n" -"}\n" -"\n" -"QDateTimeEdit::down-button:disabled,\n" -"QDoubleSpinBox::down-button:disabled,\n" -"QSpinBox::down-button:disabled {\n" -" image: url(icon:/disabled/downarrow.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QPushButton */\n" -"\n" -"QPushButton {\n" -" text-transform: uppercase;\n" -" margin: 0px;\n" -" padding: 1px 16px;\n" -" height: 32px;\n" -" font-weight: bold;\n" -"\n" -" \n" -" border-radius: 4px;\n" -" \n" -"\n" -"\n" -"}\n" -"\n" -"QPushButton:checked,\n" -"QPushButton:pressed {\n" -" color: #e6e6e6;\n" -" background-color: #2979ff;\n" -"}\n" -"\n" -"QPushButton:flat {\n" -" margin: 0px;\n" -" color: #2979ff;\n" -" border: none;\n" -" background-color: transparent;\n" -"}\n" -"\n" -"QPushButton:flat:hover {\n" -" background-color: rgba(41, 121, 255, 0.2);\n" -"}\n" -"\n" -"QPushButton:flat:pressed,\n" -"QPushButton:flat:checked {\n" -" background-color: rgba(41, 121, 255, 0.1);\n" -"}\n" -"\n" -"QPushButton:disabled {\n" -" color: rgba(255, 255, 255, 0.75);\n" -" background-color: transparent;\n" -" border-color: #ffffff;\n" -"}\n" -"\n" -"QPushButton:flat:disabled {\n" -" color: rgba(255, 255, 255, 0.75);\n" -" background-color: rgba(255, 255, 255, 0.25);\n" -" border: none;\n" -"}\n" -"\n" -"QPushButton:disabled {\n" -" border: 2px solid rgba(255, 255, 255, 0.75);\n" -"}\n" -"\n" -"QPushButton:checked:disabled {\n" -" color: #f5f5f5;\n" -" background-color: #ffffff;\n" -" border-color: #ffffff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QTabBar */\n" -"\n" -"QTabBar{\n" -" text-transform: uppercase;\n" -" font-weight: bold;\n" -"}\n" -"\n" -"QTabBar::tab {\n" -" color: #555555;\n" -" border: 0px;\n" -"}\n" -"\n" -"QTabBar::tab:bottom,\n" -"QTabBar::tab:top{\n" -" padding: 0 16px;\n" -" height: 28px;\n" -"}\n" -"\n" -"QTabBar::tab:left,\n" -"QTabBar::tab:right{\n" -" padding: 16px 0;\n" -" width: 28px;\n" -"}\n" -"\n" -"QTabBar::tab:top:selected,\n" -"QTabBar::tab:top:hover {\n" -" color: #2979ff;\n" -" border-bottom: 2px solid #2979ff;\n" -"}\n" -"\n" -"QTabBar::tab:bottom:selected,\n" -"QTabBar::tab:bottom:hover {\n" -" color: #2979ff;\n" -" border-top: 2px solid #2979ff;\n" -"}\n" -"\n" -"QTabBar::tab:right:selected,\n" -"QTabBar::tab:right:hover {\n" -" color: #2979ff;\n" -" border-left: 2px solid #2979ff;\n" -"}\n" -"\n" -"QTabBar::tab:left:selected,\n" -"QTabBar::tab:left:hover {\n" -" color: #2979ff;\n" -" border-right: 2px solid #2979ff;\n" -"}\n" -"\n" -"QTabBar QToolButton:hover,\n" -"QTabBar QToolButton {\n" -" border: 20px;\n" -" background-color: #e6e6e6;\n" -"}\n" -"\n" -"QTabBar QToolButton::up-arrow {\n" -" image: url(icon:/disabled/uparrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::up-arrow:hover {\n" -" image: url(icon:/primary/uparrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::down-arrow {\n" -" image: url(icon:/disabled/downarrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::down-arrow:hover {\n" -" image: url(icon:/primary/downarrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::right-arrow {\n" -" image: url(icon:/primary/rightarrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::right-arrow:hover {\n" -" image: url(icon:/disabled/rightarrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::left-arrow {\n" -" image: url(icon:/primary/leftarrow2.svg);\n" -"}\n" -"\n" -"QTabBar QToolButton::left-arrow:hover {\n" -" image: url(icon:/disabled/leftarrow2.svg);\n" -"}\n" -"\n" -"QTabBar::close-button {\n" -" image: url(icon:/disabled/tab_close.svg);\n" -"}\n" -"\n" -"QTabBar::close-button:hover {\n" -" image: url(icon:/primary/tab_close.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QGroupBox */\n" -"\n" -"QGroupBox {\n" -" padding: 16px;\n" -" padding-top: 36px;\n" -" line-height: ;\n" -" text-transform: uppercase;\n" -" font-size: ;\n" -"}\n" -"\n" -"QGroupBox::title {\n" -" color: rgba(85, 85, 85, 0.4);\n" -" subcontrol-origin: margin;\n" -" subcontrol-position: top left;\n" -" padding: 16px;\n" -" background-color: #e6e6e6;\n" -" background-color: transparent;\n" -" height: 36px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QRadioButton and QCheckBox labels */\n" -"\n" -"QRadioButton,\n" -"QCheckBox {\n" -" spacing: 12px;\n" -" color: #555555;\n" -" line-height: 14px;\n" -" height: 36px;\n" -" background-color: transparent;\n" -" spacing: 5px;\n" -"}\n" -"\n" -"QRadioButton:disabled,\n" -"QCheckBox:disabled {\n" -" color: rgba(85, 85, 85, 0.3);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* General Indicators */\n" -"\n" -"QGroupBox::indicator {\n" -" width: 24px;\n" -" height: 24px;\n" -" border-radius: 3px;\n" -"}\n" -"\n" -"QMenu::indicator,\n" -"QListView::indicator,\n" -"QTableWidget::indicator,\n" -"QRadioButton::indicator,\n" -"QCheckBox::indicator {\n" -" width: 28px;\n" -" height: 28px;\n" -" border-radius: 4px;\n" -" }\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QListView Indicator */\n" -"\n" -"QListView::indicator:checked,\n" -"QListView::indicator:checked:selected,\n" -"QListView::indicator:checked:focus {\n" -" image: url(icon:/primary/checklist.svg);\n" -"}\n" -"\n" -"QListView::indicator:checked:selected:active {\n" -" image: url(icon:/primary/checklist_invert.svg);\n" -"}\n" -"\n" -"QListView::indicator:checked:disabled {\n" -" image: url(icon:/disabled/checklist.svg);\n" -"}\n" -"\n" -"QListView::indicator:indeterminate,\n" -"QListView::indicator:indeterminate:selected,\n" -"QListView::indicator:indeterminate:focus {\n" -" image: url(icon:/primary/checklist_indeterminate.svg);\n" -"}\n" -"\n" -"QListView::indicator:indeterminate:selected:active {\n" -" image: url(icon:/primary/checklist_indeterminate_invert.svg);\n" -"}\n" -"\n" -"QListView::indicator:indeterminate:disabled {\n" -" image: url(icon:/disabled/checklist_indeterminate.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QTableView Indicator */\n" -"\n" -"QTableView::indicator:enabled:checked,\n" -"QTableView::indicator:enabled:checked:selected,\n" -"QTableView::indicator:enabled:checked:focus {\n" -" image: url(icon:/primary/checkbox_checked.svg);\n" -"}\n" -"\n" -"QTableView::indicator:checked:selected:active {\n" -" image: url(icon:/primary/checkbox_checked_invert.svg);\n" -"}\n" -"\n" -"QTableView::indicator:disabled:checked,\n" -"QTableView::indicator:disabled:checked:selected,\n" -"QTableView::indicator:disabled:checked:focus {\n" -" image: url(icon:/disabled/checkbox_checked.svg);\n" -"}\n" -"\n" -"QTableView::indicator:enabled:unchecked,\n" -"QTableView::indicator:enabled:unchecked:selected,\n" -"QTableView::indicator:enabled:unchecked:focus {\n" -" image: url(icon:/primary/checkbox_unchecked.svg);\n" -"}\n" -"\n" -"QTableView::indicator:unchecked:selected:active {\n" -" image: url(icon:/primary/checkbox_unchecked_invert.svg);\n" -"}\n" -"\n" -"QTableView::indicator:disabled:unchecked,\n" -"QTableView::indicator:disabled:unchecked:selected,\n" -"QTableView::indicator:disabled:unchecked:focus {\n" -" image: url(icon:/disabled/checkbox_unchecked.svg);\n" -"}\n" -"\n" -"QTableView::indicator:enabled:indeterminate,\n" -"QTableView::indicator:enabled:indeterminate:selected,\n" -"QTableView::indicator:enabled:indeterminate:focus {\n" -" image: url(icon:/primary/checkbox_indeterminate.svg);\n" -"}\n" -"\n" -"QTableView::indicator:indeterminate:selected:active {\n" -" image: url(icon:/primary/checkbox_indeterminate_invert.svg);\n" -"}\n" -"\n" -"QTableView::indicator:disabled:indeterminate,\n" -"QTableView::indicator:disabled:indeterminate:selected,\n" -"QTableView::indicator:disabled:indeterminate:focus {\n" -" image: url(icon:/disabled/checkbox_indeterminate.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QCheckBox and QGroupBox Indicator */\n" -"\n" -"QCheckBox::indicator:checked,\n" -"QGroupBox::indicator:checked {\n" -" image: url(icon:/primary/checkbox_checked.svg);\n" -"}\n" -"\n" -"QCheckBox::indicator:unchecked,\n" -"QGroupBox::indicator:unchecked {\n" -" image: url(icon:/primary/checkbox_unchecked.svg);\n" -"}\n" -"\n" -"QCheckBox::indicator:indeterminate,\n" -"QGroupBox::indicator:indeterminate {\n" -" image: url(icon:/primary/checkbox_indeterminate.svg);\n" -"}\n" -"\n" -"QCheckBox::indicator:checked:disabled,\n" -"QGroupBox::indicator:checked:disabled {\n" -" image: url(icon:/disabled/checkbox_checked.svg);\n" -"}\n" -"\n" -"QCheckBox::indicator:unchecked:disabled,\n" -"QGroupBox::indicator:unchecked:disabled {\n" -" image: url(icon:/disabled/checkbox_unchecked.svg);\n" -"}\n" -"\n" -"QCheckBox::indicator:indeterminate:disabled,\n" -"QGroupBox::indicator:indeterminate:disabled {\n" -" image: url(icon:/disabled/checkbox_indeterminate.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QRadioButton Indicator */\n" -"\n" -"QRadioButton::indicator:checked {\n" -" image: url(icon:/primary/radiobutton_checked.svg);\n" -"}\n" -"\n" -"QRadioButton::indicator:unchecked {\n" -" image: url(icon:/primary/radiobutton_unchecked.svg);\n" -"}\n" -"\n" -"QRadioButton::indicator:checked:disabled {\n" -" image: url(icon:/disabled/radiobutton_checked.svg);\n" -"}\n" -"\n" -"QRadioButton::indicator:unchecked:disabled {\n" -" image: url(icon:/disabled/radiobutton_unchecked.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QDockWidget */\n" -"\n" -"QDockWidget {\n" -" color: #555555;\n" -" text-transform: uppercase;\n" -" border: 2px solid #f5f5f5;\n" -" titlebar-close-icon: url(icon:/primary/close.svg);\n" -" titlebar-normal-icon: url(icon:/primary/float.svg);\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QDockWidget::title {\n" -" text-align: left;\n" -" padding-left: 36px;\n" -" padding: 3px;\n" -" margin-top: 4px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QComboBox indicator */\n" -"\n" -"QComboBox::indicator:checked {\n" -" image: url(icon:/primary/checklist.svg);\n" -"}\n" -"\n" -"QComboBox::indicator:checked:selected {\n" -" image: url(icon:/primary/checklist_invert.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Menu Items */\n" -"\n" -"QComboBox::item,\n" -"QCalendarWidget QMenu::item,\n" -"QMenu::item {\n" -" \n" -" height: 28px;\n" -" \n" -" border: 8px solid transparent;\n" -" color: #555555;\n" -"}\n" -"\n" -"QCalendarWidget QMenu::item,\n" -"QMenu::item {\n" -" \n" -" \n" -" \n" -"}\n" -"\n" -"\n" -"QComboBox::item:selected,\n" -"QCalendarWidget QMenu::item:selected,\n" -"QMenu::item:selected {\n" -" color: #3c3c3c;\n" -" background-color: #75a7ff;\n" -" border-radius: 0px;\n" -"}\n" -"\n" -"QComboBox::item:disabled,\n" -"QCalendarWidget QMenu::item:disabled,\n" -"QMenu::item:disabled {\n" -" color: rgba(85, 85, 85, 0.3);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QMenu */\n" -"\n" -"QCalendarWidget QMenu,\n" -"QMenu {\n" -" background-color: #f5f5f5;\n" -" border: 2px solid #ffffff;\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QMenu::separator {\n" -" height: 2px;\n" -" background-color: #ffffff;\n" -" margin-left: 2px;\n" -" margin-right: 2px;\n" -"}\n" -"\n" -"QMenu::right-arrow{\n" -" image: url(icon:/primary/rightarrow.svg);\n" -" width: 16px;\n" -" height: 16px;\n" -"}\n" -"\n" -"QMenu::right-arrow:selected{\n" -" image: url(icon:/disabled/rightarrow.svg);\n" -"}\n" -"\n" -"QMenu::indicator:non-exclusive:unchecked {\n" -" image: url(icon:/primary/checkbox_unchecked.svg);\n" -"}\n" -"\n" -"QMenu::indicator:non-exclusive:unchecked:selected {\n" -" image: url(icon:/primary/checkbox_unchecked_invert.svg);\n" -"}\n" -"\n" -"QMenu::indicator:non-exclusive:checked {\n" -" image: url(icon:/primary/checkbox_checked.svg);\n" -"}\n" -"\n" -"QMenu::indicator:non-exclusive:checked:selected {\n" -" image: url(icon:/primary/checkbox_checked_invert.svg);\n" -"}\n" -"\n" -"QMenu::indicator:exclusive:unchecked {\n" -" image: url(icon:/primary/radiobutton_unchecked.svg);\n" -"}\n" -"\n" -"QMenu::indicator:exclusive:unchecked:selected {\n" -" image: url(icon:/primary/radiobutton_unchecked_invert.svg);\n" -"}\n" -"\n" -"QMenu::indicator:exclusive:checked {\n" -" image: url(icon:/primary/radiobutton_checked.svg);\n" -"}\n" -"\n" -"QMenu::indicator:exclusive:checked:selected {\n" -" image: url(icon:/primary/radiobutton_checked_invert.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QMenuBar */\n" -"\n" -"QMenuBar {\n" -" background-color: #f5f5f5;\n" -" color: #555555;\n" -"}\n" -"\n" -"QMenuBar::item {\n" -" height: 32px;\n" -" padding: 8px;\n" -" background-color: transparent;\n" -" color: #555555;\n" -"}\n" -"\n" -"QMenuBar::item:selected,\n" -"QMenuBar::item:pressed {\n" -" color: #3c3c3c;\n" -" background-color: #75a7ff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QToolBox */\n" -"\n" -"QToolBox::tab {\n" -" background-color: #f5f5f5;\n" -" color: #555555;\n" -" text-transform: uppercase;\n" -" border-radius: 4px;\n" -" padding-left: 15px;\n" -"}\n" -"\n" -"QToolBox::tab:selected,\n" -"QToolBox::tab:hover {\n" -" background-color: rgba(41, 121, 255, 0.2);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QProgressBar */\n" -"\n" -"QProgressBar {\n" -" border-radius: 0;\n" -" background-color: #ffffff;\n" -" text-align: center;\n" -" color: transparent;\n" -"}\n" -"\n" -"QProgressBar::chunk {\n" -" background-color: #2979ff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QScrollBar */\n" -"\n" -"QScrollBar:horizontal {\n" -" border: 0;\n" -" background: #f5f5f5;\n" -" height: 8px;\n" -"}\n" -"\n" -"QScrollBar:vertical {\n" -" border: 0;\n" -" background: #f5f5f5;\n" -" width: 8px;\n" -"}\n" -"\n" -"QScrollBar::handle {\n" -" background: rgba(41, 121, 255, 0.1);\n" -"}\n" -"\n" -"QScrollBar::handle:horizontal {\n" -" min-width: 24px;\n" -"}\n" -"\n" -"QScrollBar::handle:vertical {\n" -" min-height: 24px;\n" -"}\n" -"\n" -"QScrollBar::handle:vertical:hover,\n" -"QScrollBar::handle:horizontal:hover {\n" -" background: #2979ff;\n" -"}\n" -"\n" -"QScrollBar::add-line:vertical,\n" -"QScrollBar::sub-line:vertical,\n" -"QScrollBar::add-line:horizontal,\n" -"QScrollBar::sub-line:horizontal {\n" -" border: 0;\n" -" background: transparent;\n" -" width: 0px;\n" -" height: 0px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QScrollBar-Big */\n" -"\n" -"QScrollBar.big:horizontal {\n" -" border: 0;\n" -" background: #f5f5f5;\n" -" height: 36px;\n" -"}\n" -"\n" -"QScrollBar.big:vertical {\n" -" border: 0;\n" -" background: #f5f5f5;\n" -" width: 36px;\n" -"}\n" -"\n" -"QScrollBar.big::handle,\n" -"QScrollBar.big::handle:vertical:hover,\n" -"QScrollBar.big::handle:horizontal:hover {\n" -" background: #2979ff;\n" -"}\n" -"\n" -"QScrollBar.big::handle:horizontal {\n" -" min-width: 24px;\n" -"}\n" -"\n" -"QScrollBar.big::handle:vertical {\n" -" min-height: 24px;\n" -"}\n" -"\n" -"QScrollBar.big::add-line:vertical,\n" -"QScrollBar.big::sub-line:vertical,\n" -"QScrollBar.big::add-line:horizontal,\n" -"QScrollBar.big::sub-line:horizontal {\n" -" border: 0;\n" -" background: transparent;\n" -" width: 0px;\n" -" height: 0px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QSlider */\n" -"\n" -"QSlider:horizontal {\n" -" min-height: 24px;\n" -" max-height: 24px;\n" -"}\n" -"\n" -"QSlider:vertical {\n" -" min-width: 24px;\n" -" max-width: 24px;\n" -"}\n" -"\n" -"QSlider::groove:horizontal {\n" -" height: 4px;\n" -" background: #393939;\n" -" margin: 0 12px;\n" -"}\n" -"\n" -"QSlider::groove:vertical {\n" -" width: 4px;\n" -" background: #393939;\n" -" margin: 12px 0;\n" -" border-radius: 24px;\n" -"}\n" -"\n" -"QSlider::handle:horizontal {\n" -" image: url(icon:/primary/slider.svg);\n" -" width: 24px;\n" -" height: 24px;\n" -" margin: -24px -12px;\n" -"}\n" -"\n" -"QSlider::handle:vertical {\n" -" image: url(icon:/primary/slider.svg);\n" -" border-radius: 24px;\n" -" width: 24px;\n" -" height: 24px;\n" -" margin: -12px -24px;\n" -"}\n" -"\n" -"QSlider::add-page {\n" -"background: #f5f5f5;\n" -"}\n" -"\n" -"QSlider::sub-page {\n" -"background: #2979ff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QLabel */\n" -"\n" -"QLabel {\n" -" border: none;\n" -" background: transparent;\n" -" color: #555555\n" -"}\n" -"\n" -"QLabel:disabled {\n" -" color: rgba(85, 85, 85, 0.2)\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* VLines and HLinex */\n" -"\n" -"QFrame[frameShape=\"4\"] {\n" -" border-width: 1px 0 0 0;\n" -" background: none;\n" -"}\n" -"\n" -"QFrame[frameShape=\"5\"] {\n" -" border-width: 0 1px 0 0;\n" -" background: none;\n" -"}\n" -"\n" -"QFrame[frameShape=\"4\"],\n" -"QFrame[frameShape=\"5\"] {\n" -" border-color: #ffffff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QToolBar */\n" -"\n" -"QToolBar {\n" -" background: #e6e6e6;\n" -" border: 0px solid;\n" -"}\n" -"\n" -"QToolBar:horizontal {\n" -" border-bottom: 1px solid #ffffff;\n" -"}\n" -"\n" -"QToolBar:vertical {\n" -" border-right: 1px solid #ffffff;\n" -"}\n" -"\n" -"QToolBar::handle:horizontal {\n" -" image: url(icon:/primary/toolbar-handle-horizontal.svg);\n" -"}\n" -"\n" -"QToolBar::handle:vertical {\n" -" image: url(icon:/primary/toolbar-handle-vertical.svg);\n" -"}\n" -"\n" -"QToolBar::separator:horizontal {\n" -" border-right: 1px solid #ffffff;\n" -" border-left: 1px solid #ffffff;\n" -" width: 1px;\n" -"}\n" -"\n" -"QToolBar::separator:vertical {\n" -" border-top: 1px solid #ffffff;\n" -" border-bottom: 1px solid #ffffff;\n" -" height: 1px;\n" -"}\n" -"\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QToolButton */\n" -"\n" -"QToolButton {\n" -" background: #e6e6e6;\n" -" border: 0px;\n" -" height: 36px;\n" -" margin: 3px;\n" -" padding: 3px;\n" -" border-right: 12px solid #e6e6e6;\n" -" border-left: 12px solid #e6e6e6;\n" -"}\n" -"\n" -"QToolButton:hover {\n" -" background: #ffffff;\n" -" border-right: 12px solid #ffffff;\n" -" border-left: 12px solid #ffffff;\n" -"}\n" -"\n" -"QToolButton:pressed {\n" -" background: #f5f5f5;\n" -" border-right: 12px solid #f5f5f5;\n" -" border-left: 12px solid #f5f5f5;\n" -"}\n" -"\n" -"QToolButton:checked {\n" -" background: #ffffff;\n" -" border-left: 12px solid #ffffff;\n" -" border-right: 12px solid #2979ff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* General viewers */\n" -"\n" -"QTableView {\n" -" background-color: #e6e6e6;\n" -" border: 1px solid #f5f5f5;\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"QTreeView,\n" -"QListView {\n" -" border-radius: 4px;\n" -" padding: 4px;\n" -" margin: 0px;\n" -" border: 0px;\n" -"}\n" -"\n" -"QTableView::item,\n" -"QTreeView::item,\n" -"QListView::item {\n" -" padding: 4px;\n" -" min-height: 32px;\n" -" color: #555555;\n" -" selection-color: #555555; /* For Windows */\n" -" border-color: transparent; /* Fix #34 */\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Items Selection */\n" -"\n" -"QTableView::item:selected,\n" -"QTreeView::item:selected,\n" -"QListView::item:selected {\n" -" background-color: rgba(41, 121, 255, 0.2);\n" -" selection-background-color: rgba(41, 121, 255, 0.2);\n" -" color: #555555;\n" -" selection-color: #555555; /* For Windows */\n" -"}\n" -"\n" -"QTableView::item:selected:focus,\n" -"QTreeView::item:selected:focus,\n" -"QListView::item:selected:focus {\n" -" background-color: #2979ff;\n" -" selection-background-color: #2979ff;\n" -" color: #3c3c3c;\n" -" selection-color: #3c3c3c; /* For Windows */\n" -"}\n" -"\n" -"QTableView {\n" -" selection-background-color: rgba(41, 121, 255, 0.2);\n" -"}\n" -"\n" -"QTableView:focus {\n" -" selection-background-color: #2979ff;\n" -"}\n" -"\n" -"QTableView::item:disabled {\n" -" color: rgba(85, 85, 85, 0.3);\n" -" selection-color: rgba(85, 85, 85, 0.3);\n" -" background-color: #f5f5f5;\n" -" selection-background-color: #f5f5f5;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QTreeView */\n" -"\n" -"QTreeView::branch{\n" -" background-color: #f5f5f5;\n" -"}\n" -"\n" -"QTreeView::branch:closed:has-children:has-siblings,\n" -"QTreeView::branch:closed:has-children:!has-siblings {\n" -" image: url(icon:/primary/branch-closed.svg);\n" -"}\n" -"\n" -"QTreeView::branch:open:has-children:!has-siblings,\n" -"QTreeView::branch:open:has-children:has-siblings {\n" -" image: url(icon:/primary/branch-open.svg);\n" -"}\n" -"\n" -"QTreeView::branch:has-siblings:!adjoins-item {\n" -" border-image: url(icon:/disabled/vline.svg) 0;\n" -"}\n" -"\n" -"QTreeView::branch:has-siblings:adjoins-item {\n" -" border-image: url(icon:/disabled/branch-more.svg) 0;\n" -"}\n" -"\n" -"QTreeView::branch:!has-children:!has-siblings:adjoins-item,\n" -"QTreeView::branch:has-children:!has-siblings:adjoins-item {\n" -" border-image: url(icon:/disabled/branch-end.svg) 0;\n" -"}\n" -"\n" -"QTreeView QHeaderView::section {\n" -" border: none;\n" -"}\n" -"\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Custom buttons */\n" -"\n" -"QPushButton.danger {\n" -" border-color: #dc3545;\n" -" color: #dc3545;\n" -"}\n" -"\n" -"QPushButton.danger:checked,\n" -"QPushButton.danger:pressed {\n" -" color: #e6e6e6;\n" -" background-color: #dc3545;\n" -"}\n" -"\n" -"QPushButton.warning{\n" -" border-color: #ffc107;\n" -" color: #ffc107;\n" -"}\n" -"\n" -"QPushButton.warning:checked,\n" -"QPushButton.warning:pressed {\n" -" color: #e6e6e6;\n" -" background-color: #ffc107;\n" -"}\n" -"\n" -"QPushButton.success {\n" -" border-color: #17a2b8;\n" -" color: #17a2b8;\n" -"}\n" -"\n" -"QPushButton.success:checked,\n" -"QPushButton.success:pressed {\n" -" color: #e6e6e6;\n" -" background-color: #17a2b8;\n" -"}\n" -"\n" -"QPushButton.danger:flat:hover {\n" -" background-color: rgba(220, 53, 69, 0.2);\n" -"}\n" -"\n" -"QPushButton.danger:flat:pressed,\n" -"QPushButton.danger:flat:checked {\n" -" background-color: rgba(220, 53, 69, 0.1);\n" -" color: #dc3545;\n" -"}\n" -"\n" -"QPushButton.warning:flat:hover {\n" -" background-color: rgba(255, 193, 7, 0.2);\n" -"}\n" -"\n" -"QPushButton.warning:flat:pressed,\n" -"QPushButton.warning:flat:checked {\n" -" background-color: rgba(255, 193, 7, 0.1);\n" -" color: #ffc107;\n" -"}\n" -"\n" -"QPushButton.success:flat:hover {\n" -" background-color: rgba(23, 162, 184, 0.2);\n" -"}\n" -"\n" -"QPushButton.success:flat:pressed,\n" -"QPushButton.success:flat:checked {\n" -" background-color: rgba(23, 162, 184, 0.1);\n" -" color: #17a2b8;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QTableView */\n" -"\n" -"QTableCornerButton::section {\n" -" background-color: #f5f5f5;\n" -" border-radius: 0px;\n" -" border-right: 1px solid;\n" -" border-bottom: 1px solid;\n" -" border-color: #e6e6e6;\n" -"}\n" -"\n" -"QTableView {\n" -" alternate-background-color: rgba(245, 245, 245, 0.7);\n" -"}\n" -"\n" -"QHeaderView {\n" -" border: none;\n" -"}\n" -"\n" -"QHeaderView::section {\n" -" color: rgba(85, 85, 85, 0.7);\n" -" text-transform: uppercase;\n" -" background-color: #f5f5f5;\n" -" padding: 0 24px;\n" -" height: 36px;\n" -" border-radius: 0px;\n" -" border-right: 1px solid;\n" -" border-bottom: 1px solid;\n" -" border-color: #e6e6e6;\n" -"}\n" -"\n" -"QHeaderView::section:vertical {\n" -"\n" -"}\n" -"\n" -"QHeaderView::section:horizontal {\n" -"\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QLCDNumber */\n" -"\n" -"QLCDNumber {\n" -" color: #2979ff;\n" -" background-color:rgba(41, 121, 255, 0.1);\n" -" border: 1px solid rgba(41, 121, 255, 0.3);\n" -" border-radius: 4px;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QCalendarWidget */\n" -"\n" -"#qt_calendar_prevmonth {\n" -" qproperty-icon: url(icon:/primary/leftarrow.svg);\n" -"}\n" -"\n" -"#qt_calendar_nextmonth {\n" -" qproperty-icon: url(icon:/primary/rightarrow.svg);\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Inline QLineEdit */\n" -"\n" -"QTreeView QLineEdit,\n" -"QTableView QLineEdit,\n" -"QListView QLineEdit {\n" -" color: #555555;\n" -" background-color: #f5f5f5;\n" -" border: 1px solid unset;\n" -" border-radius: unset;\n" -" padding: unset;\n" -" padding-left: unset;\n" -" height: unset;\n" -" border-width: unset;\n" -" border-top-left-radius: unset;\n" -" border-top-right-radius: unset;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QToolTip */\n" -"\n" -"QToolTip {\n" -" padding: 4px;\n" -" border: 1px solid #e6e6e6;\n" -" border-radius: 4px;\n" -" color: #555555;\n" -" background-color: #ffffff;\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* QDialog */\n" -"\n" -"\n" -"\n" -"QDialog QToolButton:disabled {\n" -" background-color: #f5f5f5;\n" -" color: #555555\n" -"}\n" -"\n" -"/* ------------------------------------------------------------------------ */\n" -"/* Grips */\n" -"\n" -"\n" -"QMainWindow::separator:vertical,\n" -"QSplitter::handle:horizontal {\n" -" image: url(icon:/primary/splitter-horizontal.svg);\n" -"}\n" -"\n" -"QMainWindow::separator:horizontal,\n" -"QSplitter::handle:vertical {\n" -" image: url(icon:/primary/splitter-vertical.svg);\n" -"}\n" -"\n" -"QSizeGrip {\n" -" image: url(icon:/primary/sizegrip.svg);\n" -" background-color: transparent;\n" -"}\n" -"\n" -"QMenuBar QToolButton:hover,\n" -"QMenuBar QToolButton:pressed,\n" -"QMenuBar QToolButton {\n" -" border-width: 0;\n" -" border-left: 10px;\n" -" border-image: url(icon:/primary/rightarrow2.svg);\n" -" background-color: transparent;\n" -"}") + MainWindow.setStyleSheet( + "/* ------------------------------------------------------------------------ */\n" + "/* QtMaterial - https://github.com/UN-GCPDS/qt-material\n" + "/* By Yeison Cardona - GCPDS\n" + "/* ------------------------------------------------------------------------ */\n" + "\n" + "*{\n" + " color: #555555;\n" + "\n" + " font-family: Roboto;\n" + "\n" + " \n" + " font-size: 13px;\n" + " \n" + "\n" + " \n" + " line-height: 13px;\n" + " \n" + "\n" + " selection-background-color: #75a7ff;\n" + " selection-color: #3c3c3c;\n" + "}\n" + "\n" + "*:focus {\n" + " outline: none;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Custom colors */\n" + "\n" + ".danger{\n" + " color: #dc3545;\n" + " background-color: transparent;\n" + "}\n" + "\n" + ".warning{\n" + " color: #ffc107;\n" + " background-color: transparent;\n" + "}\n" + "\n" + ".success{\n" + " color: #17a2b8;\n" + " background-color: transparent;\n" + "}\n" + "\n" + ".danger:disabled{\n" + " color: rgba(220, 53, 69, 0.4);\n" + " border-color: rgba(220, 53, 69, 0.4);\n" + "}\n" + "\n" + ".warning:disabled{\n" + " color: rgba(255, 193, 7, 0.4);\n" + " border-color: rgba(255, 193, 7, 0.4);\n" + "}\n" + "\n" + ".success:disabled{\n" + " color: rgba(23, 162, 184, 0.4);\n" + " border-color: rgba(23, 162, 184, 0.4);\n" + "}\n" + "\n" + ".danger:flat:disabled{\n" + " background-color: rgba(220, 53, 69, 0.1);\n" + "}\n" + "\n" + ".warning:flat:disabled{\n" + " background-color: rgba(255, 193, 7, 0.1);\n" + "}\n" + "\n" + ".success:flat:disabled{\n" + " background-color: rgba(23, 162, 184, 0.1);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Basic widgets */\n" + "\n" + "QWidget {\n" + " background-color: #e6e6e6;\n" + "}\n" + "\n" + "QGroupBox,\n" + "QFrame {\n" + " background-color: #e6e6e6;\n" + " border: 2px solid #ffffff;\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QGroupBox.fill_background,\n" + "QFrame.fill_background {\n" + " background-color: #f5f5f5;\n" + " border: 2px solid #f5f5f5;\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QSplitter {\n" + " background-color: transparent;\n" + " border: none\n" + "}\n" + "\n" + "QStatusBar {\n" + " color: #555555;\n" + " background-color: rgba(255, 255, 255, 0.2);\n" + " border-radius: 0px;\n" + "}\n" + "\n" + "QScrollArea,\n" + "QStackedWidget,\n" + "QWidget > QToolBox,\n" + "QToolBox > QWidget,\n" + "QTabWidget > QWidget {\n" + " border: none;\n" + "}\n" + "\n" + "QTabWidget::pane {\n" + " border: none;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Inputs */\n" + "\n" + "QDateTimeEdit,\n" + "QSpinBox,\n" + "QDoubleSpinBox,\n" + "QTextEdit,\n" + "QLineEdit,\n" + "QPushButton {\n" + " color: #2979ff;\n" + " background-color: #e6e6e6;\n" + " border: 2px solid #2979ff;\n" + " border-radius: 4px;\n" + " height: 32px;\n" + "}\n" + "\n" + "QDateTimeEdit,\n" + "QSpinBox,\n" + "QDoubleSpinBox,\n" + "QTreeView,\n" + "QListView,\n" + "QLineEdit,\n" + "QComboBox {\n" + " padding-left: 16px;\n" + " border-radius: 0px;\n" + " background-color: #f5f5f5;\n" + " border-width: 0 0 2px 0;\n" + " border-radius: 0px;\n" + " border-top-left-radius: 4px;\n" + " border-top-right-radius: 4px;\n" + " height: 32px;\n" + "}\n" + "\n" + "QPlainTextEdit {\n" + " border-radius: 4px;\n" + " padding: 8px 16px;\n" + " background-color: #e6e6e6;\n" + " border: 2px solid #ffffff;\n" + "}\n" + "\n" + "QTextEdit {\n" + " padding: 8px 16px;\n" + " border-radius: 4px;\n" + " background-color: #f5f5f5;\n" + "}\n" + "\n" + "QDateTimeEdit:disabled,\n" + "QSpinBox:disabled,\n" + "QDoubleSpinBox:disabled,\n" + "QTextEdit:disabled,\n" + "QLineEdit:disabled {\n" + " color: rgba(41, 121, 255, 0.2);\n" + " background-color: rgba(245, 245, 245, 0.75);\n" + " border: 2px solid rgba(41, 121, 255, 0.2);\n" + " border-width: 0 0 2px 0;\n" + " padding: 0px 16px;\n" + " border-radius: 0px;\n" + " border-top-left-radius: 4px;\n" + " border-top-right-radius: 4px;\n" + " height: 32px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QComboBox */\n" + "\n" + "QComboBox {\n" + " color: #2979ff;\n" + " border: 1px solid #2979ff;\n" + " border-width: 0 0 2px 0;\n" + " background-color: #f5f5f5;\n" + " border-radius: 0px;\n" + " border-top-left-radius: 4px;\n" + " border-top-right-radius: 4px;\n" + " height: 32px;\n" + "}\n" + "\n" + "QComboBox:disabled {\n" + " color: rgba(41, 121, 255, 0.2);\n" + " background-color: rgba(245, 245, 245, 0.75);\n" + " border-bottom: 2px solid rgba(41, 121, 255, 0.2);\n" + "}\n" + "\n" + "QComboBox::drop-down {\n" + " border: none;\n" + " color: #2979ff;\n" + " width: 20px;\n" + "}\n" + "\n" + "QComboBox::down-arrow {\n" + " image: url(icon:/primary/downarrow.svg);\n" + " margin-right: 12px;\n" + "}\n" + "\n" + "QComboBox::down-arrow:disabled {\n" + " image: url(icon:/disabled/downarrow.svg);\n" + " margin-right: 12px;\n" + "}\n" + "\n" + "QComboBox QAbstractItemView {\n" + " background-color: #f5f5f5;\n" + " border: 2px solid #ffffff;\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QComboBox[frame='false'] {\n" + " color: #2979ff;\n" + " background-color: transparent;\n" + " border: 1px solid transparent;\n" + "}\n" + "QComboBox[frame='false']:disabled {\n" + " color: rgba(41, 121, 255, 0.2);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Spin buttons */\n" + "\n" + "QDateTimeEdit::up-button,\n" + "QDoubleSpinBox::up-button,\n" + "QSpinBox::up-button {\n" + " subcontrol-origin: border;\n" + " subcontrol-position: top right;\n" + " width: 20px;\n" + " image: url(icon:/primary/uparrow.svg);\n" + " border-width: 0px;\n" + " margin-right: 5px;\n" + "}\n" + "\n" + "QDateTimeEdit::up-button:disabled,\n" + "QDoubleSpinBox::up-button:disabled,\n" + "QSpinBox::up-button:disabled {\n" + " image: url(icon:/disabled/uparrow.svg);\n" + "}\n" + "\n" + "QDateTimeEdit::down-button,\n" + "QDoubleSpinBox::down-button,\n" + "QSpinBox::down-button {\n" + " subcontrol-origin: border;\n" + " subcontrol-position: bottom right;\n" + " width: 20px;\n" + " image: url(icon:/primary/downarrow.svg);\n" + " border-width: 0px;\n" + " border-top-width: 0;\n" + " margin-right: 5px;\n" + "}\n" + "\n" + "QDateTimeEdit::down-button:disabled,\n" + "QDoubleSpinBox::down-button:disabled,\n" + "QSpinBox::down-button:disabled {\n" + " image: url(icon:/disabled/downarrow.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QPushButton */\n" + "\n" + "QPushButton {\n" + " text-transform: uppercase;\n" + " margin: 0px;\n" + " padding: 1px 16px;\n" + " height: 32px;\n" + " font-weight: bold;\n" + "\n" + " \n" + " border-radius: 4px;\n" + " \n" + "\n" + "\n" + "}\n" + "\n" + "QPushButton:checked,\n" + "QPushButton:pressed {\n" + " color: #e6e6e6;\n" + " background-color: #2979ff;\n" + "}\n" + "\n" + "QPushButton:flat {\n" + " margin: 0px;\n" + " color: #2979ff;\n" + " border: none;\n" + " background-color: transparent;\n" + "}\n" + "\n" + "QPushButton:flat:hover {\n" + " background-color: rgba(41, 121, 255, 0.2);\n" + "}\n" + "\n" + "QPushButton:flat:pressed,\n" + "QPushButton:flat:checked {\n" + " background-color: rgba(41, 121, 255, 0.1);\n" + "}\n" + "\n" + "QPushButton:disabled {\n" + " color: rgba(255, 255, 255, 0.75);\n" + " background-color: transparent;\n" + " border-color: #ffffff;\n" + "}\n" + "\n" + "QPushButton:flat:disabled {\n" + " color: rgba(255, 255, 255, 0.75);\n" + " background-color: rgba(255, 255, 255, 0.25);\n" + " border: none;\n" + "}\n" + "\n" + "QPushButton:disabled {\n" + " border: 2px solid rgba(255, 255, 255, 0.75);\n" + "}\n" + "\n" + "QPushButton:checked:disabled {\n" + " color: #f5f5f5;\n" + " background-color: #ffffff;\n" + " border-color: #ffffff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QTabBar */\n" + "\n" + "QTabBar{\n" + " text-transform: uppercase;\n" + " font-weight: bold;\n" + "}\n" + "\n" + "QTabBar::tab {\n" + " color: #555555;\n" + " border: 0px;\n" + "}\n" + "\n" + "QTabBar::tab:bottom,\n" + "QTabBar::tab:top{\n" + " padding: 0 16px;\n" + " height: 28px;\n" + "}\n" + "\n" + "QTabBar::tab:left,\n" + "QTabBar::tab:right{\n" + " padding: 16px 0;\n" + " width: 28px;\n" + "}\n" + "\n" + "QTabBar::tab:top:selected,\n" + "QTabBar::tab:top:hover {\n" + " color: #2979ff;\n" + " border-bottom: 2px solid #2979ff;\n" + "}\n" + "\n" + "QTabBar::tab:bottom:selected,\n" + "QTabBar::tab:bottom:hover {\n" + " color: #2979ff;\n" + " border-top: 2px solid #2979ff;\n" + "}\n" + "\n" + "QTabBar::tab:right:selected,\n" + "QTabBar::tab:right:hover {\n" + " color: #2979ff;\n" + " border-left: 2px solid #2979ff;\n" + "}\n" + "\n" + "QTabBar::tab:left:selected,\n" + "QTabBar::tab:left:hover {\n" + " color: #2979ff;\n" + " border-right: 2px solid #2979ff;\n" + "}\n" + "\n" + "QTabBar QToolButton:hover,\n" + "QTabBar QToolButton {\n" + " border: 20px;\n" + " background-color: #e6e6e6;\n" + "}\n" + "\n" + "QTabBar QToolButton::up-arrow {\n" + " image: url(icon:/disabled/uparrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::up-arrow:hover {\n" + " image: url(icon:/primary/uparrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::down-arrow {\n" + " image: url(icon:/disabled/downarrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::down-arrow:hover {\n" + " image: url(icon:/primary/downarrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::right-arrow {\n" + " image: url(icon:/primary/rightarrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::right-arrow:hover {\n" + " image: url(icon:/disabled/rightarrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::left-arrow {\n" + " image: url(icon:/primary/leftarrow2.svg);\n" + "}\n" + "\n" + "QTabBar QToolButton::left-arrow:hover {\n" + " image: url(icon:/disabled/leftarrow2.svg);\n" + "}\n" + "\n" + "QTabBar::close-button {\n" + " image: url(icon:/disabled/tab_close.svg);\n" + "}\n" + "\n" + "QTabBar::close-button:hover {\n" + " image: url(icon:/primary/tab_close.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QGroupBox */\n" + "\n" + "QGroupBox {\n" + " padding: 16px;\n" + " padding-top: 36px;\n" + " line-height: ;\n" + " text-transform: uppercase;\n" + " font-size: ;\n" + "}\n" + "\n" + "QGroupBox::title {\n" + " color: rgba(85, 85, 85, 0.4);\n" + " subcontrol-origin: margin;\n" + " subcontrol-position: top left;\n" + " padding: 16px;\n" + " background-color: #e6e6e6;\n" + " background-color: transparent;\n" + " height: 36px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QRadioButton and QCheckBox labels */\n" + "\n" + "QRadioButton,\n" + "QCheckBox {\n" + " spacing: 12px;\n" + " color: #555555;\n" + " line-height: 14px;\n" + " height: 36px;\n" + " background-color: transparent;\n" + " spacing: 5px;\n" + "}\n" + "\n" + "QRadioButton:disabled,\n" + "QCheckBox:disabled {\n" + " color: rgba(85, 85, 85, 0.3);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* General Indicators */\n" + "\n" + "QGroupBox::indicator {\n" + " width: 24px;\n" + " height: 24px;\n" + " border-radius: 3px;\n" + "}\n" + "\n" + "QMenu::indicator,\n" + "QListView::indicator,\n" + "QTableWidget::indicator,\n" + "QRadioButton::indicator,\n" + "QCheckBox::indicator {\n" + " width: 28px;\n" + " height: 28px;\n" + " border-radius: 4px;\n" + " }\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QListView Indicator */\n" + "\n" + "QListView::indicator:checked,\n" + "QListView::indicator:checked:selected,\n" + "QListView::indicator:checked:focus {\n" + " image: url(icon:/primary/checklist.svg);\n" + "}\n" + "\n" + "QListView::indicator:checked:selected:active {\n" + " image: url(icon:/primary/checklist_invert.svg);\n" + "}\n" + "\n" + "QListView::indicator:checked:disabled {\n" + " image: url(icon:/disabled/checklist.svg);\n" + "}\n" + "\n" + "QListView::indicator:indeterminate,\n" + "QListView::indicator:indeterminate:selected,\n" + "QListView::indicator:indeterminate:focus {\n" + " image: url(icon:/primary/checklist_indeterminate.svg);\n" + "}\n" + "\n" + "QListView::indicator:indeterminate:selected:active {\n" + " image: url(icon:/primary/checklist_indeterminate_invert.svg);\n" + "}\n" + "\n" + "QListView::indicator:indeterminate:disabled {\n" + " image: url(icon:/disabled/checklist_indeterminate.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QTableView Indicator */\n" + "\n" + "QTableView::indicator:enabled:checked,\n" + "QTableView::indicator:enabled:checked:selected,\n" + "QTableView::indicator:enabled:checked:focus {\n" + " image: url(icon:/primary/checkbox_checked.svg);\n" + "}\n" + "\n" + "QTableView::indicator:checked:selected:active {\n" + " image: url(icon:/primary/checkbox_checked_invert.svg);\n" + "}\n" + "\n" + "QTableView::indicator:disabled:checked,\n" + "QTableView::indicator:disabled:checked:selected,\n" + "QTableView::indicator:disabled:checked:focus {\n" + " image: url(icon:/disabled/checkbox_checked.svg);\n" + "}\n" + "\n" + "QTableView::indicator:enabled:unchecked,\n" + "QTableView::indicator:enabled:unchecked:selected,\n" + "QTableView::indicator:enabled:unchecked:focus {\n" + " image: url(icon:/primary/checkbox_unchecked.svg);\n" + "}\n" + "\n" + "QTableView::indicator:unchecked:selected:active {\n" + " image: url(icon:/primary/checkbox_unchecked_invert.svg);\n" + "}\n" + "\n" + "QTableView::indicator:disabled:unchecked,\n" + "QTableView::indicator:disabled:unchecked:selected,\n" + "QTableView::indicator:disabled:unchecked:focus {\n" + " image: url(icon:/disabled/checkbox_unchecked.svg);\n" + "}\n" + "\n" + "QTableView::indicator:enabled:indeterminate,\n" + "QTableView::indicator:enabled:indeterminate:selected,\n" + "QTableView::indicator:enabled:indeterminate:focus {\n" + " image: url(icon:/primary/checkbox_indeterminate.svg);\n" + "}\n" + "\n" + "QTableView::indicator:indeterminate:selected:active {\n" + " image: url(icon:/primary/checkbox_indeterminate_invert.svg);\n" + "}\n" + "\n" + "QTableView::indicator:disabled:indeterminate,\n" + "QTableView::indicator:disabled:indeterminate:selected,\n" + "QTableView::indicator:disabled:indeterminate:focus {\n" + " image: url(icon:/disabled/checkbox_indeterminate.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QCheckBox and QGroupBox Indicator */\n" + "\n" + "QCheckBox::indicator:checked,\n" + "QGroupBox::indicator:checked {\n" + " image: url(icon:/primary/checkbox_checked.svg);\n" + "}\n" + "\n" + "QCheckBox::indicator:unchecked,\n" + "QGroupBox::indicator:unchecked {\n" + " image: url(icon:/primary/checkbox_unchecked.svg);\n" + "}\n" + "\n" + "QCheckBox::indicator:indeterminate,\n" + "QGroupBox::indicator:indeterminate {\n" + " image: url(icon:/primary/checkbox_indeterminate.svg);\n" + "}\n" + "\n" + "QCheckBox::indicator:checked:disabled,\n" + "QGroupBox::indicator:checked:disabled {\n" + " image: url(icon:/disabled/checkbox_checked.svg);\n" + "}\n" + "\n" + "QCheckBox::indicator:unchecked:disabled,\n" + "QGroupBox::indicator:unchecked:disabled {\n" + " image: url(icon:/disabled/checkbox_unchecked.svg);\n" + "}\n" + "\n" + "QCheckBox::indicator:indeterminate:disabled,\n" + "QGroupBox::indicator:indeterminate:disabled {\n" + " image: url(icon:/disabled/checkbox_indeterminate.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QRadioButton Indicator */\n" + "\n" + "QRadioButton::indicator:checked {\n" + " image: url(icon:/primary/radiobutton_checked.svg);\n" + "}\n" + "\n" + "QRadioButton::indicator:unchecked {\n" + " image: url(icon:/primary/radiobutton_unchecked.svg);\n" + "}\n" + "\n" + "QRadioButton::indicator:checked:disabled {\n" + " image: url(icon:/disabled/radiobutton_checked.svg);\n" + "}\n" + "\n" + "QRadioButton::indicator:unchecked:disabled {\n" + " image: url(icon:/disabled/radiobutton_unchecked.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QDockWidget */\n" + "\n" + "QDockWidget {\n" + " color: #555555;\n" + " text-transform: uppercase;\n" + " border: 2px solid #f5f5f5;\n" + " titlebar-close-icon: url(icon:/primary/close.svg);\n" + " titlebar-normal-icon: url(icon:/primary/float.svg);\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QDockWidget::title {\n" + " text-align: left;\n" + " padding-left: 36px;\n" + " padding: 3px;\n" + " margin-top: 4px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QComboBox indicator */\n" + "\n" + "QComboBox::indicator:checked {\n" + " image: url(icon:/primary/checklist.svg);\n" + "}\n" + "\n" + "QComboBox::indicator:checked:selected {\n" + " image: url(icon:/primary/checklist_invert.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Menu Items */\n" + "\n" + "QComboBox::item,\n" + "QCalendarWidget QMenu::item,\n" + "QMenu::item {\n" + " \n" + " height: 28px;\n" + " \n" + " border: 8px solid transparent;\n" + " color: #555555;\n" + "}\n" + "\n" + "QCalendarWidget QMenu::item,\n" + "QMenu::item {\n" + " \n" + " \n" + " \n" + "}\n" + "\n" + "\n" + "QComboBox::item:selected,\n" + "QCalendarWidget QMenu::item:selected,\n" + "QMenu::item:selected {\n" + " color: #3c3c3c;\n" + " background-color: #75a7ff;\n" + " border-radius: 0px;\n" + "}\n" + "\n" + "QComboBox::item:disabled,\n" + "QCalendarWidget QMenu::item:disabled,\n" + "QMenu::item:disabled {\n" + " color: rgba(85, 85, 85, 0.3);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QMenu */\n" + "\n" + "QCalendarWidget QMenu,\n" + "QMenu {\n" + " background-color: #f5f5f5;\n" + " border: 2px solid #ffffff;\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QMenu::separator {\n" + " height: 2px;\n" + " background-color: #ffffff;\n" + " margin-left: 2px;\n" + " margin-right: 2px;\n" + "}\n" + "\n" + "QMenu::right-arrow{\n" + " image: url(icon:/primary/rightarrow.svg);\n" + " width: 16px;\n" + " height: 16px;\n" + "}\n" + "\n" + "QMenu::right-arrow:selected{\n" + " image: url(icon:/disabled/rightarrow.svg);\n" + "}\n" + "\n" + "QMenu::indicator:non-exclusive:unchecked {\n" + " image: url(icon:/primary/checkbox_unchecked.svg);\n" + "}\n" + "\n" + "QMenu::indicator:non-exclusive:unchecked:selected {\n" + " image: url(icon:/primary/checkbox_unchecked_invert.svg);\n" + "}\n" + "\n" + "QMenu::indicator:non-exclusive:checked {\n" + " image: url(icon:/primary/checkbox_checked.svg);\n" + "}\n" + "\n" + "QMenu::indicator:non-exclusive:checked:selected {\n" + " image: url(icon:/primary/checkbox_checked_invert.svg);\n" + "}\n" + "\n" + "QMenu::indicator:exclusive:unchecked {\n" + " image: url(icon:/primary/radiobutton_unchecked.svg);\n" + "}\n" + "\n" + "QMenu::indicator:exclusive:unchecked:selected {\n" + " image: url(icon:/primary/radiobutton_unchecked_invert.svg);\n" + "}\n" + "\n" + "QMenu::indicator:exclusive:checked {\n" + " image: url(icon:/primary/radiobutton_checked.svg);\n" + "}\n" + "\n" + "QMenu::indicator:exclusive:checked:selected {\n" + " image: url(icon:/primary/radiobutton_checked_invert.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QMenuBar */\n" + "\n" + "QMenuBar {\n" + " background-color: #f5f5f5;\n" + " color: #555555;\n" + "}\n" + "\n" + "QMenuBar::item {\n" + " height: 32px;\n" + " padding: 8px;\n" + " background-color: transparent;\n" + " color: #555555;\n" + "}\n" + "\n" + "QMenuBar::item:selected,\n" + "QMenuBar::item:pressed {\n" + " color: #3c3c3c;\n" + " background-color: #75a7ff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QToolBox */\n" + "\n" + "QToolBox::tab {\n" + " background-color: #f5f5f5;\n" + " color: #555555;\n" + " text-transform: uppercase;\n" + " border-radius: 4px;\n" + " padding-left: 15px;\n" + "}\n" + "\n" + "QToolBox::tab:selected,\n" + "QToolBox::tab:hover {\n" + " background-color: rgba(41, 121, 255, 0.2);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QProgressBar */\n" + "\n" + "QProgressBar {\n" + " border-radius: 0;\n" + " background-color: #ffffff;\n" + " text-align: center;\n" + " color: transparent;\n" + "}\n" + "\n" + "QProgressBar::chunk {\n" + " background-color: #2979ff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QScrollBar */\n" + "\n" + "QScrollBar:horizontal {\n" + " border: 0;\n" + " background: #f5f5f5;\n" + " height: 8px;\n" + "}\n" + "\n" + "QScrollBar:vertical {\n" + " border: 0;\n" + " background: #f5f5f5;\n" + " width: 8px;\n" + "}\n" + "\n" + "QScrollBar::handle {\n" + " background: rgba(41, 121, 255, 0.1);\n" + "}\n" + "\n" + "QScrollBar::handle:horizontal {\n" + " min-width: 24px;\n" + "}\n" + "\n" + "QScrollBar::handle:vertical {\n" + " min-height: 24px;\n" + "}\n" + "\n" + "QScrollBar::handle:vertical:hover,\n" + "QScrollBar::handle:horizontal:hover {\n" + " background: #2979ff;\n" + "}\n" + "\n" + "QScrollBar::add-line:vertical,\n" + "QScrollBar::sub-line:vertical,\n" + "QScrollBar::add-line:horizontal,\n" + "QScrollBar::sub-line:horizontal {\n" + " border: 0;\n" + " background: transparent;\n" + " width: 0px;\n" + " height: 0px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QScrollBar-Big */\n" + "\n" + "QScrollBar.big:horizontal {\n" + " border: 0;\n" + " background: #f5f5f5;\n" + " height: 36px;\n" + "}\n" + "\n" + "QScrollBar.big:vertical {\n" + " border: 0;\n" + " background: #f5f5f5;\n" + " width: 36px;\n" + "}\n" + "\n" + "QScrollBar.big::handle,\n" + "QScrollBar.big::handle:vertical:hover,\n" + "QScrollBar.big::handle:horizontal:hover {\n" + " background: #2979ff;\n" + "}\n" + "\n" + "QScrollBar.big::handle:horizontal {\n" + " min-width: 24px;\n" + "}\n" + "\n" + "QScrollBar.big::handle:vertical {\n" + " min-height: 24px;\n" + "}\n" + "\n" + "QScrollBar.big::add-line:vertical,\n" + "QScrollBar.big::sub-line:vertical,\n" + "QScrollBar.big::add-line:horizontal,\n" + "QScrollBar.big::sub-line:horizontal {\n" + " border: 0;\n" + " background: transparent;\n" + " width: 0px;\n" + " height: 0px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QSlider */\n" + "\n" + "QSlider:horizontal {\n" + " min-height: 24px;\n" + " max-height: 24px;\n" + "}\n" + "\n" + "QSlider:vertical {\n" + " min-width: 24px;\n" + " max-width: 24px;\n" + "}\n" + "\n" + "QSlider::groove:horizontal {\n" + " height: 4px;\n" + " background: #393939;\n" + " margin: 0 12px;\n" + "}\n" + "\n" + "QSlider::groove:vertical {\n" + " width: 4px;\n" + " background: #393939;\n" + " margin: 12px 0;\n" + " border-radius: 24px;\n" + "}\n" + "\n" + "QSlider::handle:horizontal {\n" + " image: url(icon:/primary/slider.svg);\n" + " width: 24px;\n" + " height: 24px;\n" + " margin: -24px -12px;\n" + "}\n" + "\n" + "QSlider::handle:vertical {\n" + " image: url(icon:/primary/slider.svg);\n" + " border-radius: 24px;\n" + " width: 24px;\n" + " height: 24px;\n" + " margin: -12px -24px;\n" + "}\n" + "\n" + "QSlider::add-page {\n" + "background: #f5f5f5;\n" + "}\n" + "\n" + "QSlider::sub-page {\n" + "background: #2979ff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QLabel */\n" + "\n" + "QLabel {\n" + " border: none;\n" + " background: transparent;\n" + " color: #555555\n" + "}\n" + "\n" + "QLabel:disabled {\n" + " color: rgba(85, 85, 85, 0.2)\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* VLines and HLinex */\n" + "\n" + 'QFrame[frameShape="4"] {\n' + " border-width: 1px 0 0 0;\n" + " background: none;\n" + "}\n" + "\n" + 'QFrame[frameShape="5"] {\n' + " border-width: 0 1px 0 0;\n" + " background: none;\n" + "}\n" + "\n" + 'QFrame[frameShape="4"],\n' + 'QFrame[frameShape="5"] {\n' + " border-color: #ffffff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QToolBar */\n" + "\n" + "QToolBar {\n" + " background: #e6e6e6;\n" + " border: 0px solid;\n" + "}\n" + "\n" + "QToolBar:horizontal {\n" + " border-bottom: 1px solid #ffffff;\n" + "}\n" + "\n" + "QToolBar:vertical {\n" + " border-right: 1px solid #ffffff;\n" + "}\n" + "\n" + "QToolBar::handle:horizontal {\n" + " image: url(icon:/primary/toolbar-handle-horizontal.svg);\n" + "}\n" + "\n" + "QToolBar::handle:vertical {\n" + " image: url(icon:/primary/toolbar-handle-vertical.svg);\n" + "}\n" + "\n" + "QToolBar::separator:horizontal {\n" + " border-right: 1px solid #ffffff;\n" + " border-left: 1px solid #ffffff;\n" + " width: 1px;\n" + "}\n" + "\n" + "QToolBar::separator:vertical {\n" + " border-top: 1px solid #ffffff;\n" + " border-bottom: 1px solid #ffffff;\n" + " height: 1px;\n" + "}\n" + "\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QToolButton */\n" + "\n" + "QToolButton {\n" + " background: #e6e6e6;\n" + " border: 0px;\n" + " height: 36px;\n" + " margin: 3px;\n" + " padding: 3px;\n" + " border-right: 12px solid #e6e6e6;\n" + " border-left: 12px solid #e6e6e6;\n" + "}\n" + "\n" + "QToolButton:hover {\n" + " background: #ffffff;\n" + " border-right: 12px solid #ffffff;\n" + " border-left: 12px solid #ffffff;\n" + "}\n" + "\n" + "QToolButton:pressed {\n" + " background: #f5f5f5;\n" + " border-right: 12px solid #f5f5f5;\n" + " border-left: 12px solid #f5f5f5;\n" + "}\n" + "\n" + "QToolButton:checked {\n" + " background: #ffffff;\n" + " border-left: 12px solid #ffffff;\n" + " border-right: 12px solid #2979ff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* General viewers */\n" + "\n" + "QTableView {\n" + " background-color: #e6e6e6;\n" + " border: 1px solid #f5f5f5;\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "QTreeView,\n" + "QListView {\n" + " border-radius: 4px;\n" + " padding: 4px;\n" + " margin: 0px;\n" + " border: 0px;\n" + "}\n" + "\n" + "QTableView::item,\n" + "QTreeView::item,\n" + "QListView::item {\n" + " padding: 4px;\n" + " min-height: 32px;\n" + " color: #555555;\n" + " selection-color: #555555; /* For Windows */\n" + " border-color: transparent; /* Fix #34 */\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Items Selection */\n" + "\n" + "QTableView::item:selected,\n" + "QTreeView::item:selected,\n" + "QListView::item:selected {\n" + " background-color: rgba(41, 121, 255, 0.2);\n" + " selection-background-color: rgba(41, 121, 255, 0.2);\n" + " color: #555555;\n" + " selection-color: #555555; /* For Windows */\n" + "}\n" + "\n" + "QTableView::item:selected:focus,\n" + "QTreeView::item:selected:focus,\n" + "QListView::item:selected:focus {\n" + " background-color: #2979ff;\n" + " selection-background-color: #2979ff;\n" + " color: #3c3c3c;\n" + " selection-color: #3c3c3c; /* For Windows */\n" + "}\n" + "\n" + "QTableView {\n" + " selection-background-color: rgba(41, 121, 255, 0.2);\n" + "}\n" + "\n" + "QTableView:focus {\n" + " selection-background-color: #2979ff;\n" + "}\n" + "\n" + "QTableView::item:disabled {\n" + " color: rgba(85, 85, 85, 0.3);\n" + " selection-color: rgba(85, 85, 85, 0.3);\n" + " background-color: #f5f5f5;\n" + " selection-background-color: #f5f5f5;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QTreeView */\n" + "\n" + "QTreeView::branch{\n" + " background-color: #f5f5f5;\n" + "}\n" + "\n" + "QTreeView::branch:closed:has-children:has-siblings,\n" + "QTreeView::branch:closed:has-children:!has-siblings {\n" + " image: url(icon:/primary/branch-closed.svg);\n" + "}\n" + "\n" + "QTreeView::branch:open:has-children:!has-siblings,\n" + "QTreeView::branch:open:has-children:has-siblings {\n" + " image: url(icon:/primary/branch-open.svg);\n" + "}\n" + "\n" + "QTreeView::branch:has-siblings:!adjoins-item {\n" + " border-image: url(icon:/disabled/vline.svg) 0;\n" + "}\n" + "\n" + "QTreeView::branch:has-siblings:adjoins-item {\n" + " border-image: url(icon:/disabled/branch-more.svg) 0;\n" + "}\n" + "\n" + "QTreeView::branch:!has-children:!has-siblings:adjoins-item,\n" + "QTreeView::branch:has-children:!has-siblings:adjoins-item {\n" + " border-image: url(icon:/disabled/branch-end.svg) 0;\n" + "}\n" + "\n" + "QTreeView QHeaderView::section {\n" + " border: none;\n" + "}\n" + "\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Custom buttons */\n" + "\n" + "QPushButton.danger {\n" + " border-color: #dc3545;\n" + " color: #dc3545;\n" + "}\n" + "\n" + "QPushButton.danger:checked,\n" + "QPushButton.danger:pressed {\n" + " color: #e6e6e6;\n" + " background-color: #dc3545;\n" + "}\n" + "\n" + "QPushButton.warning{\n" + " border-color: #ffc107;\n" + " color: #ffc107;\n" + "}\n" + "\n" + "QPushButton.warning:checked,\n" + "QPushButton.warning:pressed {\n" + " color: #e6e6e6;\n" + " background-color: #ffc107;\n" + "}\n" + "\n" + "QPushButton.success {\n" + " border-color: #17a2b8;\n" + " color: #17a2b8;\n" + "}\n" + "\n" + "QPushButton.success:checked,\n" + "QPushButton.success:pressed {\n" + " color: #e6e6e6;\n" + " background-color: #17a2b8;\n" + "}\n" + "\n" + "QPushButton.danger:flat:hover {\n" + " background-color: rgba(220, 53, 69, 0.2);\n" + "}\n" + "\n" + "QPushButton.danger:flat:pressed,\n" + "QPushButton.danger:flat:checked {\n" + " background-color: rgba(220, 53, 69, 0.1);\n" + " color: #dc3545;\n" + "}\n" + "\n" + "QPushButton.warning:flat:hover {\n" + " background-color: rgba(255, 193, 7, 0.2);\n" + "}\n" + "\n" + "QPushButton.warning:flat:pressed,\n" + "QPushButton.warning:flat:checked {\n" + " background-color: rgba(255, 193, 7, 0.1);\n" + " color: #ffc107;\n" + "}\n" + "\n" + "QPushButton.success:flat:hover {\n" + " background-color: rgba(23, 162, 184, 0.2);\n" + "}\n" + "\n" + "QPushButton.success:flat:pressed,\n" + "QPushButton.success:flat:checked {\n" + " background-color: rgba(23, 162, 184, 0.1);\n" + " color: #17a2b8;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QTableView */\n" + "\n" + "QTableCornerButton::section {\n" + " background-color: #f5f5f5;\n" + " border-radius: 0px;\n" + " border-right: 1px solid;\n" + " border-bottom: 1px solid;\n" + " border-color: #e6e6e6;\n" + "}\n" + "\n" + "QTableView {\n" + " alternate-background-color: rgba(245, 245, 245, 0.7);\n" + "}\n" + "\n" + "QHeaderView {\n" + " border: none;\n" + "}\n" + "\n" + "QHeaderView::section {\n" + " color: rgba(85, 85, 85, 0.7);\n" + " text-transform: uppercase;\n" + " background-color: #f5f5f5;\n" + " padding: 0 24px;\n" + " height: 36px;\n" + " border-radius: 0px;\n" + " border-right: 1px solid;\n" + " border-bottom: 1px solid;\n" + " border-color: #e6e6e6;\n" + "}\n" + "\n" + "QHeaderView::section:vertical {\n" + "\n" + "}\n" + "\n" + "QHeaderView::section:horizontal {\n" + "\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QLCDNumber */\n" + "\n" + "QLCDNumber {\n" + " color: #2979ff;\n" + " background-color:rgba(41, 121, 255, 0.1);\n" + " border: 1px solid rgba(41, 121, 255, 0.3);\n" + " border-radius: 4px;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QCalendarWidget */\n" + "\n" + "#qt_calendar_prevmonth {\n" + " qproperty-icon: url(icon:/primary/leftarrow.svg);\n" + "}\n" + "\n" + "#qt_calendar_nextmonth {\n" + " qproperty-icon: url(icon:/primary/rightarrow.svg);\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Inline QLineEdit */\n" + "\n" + "QTreeView QLineEdit,\n" + "QTableView QLineEdit,\n" + "QListView QLineEdit {\n" + " color: #555555;\n" + " background-color: #f5f5f5;\n" + " border: 1px solid unset;\n" + " border-radius: unset;\n" + " padding: unset;\n" + " padding-left: unset;\n" + " height: unset;\n" + " border-width: unset;\n" + " border-top-left-radius: unset;\n" + " border-top-right-radius: unset;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QToolTip */\n" + "\n" + "QToolTip {\n" + " padding: 4px;\n" + " border: 1px solid #e6e6e6;\n" + " border-radius: 4px;\n" + " color: #555555;\n" + " background-color: #ffffff;\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* QDialog */\n" + "\n" + "\n" + "\n" + "QDialog QToolButton:disabled {\n" + " background-color: #f5f5f5;\n" + " color: #555555\n" + "}\n" + "\n" + "/* ------------------------------------------------------------------------ */\n" + "/* Grips */\n" + "\n" + "\n" + "QMainWindow::separator:vertical,\n" + "QSplitter::handle:horizontal {\n" + " image: url(icon:/primary/splitter-horizontal.svg);\n" + "}\n" + "\n" + "QMainWindow::separator:horizontal,\n" + "QSplitter::handle:vertical {\n" + " image: url(icon:/primary/splitter-vertical.svg);\n" + "}\n" + "\n" + "QSizeGrip {\n" + " image: url(icon:/primary/sizegrip.svg);\n" + " background-color: transparent;\n" + "}\n" + "\n" + "QMenuBar QToolButton:hover,\n" + "QMenuBar QToolButton:pressed,\n" + "QMenuBar QToolButton {\n" + " border-width: 0;\n" + " border-left: 10px;\n" + " border-image: url(icon:/primary/rightarrow2.svg);\n" + " background-color: transparent;\n" + "}" + ) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) @@ -1355,9 +1357,13 @@ def setupUi(self, MainWindow): self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_7 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_7.setObjectName("gridLayout_7") - spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_7.addItem(spacerItem, 0, 2, 1, 1) - spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem1 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_7.addItem(spacerItem1, 0, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") @@ -1369,12 +1375,16 @@ def setupUi(self, MainWindow): self.gridLayout_5.setObjectName("gridLayout_5") self.gridLayout_4 = QtWidgets.QGridLayout() self.gridLayout_4.setObjectName("gridLayout_4") - spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem2 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_4.addItem(spacerItem2, 1, 3, 1, 1) self.cbModelName = QtWidgets.QComboBox(self.frame) self.cbModelName.setObjectName("cbModelName") self.gridLayout_4.addWidget(self.cbModelName, 1, 0, 1, 1) - spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem3 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_4.addItem(spacerItem3, 1, 5, 1, 1) self.label_4 = QtWidgets.QLabel(self.frame) self.label_4.setAlignment(QtCore.Qt.AlignCenter) @@ -1384,7 +1394,9 @@ def setupUi(self, MainWindow): self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName("label_3") self.gridLayout_4.addWidget(self.label_3, 0, 4, 1, 1) - spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem4 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_4.addItem(spacerItem4, 1, 7, 1, 1) self.leNumFeas = QtWidgets.QLineEdit(self.frame) self.leNumFeas.setObjectName("leNumFeas") @@ -1397,7 +1409,9 @@ def setupUi(self, MainWindow): self.leNumTrain.setText("") self.leNumTrain.setObjectName("leNumTrain") self.gridLayout_4.addWidget(self.leNumTrain, 1, 2, 1, 1) - spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem5 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_4.addItem(spacerItem5, 1, 1, 1, 1) self.leNumTest = QtWidgets.QLineEdit(self.frame) self.leNumTest.setText("") @@ -1418,7 +1432,9 @@ def setupUi(self, MainWindow): self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName("label_2") self.gridLayout_4.addWidget(self.label_2, 0, 2, 1, 1) - spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem6 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.gridLayout_4.addItem(spacerItem6, 1, 9, 1, 1) self.label_6 = QtWidgets.QLabel(self.frame) self.label_6.setAlignment(QtCore.Qt.AlignCenter) @@ -1427,9 +1443,13 @@ def setupUi(self, MainWindow): self.gridLayout_4.setRowStretch(0, 1) self.gridLayout_4.setRowStretch(1, 1) self.gridLayout_5.addLayout(self.gridLayout_4, 1, 1, 1, 1) - spacerItem7 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + spacerItem7 = QtWidgets.QSpacerItem( + 20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed + ) self.gridLayout_5.addItem(spacerItem7, 2, 1, 1, 1) - spacerItem8 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + spacerItem8 = QtWidgets.QSpacerItem( + 20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed + ) self.gridLayout_5.addItem(spacerItem8, 0, 1, 1, 1) self.horizontalLayout.addWidget(self.frame) self.horizontalLayout.setStretch(0, 8) @@ -1456,7 +1476,9 @@ def setupUi(self, MainWindow): self.gridLayout_2.setObjectName("gridLayout_2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") - spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem9 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.horizontalLayout_2.addItem(spacerItem9) self.frame_4 = QtWidgets.QFrame(self.frame_3) self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel) @@ -1470,7 +1492,9 @@ def setupUi(self, MainWindow): self.lbProgress.setObjectName("lbProgress") self.gridLayout_8.addWidget(self.lbProgress, 0, 0, 1, 1) self.horizontalLayout_2.addWidget(self.frame_4) - spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + spacerItem10 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum + ) self.horizontalLayout_2.addItem(spacerItem10) self.frame_5 = QtWidgets.QFrame(self.frame_3) self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel) @@ -1481,12 +1505,16 @@ def setupUi(self, MainWindow): self.pgbEvaluator.setProperty("value", 24) self.pgbEvaluator.setObjectName("pgbEvaluator") self.horizontalLayout_2.addWidget(self.pgbEvaluator) - spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + spacerItem11 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum + ) self.horizontalLayout_2.addItem(spacerItem11) self.pbRunDetect = QtWidgets.QPushButton(self.frame_3) self.pbRunDetect.setObjectName("pbRunDetect") self.horizontalLayout_2.addWidget(self.pbRunDetect) - spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + spacerItem12 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum + ) self.horizontalLayout_2.addItem(spacerItem12) self.horizontalLayout_2.setStretch(1, 1) self.horizontalLayout_2.setStretch(4, 4) @@ -1513,11 +1541,14 @@ def retranslateUi(self, MainWindow): self.label_6.setText(_translate("MainWindow", "随机种子")) self.groupBox.setTitle(_translate("MainWindow", "检测结果")) self.pbRunDetect.setText(_translate("MainWindow", "检测")) + + import src.res_rc as res_rc if __name__ == "__main__": import sys + app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() diff --git a/src/UserInterface.ui b/src/UserInterface.ui index d00260d..4cd8138 100644 --- a/src/UserInterface.ui +++ b/src/UserInterface.ui @@ -1,1753 +1,1750 @@ - MainWindow - - - - 0 - 0 - 884 - 749 - - - - 异常流量数据分析软件 - - - /* ------------------------------------------------------------------------ */ -/* QtMaterial - https://github.com/UN-GCPDS/qt-material -/* By Yeison Cardona - GCPDS -/* ------------------------------------------------------------------------ */ - -*{ - color: #555555; - - font-family: Roboto; - - - font-size: 13px; - - - - line-height: 13px; - - - selection-background-color: #75a7ff; - selection-color: #3c3c3c; -} - -*:focus { - outline: none; -} - -/* ------------------------------------------------------------------------ */ -/* Custom colors */ - -.danger{ - color: #dc3545; - background-color: transparent; -} - -.warning{ - color: #ffc107; - background-color: transparent; -} - -.success{ - color: #17a2b8; - background-color: transparent; -} - -.danger:disabled{ - color: rgba(220, 53, 69, 0.4); - border-color: rgba(220, 53, 69, 0.4); -} - -.warning:disabled{ - color: rgba(255, 193, 7, 0.4); - border-color: rgba(255, 193, 7, 0.4); -} - -.success:disabled{ - color: rgba(23, 162, 184, 0.4); - border-color: rgba(23, 162, 184, 0.4); -} - -.danger:flat:disabled{ - background-color: rgba(220, 53, 69, 0.1); -} - -.warning:flat:disabled{ - background-color: rgba(255, 193, 7, 0.1); -} - -.success:flat:disabled{ - background-color: rgba(23, 162, 184, 0.1); -} - -/* ------------------------------------------------------------------------ */ -/* Basic widgets */ - -QWidget { - background-color: #e6e6e6; -} - -QGroupBox, -QFrame { - background-color: #e6e6e6; - border: 2px solid #ffffff; - border-radius: 4px; -} - -QGroupBox.fill_background, -QFrame.fill_background { - background-color: #f5f5f5; - border: 2px solid #f5f5f5; - border-radius: 4px; -} - -QSplitter { - background-color: transparent; - border: none -} - -QStatusBar { - color: #555555; - background-color: rgba(255, 255, 255, 0.2); - border-radius: 0px; -} - -QScrollArea, -QStackedWidget, -QWidget > QToolBox, -QToolBox > QWidget, -QTabWidget > QWidget { - border: none; -} - -QTabWidget::pane { - border: none; -} - -/* ------------------------------------------------------------------------ */ -/* Inputs */ - -QDateTimeEdit, -QSpinBox, -QDoubleSpinBox, -QTextEdit, -QLineEdit, -QPushButton { - color: #2979ff; - background-color: #e6e6e6; - border: 2px solid #2979ff; - border-radius: 4px; - height: 32px; -} - -QDateTimeEdit, -QSpinBox, -QDoubleSpinBox, -QTreeView, -QListView, -QLineEdit, -QComboBox { - padding-left: 16px; - border-radius: 0px; - background-color: #f5f5f5; - border-width: 0 0 2px 0; - border-radius: 0px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - height: 32px; -} - -QPlainTextEdit { - border-radius: 4px; - padding: 8px 16px; - background-color: #e6e6e6; - border: 2px solid #ffffff; -} - -QTextEdit { - padding: 8px 16px; - border-radius: 4px; - background-color: #f5f5f5; -} - -QDateTimeEdit:disabled, -QSpinBox:disabled, -QDoubleSpinBox:disabled, -QTextEdit:disabled, -QLineEdit:disabled { - color: rgba(41, 121, 255, 0.2); - background-color: rgba(245, 245, 245, 0.75); - border: 2px solid rgba(41, 121, 255, 0.2); - border-width: 0 0 2px 0; - padding: 0px 16px; - border-radius: 0px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - height: 32px; -} - -/* ------------------------------------------------------------------------ */ -/* QComboBox */ - -QComboBox { - color: #2979ff; - border: 1px solid #2979ff; - border-width: 0 0 2px 0; - background-color: #f5f5f5; - border-radius: 0px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - height: 32px; -} - -QComboBox:disabled { - color: rgba(41, 121, 255, 0.2); - background-color: rgba(245, 245, 245, 0.75); - border-bottom: 2px solid rgba(41, 121, 255, 0.2); -} - -QComboBox::drop-down { - border: none; - color: #2979ff; - width: 20px; -} - -QComboBox::down-arrow { - image: url(icon:/primary/downarrow.svg); - margin-right: 12px; -} - -QComboBox::down-arrow:disabled { - image: url(icon:/disabled/downarrow.svg); - margin-right: 12px; -} - -QComboBox QAbstractItemView { - background-color: #f5f5f5; - border: 2px solid #ffffff; - border-radius: 4px; -} - -QComboBox[frame='false'] { - color: #2979ff; - background-color: transparent; - border: 1px solid transparent; -} -QComboBox[frame='false']:disabled { - color: rgba(41, 121, 255, 0.2); -} - -/* ------------------------------------------------------------------------ */ -/* Spin buttons */ - -QDateTimeEdit::up-button, -QDoubleSpinBox::up-button, -QSpinBox::up-button { - subcontrol-origin: border; - subcontrol-position: top right; - width: 20px; - image: url(icon:/primary/uparrow.svg); - border-width: 0px; - margin-right: 5px; -} - -QDateTimeEdit::up-button:disabled, -QDoubleSpinBox::up-button:disabled, -QSpinBox::up-button:disabled { - image: url(icon:/disabled/uparrow.svg); -} - -QDateTimeEdit::down-button, -QDoubleSpinBox::down-button, -QSpinBox::down-button { - subcontrol-origin: border; - subcontrol-position: bottom right; - width: 20px; - image: url(icon:/primary/downarrow.svg); - border-width: 0px; - border-top-width: 0; - margin-right: 5px; -} - -QDateTimeEdit::down-button:disabled, -QDoubleSpinBox::down-button:disabled, -QSpinBox::down-button:disabled { - image: url(icon:/disabled/downarrow.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QPushButton */ - -QPushButton { - text-transform: uppercase; - margin: 0px; - padding: 1px 16px; - height: 32px; - font-weight: bold; - - - border-radius: 4px; - - - -} - -QPushButton:checked, -QPushButton:pressed { - color: #e6e6e6; - background-color: #2979ff; -} - -QPushButton:flat { - margin: 0px; - color: #2979ff; - border: none; - background-color: transparent; -} - -QPushButton:flat:hover { - background-color: rgba(41, 121, 255, 0.2); -} - -QPushButton:flat:pressed, -QPushButton:flat:checked { - background-color: rgba(41, 121, 255, 0.1); -} - -QPushButton:disabled { - color: rgba(255, 255, 255, 0.75); - background-color: transparent; - border-color: #ffffff; -} - -QPushButton:flat:disabled { - color: rgba(255, 255, 255, 0.75); - background-color: rgba(255, 255, 255, 0.25); - border: none; -} - -QPushButton:disabled { - border: 2px solid rgba(255, 255, 255, 0.75); -} - -QPushButton:checked:disabled { - color: #f5f5f5; - background-color: #ffffff; - border-color: #ffffff; -} - -/* ------------------------------------------------------------------------ */ -/* QTabBar */ - -QTabBar{ - text-transform: uppercase; - font-weight: bold; -} - -QTabBar::tab { - color: #555555; - border: 0px; -} - -QTabBar::tab:bottom, -QTabBar::tab:top{ - padding: 0 16px; - height: 28px; -} - -QTabBar::tab:left, -QTabBar::tab:right{ - padding: 16px 0; - width: 28px; -} - -QTabBar::tab:top:selected, -QTabBar::tab:top:hover { - color: #2979ff; - border-bottom: 2px solid #2979ff; -} - -QTabBar::tab:bottom:selected, -QTabBar::tab:bottom:hover { - color: #2979ff; - border-top: 2px solid #2979ff; -} - -QTabBar::tab:right:selected, -QTabBar::tab:right:hover { - color: #2979ff; - border-left: 2px solid #2979ff; -} - -QTabBar::tab:left:selected, -QTabBar::tab:left:hover { - color: #2979ff; - border-right: 2px solid #2979ff; -} - -QTabBar QToolButton:hover, -QTabBar QToolButton { - border: 20px; - background-color: #e6e6e6; -} - -QTabBar QToolButton::up-arrow { - image: url(icon:/disabled/uparrow2.svg); -} - -QTabBar QToolButton::up-arrow:hover { - image: url(icon:/primary/uparrow2.svg); -} - -QTabBar QToolButton::down-arrow { - image: url(icon:/disabled/downarrow2.svg); -} - -QTabBar QToolButton::down-arrow:hover { - image: url(icon:/primary/downarrow2.svg); -} - -QTabBar QToolButton::right-arrow { - image: url(icon:/primary/rightarrow2.svg); -} - -QTabBar QToolButton::right-arrow:hover { - image: url(icon:/disabled/rightarrow2.svg); -} - -QTabBar QToolButton::left-arrow { - image: url(icon:/primary/leftarrow2.svg); -} - -QTabBar QToolButton::left-arrow:hover { - image: url(icon:/disabled/leftarrow2.svg); -} - -QTabBar::close-button { - image: url(icon:/disabled/tab_close.svg); -} - -QTabBar::close-button:hover { - image: url(icon:/primary/tab_close.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QGroupBox */ - -QGroupBox { - padding: 16px; - padding-top: 36px; - line-height: ; - text-transform: uppercase; - font-size: ; -} - -QGroupBox::title { - color: rgba(85, 85, 85, 0.4); - subcontrol-origin: margin; - subcontrol-position: top left; - padding: 16px; - background-color: #e6e6e6; - background-color: transparent; - height: 36px; -} - -/* ------------------------------------------------------------------------ */ -/* QRadioButton and QCheckBox labels */ - -QRadioButton, -QCheckBox { - spacing: 12px; - color: #555555; - line-height: 14px; - height: 36px; - background-color: transparent; - spacing: 5px; -} - -QRadioButton:disabled, -QCheckBox:disabled { - color: rgba(85, 85, 85, 0.3); -} - -/* ------------------------------------------------------------------------ */ -/* General Indicators */ - -QGroupBox::indicator { - width: 24px; - height: 24px; - border-radius: 3px; -} - -QMenu::indicator, -QListView::indicator, -QTableWidget::indicator, -QRadioButton::indicator, -QCheckBox::indicator { - width: 28px; - height: 28px; - border-radius: 4px; - } - -/* ------------------------------------------------------------------------ */ -/* QListView Indicator */ - -QListView::indicator:checked, -QListView::indicator:checked:selected, -QListView::indicator:checked:focus { - image: url(icon:/primary/checklist.svg); -} - -QListView::indicator:checked:selected:active { - image: url(icon:/primary/checklist_invert.svg); -} - -QListView::indicator:checked:disabled { - image: url(icon:/disabled/checklist.svg); -} - -QListView::indicator:indeterminate, -QListView::indicator:indeterminate:selected, -QListView::indicator:indeterminate:focus { - image: url(icon:/primary/checklist_indeterminate.svg); -} - -QListView::indicator:indeterminate:selected:active { - image: url(icon:/primary/checklist_indeterminate_invert.svg); -} - -QListView::indicator:indeterminate:disabled { - image: url(icon:/disabled/checklist_indeterminate.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QTableView Indicator */ - -QTableView::indicator:enabled:checked, -QTableView::indicator:enabled:checked:selected, -QTableView::indicator:enabled:checked:focus { - image: url(icon:/primary/checkbox_checked.svg); -} - -QTableView::indicator:checked:selected:active { - image: url(icon:/primary/checkbox_checked_invert.svg); -} - -QTableView::indicator:disabled:checked, -QTableView::indicator:disabled:checked:selected, -QTableView::indicator:disabled:checked:focus { - image: url(icon:/disabled/checkbox_checked.svg); -} - -QTableView::indicator:enabled:unchecked, -QTableView::indicator:enabled:unchecked:selected, -QTableView::indicator:enabled:unchecked:focus { - image: url(icon:/primary/checkbox_unchecked.svg); -} - -QTableView::indicator:unchecked:selected:active { - image: url(icon:/primary/checkbox_unchecked_invert.svg); -} - -QTableView::indicator:disabled:unchecked, -QTableView::indicator:disabled:unchecked:selected, -QTableView::indicator:disabled:unchecked:focus { - image: url(icon:/disabled/checkbox_unchecked.svg); -} - -QTableView::indicator:enabled:indeterminate, -QTableView::indicator:enabled:indeterminate:selected, -QTableView::indicator:enabled:indeterminate:focus { - image: url(icon:/primary/checkbox_indeterminate.svg); -} - -QTableView::indicator:indeterminate:selected:active { - image: url(icon:/primary/checkbox_indeterminate_invert.svg); -} - -QTableView::indicator:disabled:indeterminate, -QTableView::indicator:disabled:indeterminate:selected, -QTableView::indicator:disabled:indeterminate:focus { - image: url(icon:/disabled/checkbox_indeterminate.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QCheckBox and QGroupBox Indicator */ - -QCheckBox::indicator:checked, -QGroupBox::indicator:checked { - image: url(icon:/primary/checkbox_checked.svg); -} - -QCheckBox::indicator:unchecked, -QGroupBox::indicator:unchecked { - image: url(icon:/primary/checkbox_unchecked.svg); -} - -QCheckBox::indicator:indeterminate, -QGroupBox::indicator:indeterminate { - image: url(icon:/primary/checkbox_indeterminate.svg); -} - -QCheckBox::indicator:checked:disabled, -QGroupBox::indicator:checked:disabled { - image: url(icon:/disabled/checkbox_checked.svg); -} - -QCheckBox::indicator:unchecked:disabled, -QGroupBox::indicator:unchecked:disabled { - image: url(icon:/disabled/checkbox_unchecked.svg); -} - -QCheckBox::indicator:indeterminate:disabled, -QGroupBox::indicator:indeterminate:disabled { - image: url(icon:/disabled/checkbox_indeterminate.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QRadioButton Indicator */ - -QRadioButton::indicator:checked { - image: url(icon:/primary/radiobutton_checked.svg); -} - -QRadioButton::indicator:unchecked { - image: url(icon:/primary/radiobutton_unchecked.svg); -} - -QRadioButton::indicator:checked:disabled { - image: url(icon:/disabled/radiobutton_checked.svg); -} - -QRadioButton::indicator:unchecked:disabled { - image: url(icon:/disabled/radiobutton_unchecked.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QDockWidget */ - -QDockWidget { - color: #555555; - text-transform: uppercase; - border: 2px solid #f5f5f5; - titlebar-close-icon: url(icon:/primary/close.svg); - titlebar-normal-icon: url(icon:/primary/float.svg); - border-radius: 4px; -} - -QDockWidget::title { - text-align: left; - padding-left: 36px; - padding: 3px; - margin-top: 4px; -} - -/* ------------------------------------------------------------------------ */ -/* QComboBox indicator */ - -QComboBox::indicator:checked { - image: url(icon:/primary/checklist.svg); -} - -QComboBox::indicator:checked:selected { - image: url(icon:/primary/checklist_invert.svg); -} - -/* ------------------------------------------------------------------------ */ -/* Menu Items */ - -QComboBox::item, -QCalendarWidget QMenu::item, -QMenu::item { - - height: 28px; - - border: 8px solid transparent; - color: #555555; -} - -QCalendarWidget QMenu::item, -QMenu::item { - - - -} - - -QComboBox::item:selected, -QCalendarWidget QMenu::item:selected, -QMenu::item:selected { - color: #3c3c3c; - background-color: #75a7ff; - border-radius: 0px; -} - -QComboBox::item:disabled, -QCalendarWidget QMenu::item:disabled, -QMenu::item:disabled { - color: rgba(85, 85, 85, 0.3); -} - -/* ------------------------------------------------------------------------ */ -/* QMenu */ - -QCalendarWidget QMenu, -QMenu { - background-color: #f5f5f5; - border: 2px solid #ffffff; - border-radius: 4px; -} - -QMenu::separator { - height: 2px; - background-color: #ffffff; - margin-left: 2px; - margin-right: 2px; -} - -QMenu::right-arrow{ - image: url(icon:/primary/rightarrow.svg); - width: 16px; - height: 16px; -} - -QMenu::right-arrow:selected{ - image: url(icon:/disabled/rightarrow.svg); -} - -QMenu::indicator:non-exclusive:unchecked { - image: url(icon:/primary/checkbox_unchecked.svg); -} - -QMenu::indicator:non-exclusive:unchecked:selected { - image: url(icon:/primary/checkbox_unchecked_invert.svg); -} - -QMenu::indicator:non-exclusive:checked { - image: url(icon:/primary/checkbox_checked.svg); -} - -QMenu::indicator:non-exclusive:checked:selected { - image: url(icon:/primary/checkbox_checked_invert.svg); -} - -QMenu::indicator:exclusive:unchecked { - image: url(icon:/primary/radiobutton_unchecked.svg); -} - -QMenu::indicator:exclusive:unchecked:selected { - image: url(icon:/primary/radiobutton_unchecked_invert.svg); -} - -QMenu::indicator:exclusive:checked { - image: url(icon:/primary/radiobutton_checked.svg); -} - -QMenu::indicator:exclusive:checked:selected { - image: url(icon:/primary/radiobutton_checked_invert.svg); -} - -/* ------------------------------------------------------------------------ */ -/* QMenuBar */ - -QMenuBar { - background-color: #f5f5f5; - color: #555555; -} - -QMenuBar::item { - height: 32px; - padding: 8px; - background-color: transparent; - color: #555555; -} - -QMenuBar::item:selected, -QMenuBar::item:pressed { - color: #3c3c3c; - background-color: #75a7ff; -} - -/* ------------------------------------------------------------------------ */ -/* QToolBox */ - -QToolBox::tab { - background-color: #f5f5f5; - color: #555555; - text-transform: uppercase; - border-radius: 4px; - padding-left: 15px; -} - -QToolBox::tab:selected, -QToolBox::tab:hover { - background-color: rgba(41, 121, 255, 0.2); -} - -/* ------------------------------------------------------------------------ */ -/* QProgressBar */ - -QProgressBar { - border-radius: 0; - background-color: #ffffff; - text-align: center; - color: transparent; -} - -QProgressBar::chunk { - background-color: #2979ff; -} - -/* ------------------------------------------------------------------------ */ -/* QScrollBar */ - -QScrollBar:horizontal { - border: 0; - background: #f5f5f5; - height: 8px; -} - -QScrollBar:vertical { - border: 0; - background: #f5f5f5; - width: 8px; -} - -QScrollBar::handle { - background: rgba(41, 121, 255, 0.1); -} - -QScrollBar::handle:horizontal { - min-width: 24px; -} - -QScrollBar::handle:vertical { - min-height: 24px; -} - -QScrollBar::handle:vertical:hover, -QScrollBar::handle:horizontal:hover { - background: #2979ff; -} - -QScrollBar::add-line:vertical, -QScrollBar::sub-line:vertical, -QScrollBar::add-line:horizontal, -QScrollBar::sub-line:horizontal { - border: 0; - background: transparent; - width: 0px; - height: 0px; -} - -/* ------------------------------------------------------------------------ */ -/* QScrollBar-Big */ - -QScrollBar.big:horizontal { - border: 0; - background: #f5f5f5; - height: 36px; -} - -QScrollBar.big:vertical { - border: 0; - background: #f5f5f5; - width: 36px; -} - -QScrollBar.big::handle, -QScrollBar.big::handle:vertical:hover, -QScrollBar.big::handle:horizontal:hover { - background: #2979ff; -} - -QScrollBar.big::handle:horizontal { - min-width: 24px; -} - -QScrollBar.big::handle:vertical { - min-height: 24px; -} - -QScrollBar.big::add-line:vertical, -QScrollBar.big::sub-line:vertical, -QScrollBar.big::add-line:horizontal, -QScrollBar.big::sub-line:horizontal { - border: 0; - background: transparent; - width: 0px; - height: 0px; -} - -/* ------------------------------------------------------------------------ */ -/* QSlider */ - -QSlider:horizontal { - min-height: 24px; - max-height: 24px; -} - -QSlider:vertical { - min-width: 24px; - max-width: 24px; -} - -QSlider::groove:horizontal { - height: 4px; - background: #393939; - margin: 0 12px; -} - -QSlider::groove:vertical { - width: 4px; - background: #393939; - margin: 12px 0; - border-radius: 24px; -} - -QSlider::handle:horizontal { - image: url(icon:/primary/slider.svg); - width: 24px; - height: 24px; - margin: -24px -12px; -} - -QSlider::handle:vertical { - image: url(icon:/primary/slider.svg); - border-radius: 24px; - width: 24px; - height: 24px; - margin: -12px -24px; -} - -QSlider::add-page { -background: #f5f5f5; -} - -QSlider::sub-page { -background: #2979ff; -} - -/* ------------------------------------------------------------------------ */ -/* QLabel */ - -QLabel { - border: none; - background: transparent; - color: #555555 -} - -QLabel:disabled { - color: rgba(85, 85, 85, 0.2) -} - -/* ------------------------------------------------------------------------ */ -/* VLines and HLinex */ - -QFrame[frameShape="4"] { - border-width: 1px 0 0 0; - background: none; -} - -QFrame[frameShape="5"] { - border-width: 0 1px 0 0; - background: none; -} - -QFrame[frameShape="4"], -QFrame[frameShape="5"] { - border-color: #ffffff; -} - -/* ------------------------------------------------------------------------ */ -/* QToolBar */ - -QToolBar { - background: #e6e6e6; - border: 0px solid; -} - -QToolBar:horizontal { - border-bottom: 1px solid #ffffff; -} - -QToolBar:vertical { - border-right: 1px solid #ffffff; -} - -QToolBar::handle:horizontal { - image: url(icon:/primary/toolbar-handle-horizontal.svg); -} - -QToolBar::handle:vertical { - image: url(icon:/primary/toolbar-handle-vertical.svg); -} - -QToolBar::separator:horizontal { - border-right: 1px solid #ffffff; - border-left: 1px solid #ffffff; - width: 1px; -} - -QToolBar::separator:vertical { - border-top: 1px solid #ffffff; - border-bottom: 1px solid #ffffff; - height: 1px; -} - - -/* ------------------------------------------------------------------------ */ -/* QToolButton */ - -QToolButton { - background: #e6e6e6; - border: 0px; - height: 36px; - margin: 3px; - padding: 3px; - border-right: 12px solid #e6e6e6; - border-left: 12px solid #e6e6e6; -} - -QToolButton:hover { - background: #ffffff; - border-right: 12px solid #ffffff; - border-left: 12px solid #ffffff; -} - -QToolButton:pressed { - background: #f5f5f5; - border-right: 12px solid #f5f5f5; - border-left: 12px solid #f5f5f5; -} - -QToolButton:checked { - background: #ffffff; - border-left: 12px solid #ffffff; - border-right: 12px solid #2979ff; -} - -/* ------------------------------------------------------------------------ */ -/* General viewers */ - -QTableView { - background-color: #e6e6e6; - border: 1px solid #f5f5f5; - border-radius: 4px; -} - -QTreeView, -QListView { - border-radius: 4px; - padding: 4px; - margin: 0px; - border: 0px; -} - -QTableView::item, -QTreeView::item, -QListView::item { - padding: 4px; - min-height: 32px; - color: #555555; - selection-color: #555555; /* For Windows */ - border-color: transparent; /* Fix #34 */ -} - -/* ------------------------------------------------------------------------ */ -/* Items Selection */ - -QTableView::item:selected, -QTreeView::item:selected, -QListView::item:selected { - background-color: rgba(41, 121, 255, 0.2); - selection-background-color: rgba(41, 121, 255, 0.2); - color: #555555; - selection-color: #555555; /* For Windows */ -} - -QTableView::item:selected:focus, -QTreeView::item:selected:focus, -QListView::item:selected:focus { - background-color: #2979ff; - selection-background-color: #2979ff; - color: #3c3c3c; - selection-color: #3c3c3c; /* For Windows */ -} - -QTableView { - selection-background-color: rgba(41, 121, 255, 0.2); -} - -QTableView:focus { - selection-background-color: #2979ff; -} - -QTableView::item:disabled { - color: rgba(85, 85, 85, 0.3); - selection-color: rgba(85, 85, 85, 0.3); - background-color: #f5f5f5; - selection-background-color: #f5f5f5; -} - -/* ------------------------------------------------------------------------ */ -/* QTreeView */ - -QTreeView::branch{ - background-color: #f5f5f5; -} - -QTreeView::branch:closed:has-children:has-siblings, -QTreeView::branch:closed:has-children:!has-siblings { - image: url(icon:/primary/branch-closed.svg); -} - -QTreeView::branch:open:has-children:!has-siblings, -QTreeView::branch:open:has-children:has-siblings { - image: url(icon:/primary/branch-open.svg); -} - -QTreeView::branch:has-siblings:!adjoins-item { - border-image: url(icon:/disabled/vline.svg) 0; -} - -QTreeView::branch:has-siblings:adjoins-item { - border-image: url(icon:/disabled/branch-more.svg) 0; -} - -QTreeView::branch:!has-children:!has-siblings:adjoins-item, -QTreeView::branch:has-children:!has-siblings:adjoins-item { - border-image: url(icon:/disabled/branch-end.svg) 0; -} - -QTreeView QHeaderView::section { - border: none; -} - - -/* ------------------------------------------------------------------------ */ -/* Custom buttons */ - -QPushButton.danger { - border-color: #dc3545; - color: #dc3545; -} - -QPushButton.danger:checked, -QPushButton.danger:pressed { - color: #e6e6e6; - background-color: #dc3545; -} - -QPushButton.warning{ - border-color: #ffc107; - color: #ffc107; -} - -QPushButton.warning:checked, -QPushButton.warning:pressed { - color: #e6e6e6; - background-color: #ffc107; -} - -QPushButton.success { - border-color: #17a2b8; - color: #17a2b8; -} - -QPushButton.success:checked, -QPushButton.success:pressed { - color: #e6e6e6; - background-color: #17a2b8; -} - -QPushButton.danger:flat:hover { - background-color: rgba(220, 53, 69, 0.2); -} - -QPushButton.danger:flat:pressed, -QPushButton.danger:flat:checked { - background-color: rgba(220, 53, 69, 0.1); - color: #dc3545; -} - -QPushButton.warning:flat:hover { - background-color: rgba(255, 193, 7, 0.2); -} - -QPushButton.warning:flat:pressed, -QPushButton.warning:flat:checked { - background-color: rgba(255, 193, 7, 0.1); - color: #ffc107; -} - -QPushButton.success:flat:hover { - background-color: rgba(23, 162, 184, 0.2); -} - -QPushButton.success:flat:pressed, -QPushButton.success:flat:checked { - background-color: rgba(23, 162, 184, 0.1); - color: #17a2b8; -} - -/* ------------------------------------------------------------------------ */ -/* QTableView */ - -QTableCornerButton::section { - background-color: #f5f5f5; - border-radius: 0px; - border-right: 1px solid; - border-bottom: 1px solid; - border-color: #e6e6e6; -} - -QTableView { - alternate-background-color: rgba(245, 245, 245, 0.7); -} - -QHeaderView { - border: none; -} - -QHeaderView::section { - color: rgba(85, 85, 85, 0.7); - text-transform: uppercase; - background-color: #f5f5f5; - padding: 0 24px; - height: 36px; - border-radius: 0px; - border-right: 1px solid; - border-bottom: 1px solid; - border-color: #e6e6e6; -} - -QHeaderView::section:vertical { - -} - -QHeaderView::section:horizontal { - -} - -/* ------------------------------------------------------------------------ */ -/* QLCDNumber */ - -QLCDNumber { - color: #2979ff; - background-color:rgba(41, 121, 255, 0.1); - border: 1px solid rgba(41, 121, 255, 0.3); - border-radius: 4px; -} - -/* ------------------------------------------------------------------------ */ -/* QCalendarWidget */ - -#qt_calendar_prevmonth { - qproperty-icon: url(icon:/primary/leftarrow.svg); -} - -#qt_calendar_nextmonth { - qproperty-icon: url(icon:/primary/rightarrow.svg); -} - -/* ------------------------------------------------------------------------ */ -/* Inline QLineEdit */ - -QTreeView QLineEdit, -QTableView QLineEdit, -QListView QLineEdit { - color: #555555; - background-color: #f5f5f5; - border: 1px solid unset; - border-radius: unset; - padding: unset; - padding-left: unset; - height: unset; - border-width: unset; - border-top-left-radius: unset; - border-top-right-radius: unset; -} - -/* ------------------------------------------------------------------------ */ -/* QToolTip */ - -QToolTip { - padding: 4px; - border: 1px solid #e6e6e6; - border-radius: 4px; - color: #555555; - background-color: #ffffff; -} - -/* ------------------------------------------------------------------------ */ -/* QDialog */ - - - -QDialog QToolButton:disabled { - background-color: #f5f5f5; - color: #555555 -} - -/* ------------------------------------------------------------------------ */ -/* Grips */ - - -QMainWindow::separator:vertical, -QSplitter::handle:horizontal { - image: url(icon:/primary/splitter-horizontal.svg); -} - -QMainWindow::separator:horizontal, -QSplitter::handle:vertical { - image: url(icon:/primary/splitter-vertical.svg); -} - -QSizeGrip { - image: url(icon:/primary/sizegrip.svg); - background-color: transparent; -} - -QMenuBar QToolButton:hover, -QMenuBar QToolButton:pressed, -QMenuBar QToolButton { - border-width: 0; - border-left: 10px; - border-image: url(icon:/primary/rightarrow2.svg); - background-color: transparent; -} - - - - - - - - - 输入参数 - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - 异常点比例 - - - Qt::AlignCenter - - - - - - - 测试样本数 - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - - 选择模型 - - - Qt::AlignCenter - - - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - - - - - - - - - - 特征维数 - - - Qt::AlignCenter - - - - - - - - - - - - - - 训练样本数 - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - 随机种子 - - - Qt::AlignCenter - - - - - - - - - Qt::Vertical + MainWindow + + + + 0 + 0 + 884 + 749 + + + + 异常流量数据分析软件 + + + /* + ------------------------------------------------------------------------ */ + /* QtMaterial - https://github.com/UN-GCPDS/qt-material + /* By Yeison Cardona - GCPDS + /* ------------------------------------------------------------------------ */ + + *{ + color: #555555; + + font-family: Roboto; + + + font-size: 13px; + + + line-height: 13px; + + + selection-background-color: #75a7ff; + selection-color: #3c3c3c; + } + + *:focus { + outline: none; + } + + /* ------------------------------------------------------------------------ */ + /* Custom colors */ + + .danger{ + color: #dc3545; + background-color: transparent; + } + + .warning{ + color: #ffc107; + background-color: transparent; + } + + .success{ + color: #17a2b8; + background-color: transparent; + } + + .danger:disabled{ + color: rgba(220, 53, 69, 0.4); + border-color: rgba(220, 53, 69, 0.4); + } + + .warning:disabled{ + color: rgba(255, 193, 7, 0.4); + border-color: rgba(255, 193, 7, 0.4); + } + + .success:disabled{ + color: rgba(23, 162, 184, 0.4); + border-color: rgba(23, 162, 184, 0.4); + } + + .danger:flat:disabled{ + background-color: rgba(220, 53, 69, 0.1); + } + + .warning:flat:disabled{ + background-color: rgba(255, 193, 7, 0.1); + } + + .success:flat:disabled{ + background-color: rgba(23, 162, 184, 0.1); + } + + /* ------------------------------------------------------------------------ */ + /* Basic widgets */ + + QWidget { + background-color: #e6e6e6; + } + + QGroupBox, + QFrame { + background-color: #e6e6e6; + border: 2px solid #ffffff; + border-radius: 4px; + } + + QGroupBox.fill_background, + QFrame.fill_background { + background-color: #f5f5f5; + border: 2px solid #f5f5f5; + border-radius: 4px; + } + + QSplitter { + background-color: transparent; + border: none + } + + QStatusBar { + color: #555555; + background-color: rgba(255, 255, 255, 0.2); + border-radius: 0px; + } + + QScrollArea, + QStackedWidget, + QWidget > QToolBox, + QToolBox > QWidget, + QTabWidget > QWidget { + border: none; + } + + QTabWidget::pane { + border: none; + } + + /* ------------------------------------------------------------------------ */ + /* Inputs */ + + QDateTimeEdit, + QSpinBox, + QDoubleSpinBox, + QTextEdit, + QLineEdit, + QPushButton { + color: #2979ff; + background-color: #e6e6e6; + border: 2px solid #2979ff; + border-radius: 4px; + height: 32px; + } + + QDateTimeEdit, + QSpinBox, + QDoubleSpinBox, + QTreeView, + QListView, + QLineEdit, + QComboBox { + padding-left: 16px; + border-radius: 0px; + background-color: #f5f5f5; + border-width: 0 0 2px 0; + border-radius: 0px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + height: 32px; + } + + QPlainTextEdit { + border-radius: 4px; + padding: 8px 16px; + background-color: #e6e6e6; + border: 2px solid #ffffff; + } + + QTextEdit { + padding: 8px 16px; + border-radius: 4px; + background-color: #f5f5f5; + } + + QDateTimeEdit:disabled, + QSpinBox:disabled, + QDoubleSpinBox:disabled, + QTextEdit:disabled, + QLineEdit:disabled { + color: rgba(41, 121, 255, 0.2); + background-color: rgba(245, 245, 245, 0.75); + border: 2px solid rgba(41, 121, 255, 0.2); + border-width: 0 0 2px 0; + padding: 0px 16px; + border-radius: 0px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + height: 32px; + } + + /* ------------------------------------------------------------------------ */ + /* QComboBox */ + + QComboBox { + color: #2979ff; + border: 1px solid #2979ff; + border-width: 0 0 2px 0; + background-color: #f5f5f5; + border-radius: 0px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + height: 32px; + } + + QComboBox:disabled { + color: rgba(41, 121, 255, 0.2); + background-color: rgba(245, 245, 245, 0.75); + border-bottom: 2px solid rgba(41, 121, 255, 0.2); + } + + QComboBox::drop-down { + border: none; + color: #2979ff; + width: 20px; + } + + QComboBox::down-arrow { + image: url(icon:/primary/downarrow.svg); + margin-right: 12px; + } + + QComboBox::down-arrow:disabled { + image: url(icon:/disabled/downarrow.svg); + margin-right: 12px; + } + + QComboBox QAbstractItemView { + background-color: #f5f5f5; + border: 2px solid #ffffff; + border-radius: 4px; + } + + QComboBox[frame='false'] { + color: #2979ff; + background-color: transparent; + border: 1px solid transparent; + } + QComboBox[frame='false']:disabled { + color: rgba(41, 121, 255, 0.2); + } + + /* ------------------------------------------------------------------------ */ + /* Spin buttons */ + + QDateTimeEdit::up-button, + QDoubleSpinBox::up-button, + QSpinBox::up-button { + subcontrol-origin: border; + subcontrol-position: top right; + width: 20px; + image: url(icon:/primary/uparrow.svg); + border-width: 0px; + margin-right: 5px; + } + + QDateTimeEdit::up-button:disabled, + QDoubleSpinBox::up-button:disabled, + QSpinBox::up-button:disabled { + image: url(icon:/disabled/uparrow.svg); + } + + QDateTimeEdit::down-button, + QDoubleSpinBox::down-button, + QSpinBox::down-button { + subcontrol-origin: border; + subcontrol-position: bottom right; + width: 20px; + image: url(icon:/primary/downarrow.svg); + border-width: 0px; + border-top-width: 0; + margin-right: 5px; + } + + QDateTimeEdit::down-button:disabled, + QDoubleSpinBox::down-button:disabled, + QSpinBox::down-button:disabled { + image: url(icon:/disabled/downarrow.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QPushButton */ + + QPushButton { + text-transform: uppercase; + margin: 0px; + padding: 1px 16px; + height: 32px; + font-weight: bold; + + + border-radius: 4px; + + + } + + QPushButton:checked, + QPushButton:pressed { + color: #e6e6e6; + background-color: #2979ff; + } + + QPushButton:flat { + margin: 0px; + color: #2979ff; + border: none; + background-color: transparent; + } + + QPushButton:flat:hover { + background-color: rgba(41, 121, 255, 0.2); + } + + QPushButton:flat:pressed, + QPushButton:flat:checked { + background-color: rgba(41, 121, 255, 0.1); + } + + QPushButton:disabled { + color: rgba(255, 255, 255, 0.75); + background-color: transparent; + border-color: #ffffff; + } + + QPushButton:flat:disabled { + color: rgba(255, 255, 255, 0.75); + background-color: rgba(255, 255, 255, 0.25); + border: none; + } + + QPushButton:disabled { + border: 2px solid rgba(255, 255, 255, 0.75); + } + + QPushButton:checked:disabled { + color: #f5f5f5; + background-color: #ffffff; + border-color: #ffffff; + } + + /* ------------------------------------------------------------------------ */ + /* QTabBar */ + + QTabBar{ + text-transform: uppercase; + font-weight: bold; + } + + QTabBar::tab { + color: #555555; + border: 0px; + } + + QTabBar::tab:bottom, + QTabBar::tab:top{ + padding: 0 16px; + height: 28px; + } + + QTabBar::tab:left, + QTabBar::tab:right{ + padding: 16px 0; + width: 28px; + } + + QTabBar::tab:top:selected, + QTabBar::tab:top:hover { + color: #2979ff; + border-bottom: 2px solid #2979ff; + } + + QTabBar::tab:bottom:selected, + QTabBar::tab:bottom:hover { + color: #2979ff; + border-top: 2px solid #2979ff; + } + + QTabBar::tab:right:selected, + QTabBar::tab:right:hover { + color: #2979ff; + border-left: 2px solid #2979ff; + } + + QTabBar::tab:left:selected, + QTabBar::tab:left:hover { + color: #2979ff; + border-right: 2px solid #2979ff; + } + + QTabBar QToolButton:hover, + QTabBar QToolButton { + border: 20px; + background-color: #e6e6e6; + } + + QTabBar QToolButton::up-arrow { + image: url(icon:/disabled/uparrow2.svg); + } + + QTabBar QToolButton::up-arrow:hover { + image: url(icon:/primary/uparrow2.svg); + } + + QTabBar QToolButton::down-arrow { + image: url(icon:/disabled/downarrow2.svg); + } + + QTabBar QToolButton::down-arrow:hover { + image: url(icon:/primary/downarrow2.svg); + } + + QTabBar QToolButton::right-arrow { + image: url(icon:/primary/rightarrow2.svg); + } + + QTabBar QToolButton::right-arrow:hover { + image: url(icon:/disabled/rightarrow2.svg); + } + + QTabBar QToolButton::left-arrow { + image: url(icon:/primary/leftarrow2.svg); + } + + QTabBar QToolButton::left-arrow:hover { + image: url(icon:/disabled/leftarrow2.svg); + } + + QTabBar::close-button { + image: url(icon:/disabled/tab_close.svg); + } + + QTabBar::close-button:hover { + image: url(icon:/primary/tab_close.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QGroupBox */ + + QGroupBox { + padding: 16px; + padding-top: 36px; + line-height: ; + text-transform: uppercase; + font-size: ; + } + + QGroupBox::title { + color: rgba(85, 85, 85, 0.4); + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 16px; + background-color: #e6e6e6; + background-color: transparent; + height: 36px; + } + + /* ------------------------------------------------------------------------ */ + /* QRadioButton and QCheckBox labels */ + + QRadioButton, + QCheckBox { + spacing: 12px; + color: #555555; + line-height: 14px; + height: 36px; + background-color: transparent; + spacing: 5px; + } + + QRadioButton:disabled, + QCheckBox:disabled { + color: rgba(85, 85, 85, 0.3); + } + + /* ------------------------------------------------------------------------ */ + /* General Indicators */ + + QGroupBox::indicator { + width: 24px; + height: 24px; + border-radius: 3px; + } + + QMenu::indicator, + QListView::indicator, + QTableWidget::indicator, + QRadioButton::indicator, + QCheckBox::indicator { + width: 28px; + height: 28px; + border-radius: 4px; + } + + /* ------------------------------------------------------------------------ */ + /* QListView Indicator */ + + QListView::indicator:checked, + QListView::indicator:checked:selected, + QListView::indicator:checked:focus { + image: url(icon:/primary/checklist.svg); + } + + QListView::indicator:checked:selected:active { + image: url(icon:/primary/checklist_invert.svg); + } + + QListView::indicator:checked:disabled { + image: url(icon:/disabled/checklist.svg); + } + + QListView::indicator:indeterminate, + QListView::indicator:indeterminate:selected, + QListView::indicator:indeterminate:focus { + image: url(icon:/primary/checklist_indeterminate.svg); + } + + QListView::indicator:indeterminate:selected:active { + image: url(icon:/primary/checklist_indeterminate_invert.svg); + } + + QListView::indicator:indeterminate:disabled { + image: url(icon:/disabled/checklist_indeterminate.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QTableView Indicator */ + + QTableView::indicator:enabled:checked, + QTableView::indicator:enabled:checked:selected, + QTableView::indicator:enabled:checked:focus { + image: url(icon:/primary/checkbox_checked.svg); + } + + QTableView::indicator:checked:selected:active { + image: url(icon:/primary/checkbox_checked_invert.svg); + } + + QTableView::indicator:disabled:checked, + QTableView::indicator:disabled:checked:selected, + QTableView::indicator:disabled:checked:focus { + image: url(icon:/disabled/checkbox_checked.svg); + } + + QTableView::indicator:enabled:unchecked, + QTableView::indicator:enabled:unchecked:selected, + QTableView::indicator:enabled:unchecked:focus { + image: url(icon:/primary/checkbox_unchecked.svg); + } + + QTableView::indicator:unchecked:selected:active { + image: url(icon:/primary/checkbox_unchecked_invert.svg); + } + + QTableView::indicator:disabled:unchecked, + QTableView::indicator:disabled:unchecked:selected, + QTableView::indicator:disabled:unchecked:focus { + image: url(icon:/disabled/checkbox_unchecked.svg); + } + + QTableView::indicator:enabled:indeterminate, + QTableView::indicator:enabled:indeterminate:selected, + QTableView::indicator:enabled:indeterminate:focus { + image: url(icon:/primary/checkbox_indeterminate.svg); + } + + QTableView::indicator:indeterminate:selected:active { + image: url(icon:/primary/checkbox_indeterminate_invert.svg); + } + + QTableView::indicator:disabled:indeterminate, + QTableView::indicator:disabled:indeterminate:selected, + QTableView::indicator:disabled:indeterminate:focus { + image: url(icon:/disabled/checkbox_indeterminate.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QCheckBox and QGroupBox Indicator */ + + QCheckBox::indicator:checked, + QGroupBox::indicator:checked { + image: url(icon:/primary/checkbox_checked.svg); + } + + QCheckBox::indicator:unchecked, + QGroupBox::indicator:unchecked { + image: url(icon:/primary/checkbox_unchecked.svg); + } + + QCheckBox::indicator:indeterminate, + QGroupBox::indicator:indeterminate { + image: url(icon:/primary/checkbox_indeterminate.svg); + } + + QCheckBox::indicator:checked:disabled, + QGroupBox::indicator:checked:disabled { + image: url(icon:/disabled/checkbox_checked.svg); + } + + QCheckBox::indicator:unchecked:disabled, + QGroupBox::indicator:unchecked:disabled { + image: url(icon:/disabled/checkbox_unchecked.svg); + } + + QCheckBox::indicator:indeterminate:disabled, + QGroupBox::indicator:indeterminate:disabled { + image: url(icon:/disabled/checkbox_indeterminate.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QRadioButton Indicator */ + + QRadioButton::indicator:checked { + image: url(icon:/primary/radiobutton_checked.svg); + } + + QRadioButton::indicator:unchecked { + image: url(icon:/primary/radiobutton_unchecked.svg); + } + + QRadioButton::indicator:checked:disabled { + image: url(icon:/disabled/radiobutton_checked.svg); + } + + QRadioButton::indicator:unchecked:disabled { + image: url(icon:/disabled/radiobutton_unchecked.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QDockWidget */ + + QDockWidget { + color: #555555; + text-transform: uppercase; + border: 2px solid #f5f5f5; + titlebar-close-icon: url(icon:/primary/close.svg); + titlebar-normal-icon: url(icon:/primary/float.svg); + border-radius: 4px; + } + + QDockWidget::title { + text-align: left; + padding-left: 36px; + padding: 3px; + margin-top: 4px; + } + + /* ------------------------------------------------------------------------ */ + /* QComboBox indicator */ + + QComboBox::indicator:checked { + image: url(icon:/primary/checklist.svg); + } + + QComboBox::indicator:checked:selected { + image: url(icon:/primary/checklist_invert.svg); + } + + /* ------------------------------------------------------------------------ */ + /* Menu Items */ + + QComboBox::item, + QCalendarWidget QMenu::item, + QMenu::item { + + height: 28px; + + border: 8px solid transparent; + color: #555555; + } + + QCalendarWidget QMenu::item, + QMenu::item { + + + } + + + QComboBox::item:selected, + QCalendarWidget QMenu::item:selected, + QMenu::item:selected { + color: #3c3c3c; + background-color: #75a7ff; + border-radius: 0px; + } + + QComboBox::item:disabled, + QCalendarWidget QMenu::item:disabled, + QMenu::item:disabled { + color: rgba(85, 85, 85, 0.3); + } + + /* ------------------------------------------------------------------------ */ + /* QMenu */ + + QCalendarWidget QMenu, + QMenu { + background-color: #f5f5f5; + border: 2px solid #ffffff; + border-radius: 4px; + } + + QMenu::separator { + height: 2px; + background-color: #ffffff; + margin-left: 2px; + margin-right: 2px; + } + + QMenu::right-arrow{ + image: url(icon:/primary/rightarrow.svg); + width: 16px; + height: 16px; + } + + QMenu::right-arrow:selected{ + image: url(icon:/disabled/rightarrow.svg); + } + + QMenu::indicator:non-exclusive:unchecked { + image: url(icon:/primary/checkbox_unchecked.svg); + } + + QMenu::indicator:non-exclusive:unchecked:selected { + image: url(icon:/primary/checkbox_unchecked_invert.svg); + } + + QMenu::indicator:non-exclusive:checked { + image: url(icon:/primary/checkbox_checked.svg); + } + + QMenu::indicator:non-exclusive:checked:selected { + image: url(icon:/primary/checkbox_checked_invert.svg); + } + + QMenu::indicator:exclusive:unchecked { + image: url(icon:/primary/radiobutton_unchecked.svg); + } + + QMenu::indicator:exclusive:unchecked:selected { + image: url(icon:/primary/radiobutton_unchecked_invert.svg); + } + + QMenu::indicator:exclusive:checked { + image: url(icon:/primary/radiobutton_checked.svg); + } + + QMenu::indicator:exclusive:checked:selected { + image: url(icon:/primary/radiobutton_checked_invert.svg); + } + + /* ------------------------------------------------------------------------ */ + /* QMenuBar */ + + QMenuBar { + background-color: #f5f5f5; + color: #555555; + } + + QMenuBar::item { + height: 32px; + padding: 8px; + background-color: transparent; + color: #555555; + } + + QMenuBar::item:selected, + QMenuBar::item:pressed { + color: #3c3c3c; + background-color: #75a7ff; + } + + /* ------------------------------------------------------------------------ */ + /* QToolBox */ + + QToolBox::tab { + background-color: #f5f5f5; + color: #555555; + text-transform: uppercase; + border-radius: 4px; + padding-left: 15px; + } + + QToolBox::tab:selected, + QToolBox::tab:hover { + background-color: rgba(41, 121, 255, 0.2); + } + + /* ------------------------------------------------------------------------ */ + /* QProgressBar */ + + QProgressBar { + border-radius: 0; + background-color: #ffffff; + text-align: center; + color: transparent; + } + + QProgressBar::chunk { + background-color: #2979ff; + } + + /* ------------------------------------------------------------------------ */ + /* QScrollBar */ + + QScrollBar:horizontal { + border: 0; + background: #f5f5f5; + height: 8px; + } + + QScrollBar:vertical { + border: 0; + background: #f5f5f5; + width: 8px; + } + + QScrollBar::handle { + background: rgba(41, 121, 255, 0.1); + } + + QScrollBar::handle:horizontal { + min-width: 24px; + } + + QScrollBar::handle:vertical { + min-height: 24px; + } + + QScrollBar::handle:vertical:hover, + QScrollBar::handle:horizontal:hover { + background: #2979ff; + } + + QScrollBar::add-line:vertical, + QScrollBar::sub-line:vertical, + QScrollBar::add-line:horizontal, + QScrollBar::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; + } + + /* ------------------------------------------------------------------------ */ + /* QScrollBar-Big */ + + QScrollBar.big:horizontal { + border: 0; + background: #f5f5f5; + height: 36px; + } + + QScrollBar.big:vertical { + border: 0; + background: #f5f5f5; + width: 36px; + } + + QScrollBar.big::handle, + QScrollBar.big::handle:vertical:hover, + QScrollBar.big::handle:horizontal:hover { + background: #2979ff; + } + + QScrollBar.big::handle:horizontal { + min-width: 24px; + } + + QScrollBar.big::handle:vertical { + min-height: 24px; + } + + QScrollBar.big::add-line:vertical, + QScrollBar.big::sub-line:vertical, + QScrollBar.big::add-line:horizontal, + QScrollBar.big::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; + } + + /* ------------------------------------------------------------------------ */ + /* QSlider */ + + QSlider:horizontal { + min-height: 24px; + max-height: 24px; + } + + QSlider:vertical { + min-width: 24px; + max-width: 24px; + } + + QSlider::groove:horizontal { + height: 4px; + background: #393939; + margin: 0 12px; + } + + QSlider::groove:vertical { + width: 4px; + background: #393939; + margin: 12px 0; + border-radius: 24px; + } + + QSlider::handle:horizontal { + image: url(icon:/primary/slider.svg); + width: 24px; + height: 24px; + margin: -24px -12px; + } + + QSlider::handle:vertical { + image: url(icon:/primary/slider.svg); + border-radius: 24px; + width: 24px; + height: 24px; + margin: -12px -24px; + } + + QSlider::add-page { + background: #f5f5f5; + } + + QSlider::sub-page { + background: #2979ff; + } + + /* ------------------------------------------------------------------------ */ + /* QLabel */ + + QLabel { + border: none; + background: transparent; + color: #555555 + } + + QLabel:disabled { + color: rgba(85, 85, 85, 0.2) + } + + /* ------------------------------------------------------------------------ */ + /* VLines and HLinex */ + + QFrame[frameShape="4"] { + border-width: 1px 0 0 0; + background: none; + } + + QFrame[frameShape="5"] { + border-width: 0 1px 0 0; + background: none; + } + + QFrame[frameShape="4"], + QFrame[frameShape="5"] { + border-color: #ffffff; + } + + /* ------------------------------------------------------------------------ */ + /* QToolBar */ + + QToolBar { + background: #e6e6e6; + border: 0px solid; + } + + QToolBar:horizontal { + border-bottom: 1px solid #ffffff; + } + + QToolBar:vertical { + border-right: 1px solid #ffffff; + } + + QToolBar::handle:horizontal { + image: url(icon:/primary/toolbar-handle-horizontal.svg); + } + + QToolBar::handle:vertical { + image: url(icon:/primary/toolbar-handle-vertical.svg); + } + + QToolBar::separator:horizontal { + border-right: 1px solid #ffffff; + border-left: 1px solid #ffffff; + width: 1px; + } + + QToolBar::separator:vertical { + border-top: 1px solid #ffffff; + border-bottom: 1px solid #ffffff; + height: 1px; + } + + + /* ------------------------------------------------------------------------ */ + /* QToolButton */ + + QToolButton { + background: #e6e6e6; + border: 0px; + height: 36px; + margin: 3px; + padding: 3px; + border-right: 12px solid #e6e6e6; + border-left: 12px solid #e6e6e6; + } + + QToolButton:hover { + background: #ffffff; + border-right: 12px solid #ffffff; + border-left: 12px solid #ffffff; + } + + QToolButton:pressed { + background: #f5f5f5; + border-right: 12px solid #f5f5f5; + border-left: 12px solid #f5f5f5; + } + + QToolButton:checked { + background: #ffffff; + border-left: 12px solid #ffffff; + border-right: 12px solid #2979ff; + } + + /* ------------------------------------------------------------------------ */ + /* General viewers */ + + QTableView { + background-color: #e6e6e6; + border: 1px solid #f5f5f5; + border-radius: 4px; + } + + QTreeView, + QListView { + border-radius: 4px; + padding: 4px; + margin: 0px; + border: 0px; + } + + QTableView::item, + QTreeView::item, + QListView::item { + padding: 4px; + min-height: 32px; + color: #555555; + selection-color: #555555; /* For Windows */ + border-color: transparent; /* Fix #34 */ + } + + /* ------------------------------------------------------------------------ */ + /* Items Selection */ + + QTableView::item:selected, + QTreeView::item:selected, + QListView::item:selected { + background-color: rgba(41, 121, 255, 0.2); + selection-background-color: rgba(41, 121, 255, 0.2); + color: #555555; + selection-color: #555555; /* For Windows */ + } + + QTableView::item:selected:focus, + QTreeView::item:selected:focus, + QListView::item:selected:focus { + background-color: #2979ff; + selection-background-color: #2979ff; + color: #3c3c3c; + selection-color: #3c3c3c; /* For Windows */ + } + + QTableView { + selection-background-color: rgba(41, 121, 255, 0.2); + } + + QTableView:focus { + selection-background-color: #2979ff; + } + + QTableView::item:disabled { + color: rgba(85, 85, 85, 0.3); + selection-color: rgba(85, 85, 85, 0.3); + background-color: #f5f5f5; + selection-background-color: #f5f5f5; + } + + /* ------------------------------------------------------------------------ */ + /* QTreeView */ + + QTreeView::branch{ + background-color: #f5f5f5; + } + + QTreeView::branch:closed:has-children:has-siblings, + QTreeView::branch:closed:has-children:!has-siblings { + image: url(icon:/primary/branch-closed.svg); + } + + QTreeView::branch:open:has-children:!has-siblings, + QTreeView::branch:open:has-children:has-siblings { + image: url(icon:/primary/branch-open.svg); + } + + QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(icon:/disabled/vline.svg) 0; + } + + QTreeView::branch:has-siblings:adjoins-item { + border-image: url(icon:/disabled/branch-more.svg) 0; + } + + QTreeView::branch:!has-children:!has-siblings:adjoins-item, + QTreeView::branch:has-children:!has-siblings:adjoins-item { + border-image: url(icon:/disabled/branch-end.svg) 0; + } + + QTreeView QHeaderView::section { + border: none; + } + + + /* ------------------------------------------------------------------------ */ + /* Custom buttons */ + + QPushButton.danger { + border-color: #dc3545; + color: #dc3545; + } + + QPushButton.danger:checked, + QPushButton.danger:pressed { + color: #e6e6e6; + background-color: #dc3545; + } + + QPushButton.warning{ + border-color: #ffc107; + color: #ffc107; + } + + QPushButton.warning:checked, + QPushButton.warning:pressed { + color: #e6e6e6; + background-color: #ffc107; + } + + QPushButton.success { + border-color: #17a2b8; + color: #17a2b8; + } + + QPushButton.success:checked, + QPushButton.success:pressed { + color: #e6e6e6; + background-color: #17a2b8; + } + + QPushButton.danger:flat:hover { + background-color: rgba(220, 53, 69, 0.2); + } + + QPushButton.danger:flat:pressed, + QPushButton.danger:flat:checked { + background-color: rgba(220, 53, 69, 0.1); + color: #dc3545; + } + + QPushButton.warning:flat:hover { + background-color: rgba(255, 193, 7, 0.2); + } + + QPushButton.warning:flat:pressed, + QPushButton.warning:flat:checked { + background-color: rgba(255, 193, 7, 0.1); + color: #ffc107; + } + + QPushButton.success:flat:hover { + background-color: rgba(23, 162, 184, 0.2); + } + + QPushButton.success:flat:pressed, + QPushButton.success:flat:checked { + background-color: rgba(23, 162, 184, 0.1); + color: #17a2b8; + } + + /* ------------------------------------------------------------------------ */ + /* QTableView */ + + QTableCornerButton::section { + background-color: #f5f5f5; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #e6e6e6; + } + + QTableView { + alternate-background-color: rgba(245, 245, 245, 0.7); + } + + QHeaderView { + border: none; + } + + QHeaderView::section { + color: rgba(85, 85, 85, 0.7); + text-transform: uppercase; + background-color: #f5f5f5; + padding: 0 24px; + height: 36px; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #e6e6e6; + } + + QHeaderView::section:vertical { + + } + + QHeaderView::section:horizontal { + + } + + /* ------------------------------------------------------------------------ */ + /* QLCDNumber */ + + QLCDNumber { + color: #2979ff; + background-color:rgba(41, 121, 255, 0.1); + border: 1px solid rgba(41, 121, 255, 0.3); + border-radius: 4px; + } + + /* ------------------------------------------------------------------------ */ + /* QCalendarWidget */ + + #qt_calendar_prevmonth { + qproperty-icon: url(icon:/primary/leftarrow.svg); + } + + #qt_calendar_nextmonth { + qproperty-icon: url(icon:/primary/rightarrow.svg); + } + + /* ------------------------------------------------------------------------ */ + /* Inline QLineEdit */ + + QTreeView QLineEdit, + QTableView QLineEdit, + QListView QLineEdit { + color: #555555; + background-color: #f5f5f5; + border: 1px solid unset; + border-radius: unset; + padding: unset; + padding-left: unset; + height: unset; + border-width: unset; + border-top-left-radius: unset; + border-top-right-radius: unset; + } + + /* ------------------------------------------------------------------------ */ + /* QToolTip */ + + QToolTip { + padding: 4px; + border: 1px solid #e6e6e6; + border-radius: 4px; + color: #555555; + background-color: #ffffff; + } + + /* ------------------------------------------------------------------------ */ + /* QDialog */ + + + QDialog QToolButton:disabled { + background-color: #f5f5f5; + color: #555555 + } + + /* ------------------------------------------------------------------------ */ + /* Grips */ + + + QMainWindow::separator:vertical, + QSplitter::handle:horizontal { + image: url(icon:/primary/splitter-horizontal.svg); + } + + QMainWindow::separator:horizontal, + QSplitter::handle:vertical { + image: url(icon:/primary/splitter-vertical.svg); + } + + QSizeGrip { + image: url(icon:/primary/sizegrip.svg); + background-color: transparent; + } + + QMenuBar QToolButton:hover, + QMenuBar QToolButton:pressed, + QMenuBar QToolButton { + border-width: 0; + border-left: 10px; + border-image: url(icon:/primary/rightarrow2.svg); + background-color: transparent; + } + + + + + + + + + 输入参数 - - QSizePolicy::Fixed + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + 异常点比例 + + + Qt::AlignCenter + + + + + + + 测试样本数 + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + + 选择模型 + + + Qt::AlignCenter + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + + + + + + + + + 特征维数 + + + Qt::AlignCenter + + + + + + + + + + + + + + 训练样本数 + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + 随机种子 + + + Qt::AlignCenter + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + + + + + + 检测结果 - - - 20 - 20 - + + + + + + 1030 + 699 + + + + + + + :/image/splash.png + + + true + + + Qt::AlignCenter + + + + + + + + + + QFrame::StyledPanel - - - - - - Qt::Vertical + + QFrame::Raised - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - - - - - - - - 检测结果 - - - - - - - 1030 - 699 - - - - - - - :/image/splash.png - - - true - - - Qt::AlignCenter - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - Qt::AlignCenter - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - 24 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 检测 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + Qt::AlignCenter + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 24 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 检测 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + - - - - - - - + + + - - - - - - + + + + + \ No newline at end of file diff --git a/src/res.qrc b/src/res.qrc index 4bc3054..c337125 100644 --- a/src/res.qrc +++ b/src/res.qrc @@ -2,4 +2,4 @@ splash.png - + \ No newline at end of file diff --git a/src/res_rc.py b/src/res_rc.py index 5a0aadb..fcee545 100644 --- a/src/res_rc.py +++ b/src/res_rc.py @@ -1,17 +1,17 @@ # MIT License -# +# # Copyright (c) 2022 Cong Feng -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -13408,7 +13408,7 @@ \x00\x00\x01\x83\x1f\xdb\x46\xd6\ " -qt_version = [int(v) for v in QtCore.qVersion().split('.')] +qt_version = [int(v) for v in QtCore.qVersion().split(".")] if qt_version < [5, 8, 0]: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 @@ -13416,10 +13416,17 @@ rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 + def qInitResources(): - QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + QtCore.qRegisterResourceData( + rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data + ) + def qCleanupResources(): - QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + QtCore.qUnregisterResourceData( + rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data + ) + qInitResources()