eric7/Preferences/ConfigurationPages/HexEditorPage.py

Tue, 28 Dec 2021 15:02:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 28 Dec 2021 15:02:01 +0100
branch
eric7
changeset 8863
03e7c23a05b1
parent 8319
ea11a3948f40
child 8875
67c3ea933787
permissions
-rw-r--r--

Added some TODO markers.

# -*- coding: utf-8 -*-

# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
#


"""
Module implementing the Hex Editor configuration page.
"""

from PyQt6.QtCore import pyqtSlot
from PyQt6.QtWidgets import QFontDialog

from .ConfigurationPageBase import ConfigurationPageBase
from .Ui_HexEditorPage import Ui_HexEditorPage

import Preferences


class HexEditorPage(ConfigurationPageBase, Ui_HexEditorPage):
    """
    Class implementing the Hex Editor configuration page.
    """
    def __init__(self):
        """
        Constructor
        """
        super().__init__()
        self.setupUi(self)
        self.setObjectName("HexEditorPage")
        
        # set initial values
        self.readOnlyCheckBox.setChecked(Preferences.getHexEditor(
            "OpenReadOnly"))
        self.overwriteCheckBox.setChecked(Preferences.getHexEditor(
            "OpenInOverwriteMode"))
        self.addressAreaCheckBox.setChecked(Preferences.getHexEditor(
            "ShowAddressArea"))
        self.addressAreaWidthSpinBox.setValue(Preferences.getHexEditor(
            "AddressAreaWidth"))
        self.asciiAreaCheckBox.setChecked(Preferences.getHexEditor(
            "ShowAsciiArea"))
        self.highlightingCheckBox.setChecked(Preferences.getHexEditor(
            "HighlightChanges"))
        self.recentFilesSpinBox.setValue(Preferences.getHexEditor(
            "RecentNumber"))
        
        # font
        self.monospacedFont = Preferences.getHexEditor("Font")
        self.monospacedFontSample.setFont(self.monospacedFont)

        # colours
        self.initColour("HighlightingBackGround",
                        self.highlightingBackGroundButton,
                        Preferences.getHexEditor)
        self.initColour("HighlightingForeGround",
                        self.highlightingForeGroundButton,
                        Preferences.getHexEditor)
        self.initColour("SelectionBackGround",
                        self.selectionBackGroundButton,
                        Preferences.getHexEditor)
        self.initColour("SelectionForeGround",
                        self.selectionForeGroundButton,
                        Preferences.getHexEditor)
        self.initColour("AddressAreaBackGround",
                        self.addressAreaBackGroundButton,
                        Preferences.getHexEditor)
        self.initColour("AddressAreaForeGround",
                        self.addressAreaForeGroundButton,
                        Preferences.getHexEditor)
    
    def save(self):
        """
        Public slot to save the IRC configuration.
        """
        Preferences.setHexEditor(
            "OpenReadOnly", self.readOnlyCheckBox.isChecked())
        Preferences.setHexEditor(
            "OpenInOverwriteMode", self.overwriteCheckBox.isChecked())
        Preferences.setHexEditor(
            "ShowAddressArea", self.addressAreaCheckBox.isChecked())
        Preferences.setHexEditor(
            "AddressAreaWidth", self.addressAreaWidthSpinBox.value())
        Preferences.setHexEditor(
            "ShowAsciiArea", self.asciiAreaCheckBox.isChecked())
        Preferences.setHexEditor(
            "HighlightChanges", self.highlightingCheckBox.isChecked())
        Preferences.setHexEditor(
            "Font", self.monospacedFont)
        Preferences.setHexEditor(
            "RecentNumber", self.recentFilesSpinBox.value())
        
        # colours
        self.saveColours(Preferences.setHexEditor)
    
    @pyqtSlot()
    def on_monospacedFontButton_clicked(self):
        """
        Private method used to select the font to be used.
        """
        self.monospacedFont = self.selectFont(
            self.monospacedFontSample, self.monospacedFont,
            options=QFontDialog.FontDialogOption.MonospacedFonts)
    
    def polishPage(self):
        """
        Public slot to perform some polishing actions.
        """
        self.monospacedFontSample.setFont(self.monospacedFont)


def create(dlg):
    """
    Module function to create the configuration page.
    
    @param dlg reference to the configuration dialog
    @return reference to the instantiated page (ConfigurationPageBase)
    """
    page = HexEditorPage()
    return page

eric ide

mercurial