Module soitool.help_actions

Includes two help-popups.

Has two dialogs that appear when actions from help are triggered.

Expand source code
"""Includes two help-popups.

Has two dialogs that appear when actions from help are triggered.
"""
from PySide2.QtWidgets import (
    QDialog,
    QLabel,
    QPushButton,
    QVBoxLayout,
    QHBoxLayout,
    QFormLayout,
    QScrollArea,
    QWidget,
)
from PySide2.QtCore import Qt
from PySide2.QtGui import QFont


class ShortcutsHelpDialog(QDialog):
    """The dialog for hotkeys.

    This class contains the information for the shortcuts/hotkeys that
    can be used in the application
    """

    def __init__(self):  # pylint: disable = R0915
        super().__init__()
        self.resize(300, 300)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)

        self.layout = QVBoxLayout()
        self.layout_label = QFormLayout()
        self.layout_button = QHBoxLayout()

        self.button_ok = QPushButton("Ok")
        self.button_ok.clicked.connect(self.close)

        self.header_main = QLabel("Hurtigtaster for applikasjonen:")
        self.header_main.setFont(QFont("Verdana", 10))
        self.header_table = QLabel("Hurtigtaster for redigerbare tabeller:")
        self.header_table.setFont(QFont("Verdana", 10))
        self.header_modules = QLabel("Hurtigtaster for noen gitte moduler:")
        self.header_modules.setFont(QFont("Verdana", 10))

        # Main/program shortcuts
        self.layout_label.addRow(self.header_main)
        self.layout_label.addRow(
            QLabel("Opprett en ny SOI: "), QLabel("Ctrl + N")
        )
        self.layout_label.addRow(
            QLabel("Åpne SOI fra fil: "), QLabel("Ctrl + O")
        )
        self.layout_label.addRow(
            QLabel("Åpne SOI fra database: "), QLabel("Ctrl + D")
        )
        self.layout_label.addRow(
            QLabel("Endre oppsett SOI: "), QLabel("Ctrl + I")
        )
        self.layout_label.addRow(
            QLabel("Legg til ny modul: "), QLabel("Ctrl + M")
        )
        self.layout_label.addRow(
            QLabel("Reorganiser moduler: "), QLabel("Ctrl + Mellomrom")
        )
        self.layout_label.addRow(QLabel("Eksporter PDF: "), QLabel("Ctrl + P"))
        self.layout_label.addRow(
            QLabel("Eksporter komprimert SOI: "), QLabel("Ctrl + E")
        )
        self.layout_label.addRow(
            QLabel("Lagre i database: "), QLabel("Ctrl + S")
        )
        self.layout_label.addRow(
            QLabel("Zoom inn: "), QLabel("Ctrl + Scroll oppover")
        )
        self.layout_label.addRow(
            QLabel("Zoom ut: "), QLabel("Ctrl + Scroll nedover")
        )

        # Table shortcuts
        self.layout_label.addRow(QLabel())
        self.layout_label.addRow(self.header_table)
        self.layout_label.addRow(QLabel("Legg til rad"), QLabel("Ctrl + +"))
        self.layout_label.addRow(QLabel("Fjern rad"), QLabel("Ctrl + -"))
        self.layout_label.addRow(
            QLabel("Legg til kolonne"), QLabel("Shift + +")
        )
        self.layout_label.addRow(QLabel("Fjern kolonne"), QLabel("Shift + -"))

        # Other module-specific shortcuts
        self.layout_label.addRow(QLabel())
        self.layout_label.addRow(self.header_modules)
        self.layout_label.addRow(
            QLabel("Rediger forhåndsavtalte koder: "), QLabel("Ctrl + R")
        )
        self.layout_label.addRow(
            QLabel("Rediger telefonliste: "), QLabel("Ctrl + R")
        )
        self.layout_label.addRow(
            QLabel("Rediger frekvenstabell: "), QLabel("Ctrl + R")
        )

        self.layout_button.addWidget(self.button_ok, alignment=Qt.AlignRight)

        self.layout.addLayout(self.layout_label)
        self.layout.addLayout(self.layout_button)
        self.setLayout(self.layout)


