Exemple #1
0
    def _open_color_picker(self):
        init_color = self._cosmetic_patches.hud_color
        color = QColorDialog.getColor(QColor(*init_color))

        if color.isValid():
            color_tuple = (color.red(), color.green(), color.blue())
            self._cosmetic_patches = dataclasses.replace(
                self._cosmetic_patches, hud_color=color_tuple)
            self._update_color_squares()
Exemple #2
0
    def _open_color_picker(self):
        init_color = self._cosmetic_patches.hud_color
        color = QColorDialog.getColor(QColor(*init_color))

        if color.isValid():
            color_tuple = (color.red(), color.green(), color.blue())
            estimated_ingame_alpha = max(color_tuple)
            if estimated_ingame_alpha < 150:
                QMessageBox.warning(self, "Dangerous preset", (
                    "Be careful, desaturated colors like this one tend to produce a transparent HUD.\n"
                    "Use at your own risk."))
            self._cosmetic_patches = dataclasses.replace(
                self._cosmetic_patches, hud_color=color_tuple)
            self._update_color_squares()
Exemple #3
0
    def onClick(self):

        colorDialog = QColorDialog(self.color)
        colorDialog.setOption(QColorDialog.ShowAlphaChannel)

        colorDialog.show()

        def colorSelected(color):
            self.color = color
            self.styleButton()

            if self.on_change:
                self.on_change(self.color)

        colorDialog.currentColorChanged.connect(colorSelected)

        self.color_dialog = colorDialog
Exemple #4
0
 def show_color_dialog():
     col = QColorDialog.getColor()
     if col.isValid():
         SETTINGS.setValue('color', col.name())
Exemple #5
0
 def _init_color_picker(self):
     _cp = QColorDialog()
     _cp.currentColorChanged.connect(self._handle_color_picker_changed)
     return _cp
Exemple #6
0
    def __init__(self):
        super(MainWindow, self).__init__()

        # Załadowanie layoutu [Modyfikować tylko w Designerze!]:
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Ustawienie kilku parametrów aplikacji
        self.setWindowTitle("Paint Application")
        self.setWindowIcon(QIcon("../Icons/main_icon.png"))
        self.ui.actionselect.setChecked(True)
        self.unsaved_changes = False

        # GraphicItemModel i listView
        self.gim = GraphicItemModel()
        self.ui.listView.setModel(self.gim)

        # Scena
        self.scene = QGraphicsScene()

        # Widok - utworzenie, połączenie z widokiem, dodanie do okienka aplikacji
        self.graphicsView = CustomQGraphicsView(self.scene,
                                                self.centralWidget(), self.gim)
        self.graphicsView.setObjectName(u"graphicsView")
        self.graphicsView.setMinimumSize(QSize(250, 250))
        self.ui.gridLayout.addWidget(self.graphicsView, 0, 0, 1, 1)

        # Dialogi:
        # PrePickerDialog - wyświetlanie dialogu przed wyborem koloru (dla brush lub pen)
        self.color_picker_decide = PrePickerDialog()
        # ColorDialog - wybór koloru, dialog wyświetlany po PrePickerDialog
        self.color_picker_dialog = QColorDialog()
        # UnsavedChangesDialog - wyświetalnie dialogu np. po "Quit" lub "New" gdy są niezapisane zmiany
        self.unsaved_changes_dialog = UnsavedChangesDialog()
        # AboutDialog - wyświetalnie dialogu z informacjami o aplikacji
        self.about_dialog = AboutDialog()
        # AboutDialog - wyświetalnie dialogu z informacjami o nawigacji
        self.navigation_dialog = NavigationDialog()

        # ItemsInputOutput - menadżer zapisu i odczytu plików zawierających figury
        self.reader_writer = ItemsInputOutput(self.scene)

        # Powiązanie sygnałów ze slotami
        self.ui.actionNew.triggered.connect(self.slot_menu_new)
        self.ui.actionExport.triggered.connect(self.slot_menu_export)
        self.ui.actionSave.triggered.connect(self.slot_menu_save)
        self.ui.actionOpen.triggered.connect(self.slot_menu_open)
        self.ui.actionQuit.triggered.connect(self.slot_menu_quit)
        self.ui.actionAbout.triggered.connect(self.slot_menu_about)
        self.ui.actionNavigation.triggered.connect(self.slot_menu_navigation)

        self.ui.actionselect.triggered.connect(self.slot_trigger_select)
        self.ui.actionrectangle.triggered.connect(self.slot_trigger_rectangle)
        self.ui.actiontriangle.triggered.connect(self.slot_trigger_triangle)
        self.ui.actionellipse.triggered.connect(self.slot_trigger_ellipse)
        self.ui.actionline.triggered.connect(self.slot_trigger_line)
        self.ui.actionpolygon.triggered.connect(self.slot_trigger_polygon)
        self.ui.actionpicker.triggered.connect(self.slot_trigger_picker)
        self.ui.actionWidth.triggered.connect(self.slot_trigger_line_width)

        self.ui.lineEdit.textEdited.connect(self.slot_text_edited)
        self.color_picker_dialog.colorSelected.connect(
            self.slot_color_selected)
        self.gim.renamed.connect(self.unsaved_changes_detected)
        self.graphicsView.changed.connect(self.unsaved_changes_detected)