class BasicUsageHelpDialog(QDialog):
    """The dialog for easy use.

    This class contains text that explains the user how to use the application.
    """

    def __init__(self):  # pylint: disable = R0915
        super().__init__()
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)

        self.resize(900, 600)

        headline = QLabel("Enkel bruk")
        headline.setStyleSheet(
            "font-weight: bold; font-size: 14pt; text-decoration: underline"
        )

        main_text = (
            "Programmets hovedfunksjonalitet ligger i toppmeny-alternativene "
            "'SOI' og 'Kodebok', og i åpne faner.\n\n"
            "Gjennom topp-menyen 'SOI' kan man lage ny SOI eller åpne en "
            "eksisterende SOI fra fil eller\ndatabase, disse åpnes i en egen "
            "fane. Det er også mulig å lagre SOI i database, i tillegg til å "
            "\neksportere SOI til en komprimert/ukomprimert serialisert fil, "
            "eller til PDF som egner seg for utskrift.\n\n"
            "Meny-alternativene som omhandler lagring og eksport gjelder for "
            "den aktive fanen.\n"
            "Gjennom topp-menyen 'Kodebok' kan man åpne en fane for å se "
            "og/eller redigere kodeboka, \noppdatere kodeboka med nye koder, "
            "eller eksportere stor/liten kodebok som PDF."
        )
        main_label = QLabel(main_text)
        main_label.setStyleSheet("font-size: 10pt")

        soi_edit_headline = QLabel("Rediger SOI")
        soi_edit_headline.setStyleSheet("font-weight: bold; font-size: 11pt")
        soi_edit_text = (
            "Når en SOI opprettes, har den standard verdier for bl.a. "
            "overskrift, beskrivelse, gradering og datoer.\nDisse kan endres "
            "gjennom 'Oppsett'-knappen i nedre, venstre hjørne.\n\n"
            "Moduler legges til gjennom 'Ny modul'-knappen i nedre, venstre "
            "hjørne. Da åpnes en dialog der man kan\nvelge hvilken modul man "
            "vil ha, og man kan velge modulnavn og om modulen skal være et "
            "vedlegg.\n"
            "Vedleggsmoduler havner på en egen side. Liste over eksisterende "
            "moduler og vedlegg finnes på venstre\nside.\n\n"
            "Når en modul er lagt til, kan den redigeres direkte. Noen "
            "moduler har også hurtigtaster\n(se hjelp -> hurtigtaster) som "
            "kan brukes etter at modulen er klikket på.\n\n"
            "Etter en modul har blitt redigert kan den ende opp med å "
            "overlappe andre moduler. For å reorganisere\nmodulene kan en "
            "enten trykke på 'Reorganiser moduler'-knappen i nedre, venstre "
            "hjørne, eller trykke\npå selve SOI arket.\n\n"
            "En kan zoome ut og inn i SOI ved å holde nede Ctrl og scrolle "
            "med musehjulet."
        )
        soi_edit_label = QLabel(soi_edit_text)
        soi_edit_label.setStyleSheet("font-size: 10pt")

        soi_module_placement_headline = QLabel("Modulplassering")
        soi_module_placement_headline.setStyleSheet(
            "font-weight: bold; font-size: 10pt"
        )
        soi_module_placement_text = (
            "Under 'oppsett' kan man velge mellom to strategier for "
            "modulplassering: manuell og automatisk.\n\n"
            "Manuell plassering er desverre ikke klart for bruk. "
            "Automatisk plassering innebærer at programvaren\nselv bestemmer "
            "hvordan moduler plasseres i SOI. Dette fører til mindre arbeid "
            "for SOI-forfatter, og\nvil ofte resultere i mer optimale "
            "plasseringer.\n\n"
            "Det er tre måter man kan påvirke den automatiske "
            "modulplasseringen: Sidevalg, plasseringsalgoritme og\n"
            "forhåndssortering. Med sidevalg kan man påvirke hvilken side "
            "moduler skal plasseres på. Med\nplasseringsalgoritme kan man "
            "påvirke hvordan moduler plasseres innad i en side. Standard "
            "algoritme er\nofte et godt valg, men man kan eksperimentere med "
            "ulike algoritmer for å oppnå nye plasseringer. Med\n"
            "forhåndssortering kan man påvirke rekkefølgen moduler plasseres "
            "i SOI. Man kan enten velge å la\nprogramvaren velge sortering, "
            "eller å styre sortering selv. Om man velger å sortere selv, vil\n"
            "rekkefølgen i modullisten til venstre respekteres. Dra-og-slipp "
            "for å omprioritere moduler i\nmodullisten."
        )
        soi_module_placement_label = QLabel(soi_module_placement_text)
        soi_module_placement_label.setStyleSheet("font-size: 10pt")

        codebook_headline = QLabel("Se/rediger kodebok")
        codebook_headline.setStyleSheet("font-weight: bold; font-size: 11pt")
        codebook_text = (
            "Når man har valgt 'Se/rediger kodebok' i kodebok-menyen, åpnes "
            "det en kodebok-fane. Øverst kan man\nlegge til ord/uttrykk "
            "gjennom innfylling og bruk av 'Legg til'-knappen.\n\n"
            "Under er en tabell som viser kodebokas innhold. Tabellen kan "
            "sorteres ved å klikke på kolonnenavnene.\nMan kan redigere "
            "innholdet ved å dobbelklikke på celler, dette gjelder alle "
            "kolonner med unntak av\nkode-kolonnen. Verdien i type-kolonnen "
            "er nødt til å være 'Liten' eller 'Stor', andre ord enn disse\n"
            "avvises.\n\n"
            "Ved å klikke på en rad i kodebok-tabellen og trykke 'delete' på "
            "tastaturet, sletter man den valgte raden."
        )
        codebook_label = QLabel(codebook_text)
        codebook_label.setStyleSheet("font-size: 10pt")

        self.layout = QVBoxLayout()
        self.layout_text = QVBoxLayout()
        self.layout_button = QHBoxLayout()

        self.button_ok = QPushButton("Ok")
        self.button_ok.clicked.connect(self.close)

        self.layout_text.addWidget(headline, alignment=Qt.AlignHCenter)
        self.layout_text.addWidget(main_label, alignment=Qt.AlignLeft)
        self.layout_text.addWidget(
            soi_edit_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(soi_edit_label, alignment=Qt.AlignLeft)
        self.layout_text.addWidget(
            soi_module_placement_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(
            soi_module_placement_label, alignment=Qt.AlignLeft
        )
        self.layout_text.addWidget(
            codebook_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(codebook_label, alignment=Qt.AlignLeft)
        self.layout_button.addWidget(self.button_ok, alignment=Qt.AlignRight)

        self.layout.addLayout(self.layout_text)

        self.widget_container = QWidget()
        self.widget_container.setLayout(self.layout)

        self.scroll_area = QScrollArea()
        self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll_area.setWidget(self.widget_container)

        self.layout_container = QVBoxLayout()
        self.layout_container.addWidget(self.scroll_area)
        self.layout_container.addLayout(self.layout_button)

        self.setLayout(self.layout_container)

Classes

class BasicUsageHelpDialog

The dialog for easy use.

This class contains text that explains the user how to use the application.

Expand source code
class BasicUsageHelpDialog(QDialog):
    """The dialog for easy use.

    This class contains text that explains the user how to use the application.
    """

    def __init__(self):  # pylint: disable = R0915
        super().__init__()
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)

        self.resize(900, 600)

        headline = QLabel("Enkel bruk")
        headline.setStyleSheet(
            "font-weight: bold; font-size: 14pt; text-decoration: underline"
        )

        main_text = (
            "Programmets hovedfunksjonalitet ligger i toppmeny-alternativene "
            "'SOI' og 'Kodebok', og i åpne faner.\n\n"
            "Gjennom topp-menyen 'SOI' kan man lage ny SOI eller åpne en "
            "eksisterende SOI fra fil eller\ndatabase, disse åpnes i en egen "
            "fane. Det er også mulig å lagre SOI i database, i tillegg til å "
            "\neksportere SOI til en komprimert/ukomprimert serialisert fil, "
            "eller til PDF som egner seg for utskrift.\n\n"
            "Meny-alternativene som omhandler lagring og eksport gjelder for "
            "den aktive fanen.\n"
            "Gjennom topp-menyen 'Kodebok' kan man åpne en fane for å se "
            "og/eller redigere kodeboka, \noppdatere kodeboka med nye koder, "
            "eller eksportere stor/liten kodebok som PDF."
        )
        main_label = QLabel(main_text)
        main_label.setStyleSheet("font-size: 10pt")

        soi_edit_headline = QLabel("Rediger SOI")
        soi_edit_headline.setStyleSheet("font-weight: bold; font-size: 11pt")
        soi_edit_text = (
            "Når en SOI opprettes, har den standard verdier for bl.a. "
            "overskrift, beskrivelse, gradering og datoer.\nDisse kan endres "
            "gjennom 'Oppsett'-knappen i nedre, venstre hjørne.\n\n"
            "Moduler legges til gjennom 'Ny modul'-knappen i nedre, venstre "
            "hjørne. Da åpnes en dialog der man kan\nvelge hvilken modul man "
            "vil ha, og man kan velge modulnavn og om modulen skal være et "
            "vedlegg.\n"
            "Vedleggsmoduler havner på en egen side. Liste over eksisterende "
            "moduler og vedlegg finnes på venstre\nside.\n\n"
            "Når en modul er lagt til, kan den redigeres direkte. Noen "
            "moduler har også hurtigtaster\n(se hjelp -> hurtigtaster) som "
            "kan brukes etter at modulen er klikket på.\n\n"
            "Etter en modul har blitt redigert kan den ende opp med å "
            "overlappe andre moduler. For å reorganisere\nmodulene kan en "
            "enten trykke på 'Reorganiser moduler'-knappen i nedre, venstre "
            "hjørne, eller trykke\npå selve SOI arket.\n\n"
            "En kan zoome ut og inn i SOI ved å holde nede Ctrl og scrolle "
            "med musehjulet."
        )
        soi_edit_label = QLabel(soi_edit_text)
        soi_edit_label.setStyleSheet("font-size: 10pt")

        soi_module_placement_headline = QLabel("Modulplassering")
        soi_module_placement_headline.setStyleSheet(
            "font-weight: bold; font-size: 10pt"
        )
        soi_module_placement_text = (
            "Under 'oppsett' kan man velge mellom to strategier for "
            "modulplassering: manuell og automatisk.\n\n"
            "Manuell plassering er desverre ikke klart for bruk. "
            "Automatisk plassering innebærer at programvaren\nselv bestemmer "
            "hvordan moduler plasseres i SOI. Dette fører til mindre arbeid "
            "for SOI-forfatter, og\nvil ofte resultere i mer optimale "
            "plasseringer.\n\n"
            "Det er tre måter man kan påvirke den automatiske "
            "modulplasseringen: Sidevalg, plasseringsalgoritme og\n"
            "forhåndssortering. Med sidevalg kan man påvirke hvilken side "
            "moduler skal plasseres på. Med\nplasseringsalgoritme kan man "
            "påvirke hvordan moduler plasseres innad i en side. Standard "
            "algoritme er\nofte et godt valg, men man kan eksperimentere med "
            "ulike algoritmer for å oppnå nye plasseringer. Med\n"
            "forhåndssortering kan man påvirke rekkefølgen moduler plasseres "
            "i SOI. Man kan enten velge å la\nprogramvaren velge sortering, "
            "eller å styre sortering selv. Om man velger å sortere selv, vil\n"
            "rekkefølgen i modullisten til venstre respekteres. Dra-og-slipp "
            "for å omprioritere moduler i\nmodullisten."
        )
        soi_module_placement_label = QLabel(soi_module_placement_text)
        soi_module_placement_label.setStyleSheet("font-size: 10pt")

        codebook_headline = QLabel("Se/rediger kodebok")
        codebook_headline.setStyleSheet("font-weight: bold; font-size: 11pt")
        codebook_text = (
            "Når man har valgt 'Se/rediger kodebok' i kodebok-menyen, åpnes "
            "det en kodebok-fane. Øverst kan man\nlegge til ord/uttrykk "
            "gjennom innfylling og bruk av 'Legg til'-knappen.\n\n"
            "Under er en tabell som viser kodebokas innhold. Tabellen kan "
            "sorteres ved å klikke på kolonnenavnene.\nMan kan redigere "
            "innholdet ved å dobbelklikke på celler, dette gjelder alle "
            "kolonner med unntak av\nkode-kolonnen. Verdien i type-kolonnen "
            "er nødt til å være 'Liten' eller 'Stor', andre ord enn disse\n"
            "avvises.\n\n"
            "Ved å klikke på en rad i kodebok-tabellen og trykke 'delete' på "
            "tastaturet, sletter man den valgte raden."
        )
        codebook_label = QLabel(codebook_text)
        codebook_label.setStyleSheet("font-size: 10pt")

        self.layout = QVBoxLayout()
        self.layout_text = QVBoxLayout()
        self.layout_button = QHBoxLayout()

        self.button_ok = QPushButton("Ok")
        self.button_ok.clicked.connect(self.close)

        self.layout_text.addWidget(headline, alignment=Qt.AlignHCenter)
        self.layout_text.addWidget(main_label, alignment=Qt.AlignLeft)
        self.layout_text.addWidget(
            soi_edit_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(soi_edit_label, alignment=Qt.AlignLeft)
        self.layout_text.addWidget(
            soi_module_placement_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(
            soi_module_placement_label, alignment=Qt.AlignLeft
        )
        self.layout_text.addWidget(
            codebook_headline, alignment=Qt.AlignHCenter
        )
        self.layout_text.addWidget(codebook_label, alignment=Qt.AlignLeft)
        self.layout_button.addWidget(self.button_ok, alignment=Qt.AlignRight)

        self.layout.addLayout(self.layout_text)

        self.widget_container = QWidget()
        self.widget_container.setLayout(self.layout)

        self.scroll_area = QScrollArea()
        self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll_area.setWidget(self.widget_container)

        self.layout_container = QVBoxLayout()
        self.layout_container.addWidget(self.scroll_area)
        self.layout_container.addLayout(self.layout_button)

        self.setLayout(self.layout_container)

Ancestors

  • PySide2.QtWidgets.QDialog
  • PySide2.QtWidgets.QWidget
  • PySide2.QtCore.QObject
  • PySide2.QtGui.QPaintDevice
  • Shiboken.Object

Class variables

var staticMetaObject
class ShortcutsHelpDialog

The dialog for hotkeys.

This class contains the information for the shortcuts/hotkeys that can be used in the application

Expand source code
class ShortcutsHelpDialog(QDialog):
    """The dialog for hotkeys.

    This class contains the information for the shortcuts/hotkeys that
    can be used in the application
    """

    def __init__(self):  # pylint: disable = R0915
        super().__init__()
        self.resize(300, 300)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)

        self.layout = QVBoxLayout()
        self.layout_label = QFormLayout()
        self.layout_button = QHBoxLayout()

        self.button_ok = QPushButton("Ok")
        self.button_ok.clicked.connect(self.close)

        self.header_main = QLabel("Hurtigtaster for applikasjonen:")
        self.header_main.setFont(QFont("Verdana", 10))
        self.header_table = QLabel("Hurtigtaster for redigerbare tabeller:")
        self.header_table.setFont(QFont("Verdana", 10))
        self.header_modules = QLabel("Hurtigtaster for noen gitte moduler:")
        self.header_modules.setFont(QFont("Verdana", 10))

        # Main/program shortcuts
        self.layout_label.addRow(self.header_main)
        self.layout_label.addRow(
            QLabel("Opprett en ny SOI: "), QLabel("Ctrl + N")
        )
        self.layout_label.addRow(
            QLabel("Åpne SOI fra fil: "), QLabel("Ctrl + O")
        )
        self.layout_label.addRow(
            QLabel("Åpne SOI fra database: "), QLabel("Ctrl + D")
        )
        self.layout_label.addRow(
            QLabel("Endre oppsett SOI: "), QLabel("Ctrl + I")
        )
        self.layout_label.addRow(
            QLabel("Legg til ny modul: "), QLabel("Ctrl + M")
        )
        self.layout_label.addRow(
            QLabel("Reorganiser moduler: "), QLabel("Ctrl + Mellomrom")
        )
        self.layout_label.addRow(QLabel("Eksporter PDF: "), QLabel("Ctrl + P"))
        self.layout_label.addRow(
            QLabel("Eksporter komprimert SOI: "), QLabel("Ctrl + E")
        )
        self.layout_label.addRow(
            QLabel("Lagre i database: "), QLabel("Ctrl + S")
        )
        self.layout_label.addRow(
            QLabel("Zoom inn: "), QLabel("Ctrl + Scroll oppover")
        )
        self.layout_label.addRow(
            QLabel("Zoom ut: "), QLabel("Ctrl + Scroll nedover")
        )

        # Table shortcuts
        self.layout_label.addRow(QLabel())
        self.layout_label.addRow(self.header_table)
        self.layout_label.addRow(QLabel("Legg til rad"), QLabel("Ctrl + +"))
        self.layout_label.addRow(QLabel("Fjern rad"), QLabel("Ctrl + -"))
        self.layout_label.addRow(
            QLabel("Legg til kolonne"), QLabel("Shift + +")
        )
        self.layout_label.addRow(QLabel("Fjern kolonne"), QLabel("Shift + -"))

        # Other module-specific shortcuts
        self.layout_label.addRow(QLabel())
        self.layout_label.addRow(self.header_modules)
        self.layout_label.addRow(
            QLabel("Rediger forhåndsavtalte koder: "), QLabel("Ctrl + R")
        )
        self.layout_label.addRow(
            QLabel("Rediger telefonliste: "), QLabel("Ctrl + R")
        )
        self.layout_label.addRow(
            QLabel("Rediger frekvenstabell: "), QLabel("Ctrl + R")
        )

        self.layout_button.addWidget(self.button_ok, alignment=Qt.AlignRight)

        self.layout.addLayout(self.layout_label)
        self.layout.addLayout(self.layout_button)
        self.setLayout(self.layout)

Ancestors

  • PySide2.QtWidgets.QDialog
  • PySide2.QtWidgets.QWidget
  • PySide2.QtCore.QObject
  • PySide2.QtGui.QPaintDevice
  • Shiboken.Object

Class variables

var staticMetaObject