Exemple #7
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        # Załadowanie layoutu [Modyfikować tylko w Designerze!]:
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Ustawienie kilku parametrów aplikacji
        self.setWindowTitle("Paint Application")
        self.setWindowIcon(QIcon("../Icons/main_icon.png"))
        self.ui.actionselect.setChecked(True)
        self.unsaved_changes = False

        # GraphicItemModel i listView
        self.gim = GraphicItemModel()
        self.ui.listView.setModel(self.gim)

        # Scena
        self.scene = QGraphicsScene()

        # Widok - utworzenie, połączenie z widokiem, dodanie do okienka aplikacji
        self.graphicsView = CustomQGraphicsView(self.scene,
                                                self.centralWidget(), self.gim)
        self.graphicsView.setObjectName(u"graphicsView")
        self.graphicsView.setMinimumSize(QSize(250, 250))
        self.ui.gridLayout.addWidget(self.graphicsView, 0, 0, 1, 1)

        # Dialogi:
        # PrePickerDialog - wyświetlanie dialogu przed wyborem koloru (dla brush lub pen)
        self.color_picker_decide = PrePickerDialog()
        # ColorDialog - wybór koloru, dialog wyświetlany po PrePickerDialog
        self.color_picker_dialog = QColorDialog()
        # UnsavedChangesDialog - wyświetalnie dialogu np. po "Quit" lub "New" gdy są niezapisane zmiany
        self.unsaved_changes_dialog = UnsavedChangesDialog()
        # AboutDialog - wyświetalnie dialogu z informacjami o aplikacji
        self.about_dialog = AboutDialog()
        # AboutDialog - wyświetalnie dialogu z informacjami o nawigacji
        self.navigation_dialog = NavigationDialog()

        # ItemsInputOutput - menadżer zapisu i odczytu plików zawierających figury
        self.reader_writer = ItemsInputOutput(self.scene)

        # Powiązanie sygnałów ze slotami
        self.ui.actionNew.triggered.connect(self.slot_menu_new)
        self.ui.actionExport.triggered.connect(self.slot_menu_export)
        self.ui.actionSave.triggered.connect(self.slot_menu_save)
        self.ui.actionOpen.triggered.connect(self.slot_menu_open)
        self.ui.actionQuit.triggered.connect(self.slot_menu_quit)
        self.ui.actionAbout.triggered.connect(self.slot_menu_about)
        self.ui.actionNavigation.triggered.connect(self.slot_menu_navigation)

        self.ui.actionselect.triggered.connect(self.slot_trigger_select)
        self.ui.actionrectangle.triggered.connect(self.slot_trigger_rectangle)
        self.ui.actiontriangle.triggered.connect(self.slot_trigger_triangle)
        self.ui.actionellipse.triggered.connect(self.slot_trigger_ellipse)
        self.ui.actionline.triggered.connect(self.slot_trigger_line)
        self.ui.actionpolygon.triggered.connect(self.slot_trigger_polygon)
        self.ui.actionpicker.triggered.connect(self.slot_trigger_picker)
        self.ui.actionWidth.triggered.connect(self.slot_trigger_line_width)

        self.ui.lineEdit.textEdited.connect(self.slot_text_edited)
        self.color_picker_dialog.colorSelected.connect(
            self.slot_color_selected)
        self.gim.renamed.connect(self.unsaved_changes_detected)
        self.graphicsView.changed.connect(self.unsaved_changes_detected)

    # Sloty dla sygnałów z akcji menu-bara

    def slot_menu_new(self):
        if self.unsaved_changes:
            if not self.unsaved_changes_dialog.exec_():
                return
        self.scene.clear()
        self.unsaved_changes = False
        self.gim.remove_all_rows()

    def slot_menu_export(self):
        image = QImage(100, 100, QImage.Format_RGB32)
        painter = QPainter(image)
        painter.setRenderHint(QPainter.Antialiasing)
        self.scene.render(painter)
        image.save("saved_image.png")

    def slot_menu_save(self):
        file_name: tuple = QFileDialog.getSaveFileName(
            self, "Choose file with shapes to save", "", "Data (*.txt)")
        self.reader_writer.save_items(file_name[0], self.gim)

    def slot_menu_open(self):
        file_name: tuple = QFileDialog.getOpenFileName(
            self, "Choose file with shapes to load", "", "Data (*.txt)")
        self.reader_writer.load_items(file_name[0], self.gim)

    def slot_menu_quit(self):
        if self.unsaved_changes:
            if not self.unsaved_changes_dialog.exec_():
                return
        QApplication.quit()

    def slot_menu_about(self):
        self.about_dialog.exec_()

    def slot_menu_navigation(self):
        self.navigation_dialog.exec_()

    # Sloty dla sygnałów z akcji tool-bara

    def slot_trigger_select(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.SELECT

    def slot_trigger_rectangle(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.RECTANGLE

    def slot_trigger_triangle(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.TRIANGLE

    def slot_trigger_ellipse(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.ELLIPSE

    def slot_trigger_line(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.LINE

    def slot_trigger_polygon(self):
        self.graphicsView.actual_selection = self.graphicsView.Selection.POLYGON

    def slot_trigger_picker(self):
        if self.color_picker_decide.exec_():
            self.color_picker_dialog.show()

    def slot_trigger_line_width(self):
        width = QInputDialog.getDouble(
            self, "Width selection",
            "Please pass decimal value from range 0.01 to 20.00 <br /> with maximally "
            "2 decimal places", self.graphicsView.actual_pen.width(), 0.01,
            20.00, 2, Qt.WindowFlags(), 1.0)
        if width[1]:
            self.graphicsView.actual_pen.setWidthF(width[0])

    # Sloty dla pozostałych sygnałów

    def slot_color_selected(self):
        if self.color_picker_decide.radioButton.isChecked():
            self.graphicsView.actual_pen.setColor(
                self.color_picker_dialog.selectedColor())
        else:
            self.graphicsView.actual_brush.setColor(
                self.color_picker_dialog.selectedColor())

    def slot_text_edited(self, text: str):
        data: list[GraphicItemModel.Item] = self.gim.return_shapes()
        if len(text) == 0:
            for i in range(0, len(data)):
                self.ui.listView.setRowHidden(i, False)
        else:
            for i in range(0, len(data)):
                if not data[i].name.lower().startswith(text.lower()):
                    self.ui.listView.setRowHidden(i, True)
                else:
                    self.ui.listView.setRowHidden(i, False)

    def unsaved_changes_detected(self):
        self.unsaved_changes = True
Exemple #8
0
 def showDialog(self):
     col = QColorDialog.getColor()
     if col.isValid():
         self.frm.setStyleSheet("QWidget {background-color: %s}" %
                                col.name())
Exemple #9
0
 def update_color_name(self):
     self._savedColor = QColorDialog.getColor().name()
     self.__draw_selected_buttons()