1# -*- coding: utf-8 -*-
2
3# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4#
5
6"""
7Module implementing the IRC configuration page.
8"""
9
10from .ConfigurationPageBase import ConfigurationPageBase
11from .Ui_IrcPage import Ui_IrcPage
12
13import Preferences
14
15
16class IrcPage(ConfigurationPageBase, Ui_IrcPage):
17    """
18    Class implementing the IRC configuration page.
19    """
20    TimeFormats = ["hh:mm", "hh:mm:ss", "h:mm ap", "h:mm:ss ap"]
21    DateFormats = ["yyyy-MM-dd", "dd.MM.yyyy", "MM/dd/yyyy",
22                   "yyyy MMM. dd", "dd MMM. yyyy", "MMM. dd, yyyy"]
23
24    def __init__(self):
25        """
26        Constructor
27        """
28        super().__init__()
29        self.setupUi(self)
30        self.setObjectName("IrcPage")
31
32        self.timeFormatCombo.addItems(IrcPage.TimeFormats)
33        self.dateFormatCombo.addItems(IrcPage.DateFormats)
34
35        # set initial values
36        # timestamps
37        self.timestampGroup.setChecked(Preferences.getIrc("ShowTimestamps"))
38        self.showDateCheckBox.setChecked(
39            Preferences.getIrc("TimestampIncludeDate"))
40        self.timeFormatCombo.setCurrentIndex(
41            self.timeFormatCombo.findText(Preferences.getIrc("TimeFormat")))
42        self.dateFormatCombo.setCurrentIndex(
43            self.dateFormatCombo.findText(Preferences.getIrc("DateFormat")))
44
45        # colours
46        self.initColour("NetworkMessageColour", self.networkButton,
47                        Preferences.getIrc, byName=True)
48        self.initColour("ServerMessageColour", self.serverButton,
49                        Preferences.getIrc, byName=True)
50        self.initColour("ErrorMessageColour", self.errorButton,
51                        Preferences.getIrc, byName=True)
52        self.initColour("TimestampColour", self.timestampButton,
53                        Preferences.getIrc, byName=True)
54        self.initColour("HyperlinkColour", self.hyperlinkButton,
55                        Preferences.getIrc, byName=True)
56        self.initColour("ChannelMessageColour", self.channelButton,
57                        Preferences.getIrc, byName=True)
58        self.initColour("OwnNickColour", self.ownNickButton,
59                        Preferences.getIrc, byName=True)
60        self.initColour("NickColour", self.nickButton,
61                        Preferences.getIrc, byName=True)
62        self.initColour("JoinChannelColour", self.joinButton,
63                        Preferences.getIrc, byName=True)
64        self.initColour("LeaveChannelColour", self.leaveButton,
65                        Preferences.getIrc, byName=True)
66        self.initColour("ChannelInfoColour", self.infoButton,
67                        Preferences.getIrc, byName=True)
68
69        # notifications
70        self.notificationsGroup.setChecked(
71            Preferences.getIrc("ShowNotifications"))
72        self.joinLeaveCheckBox.setChecked(Preferences.getIrc("NotifyJoinPart"))
73        self.messageCheckBox.setChecked(Preferences.getIrc("NotifyMessage"))
74        self.ownNickCheckBox.setChecked(Preferences.getIrc("NotifyNick"))
75
76        # IRC text colors
77        self.initColour("IrcColor0", self.ircColor0Button,
78                        Preferences.getIrc, byName=True)
79        self.initColour("IrcColor1", self.ircColor1Button,
80                        Preferences.getIrc, byName=True)
81        self.initColour("IrcColor2", self.ircColor2Button,
82                        Preferences.getIrc, byName=True)
83        self.initColour("IrcColor3", self.ircColor3Button,
84                        Preferences.getIrc, byName=True)
85        self.initColour("IrcColor4", self.ircColor4Button,
86                        Preferences.getIrc, byName=True)
87        self.initColour("IrcColor5", self.ircColor5Button,
88                        Preferences.getIrc, byName=True)
89        self.initColour("IrcColor6", self.ircColor6Button,
90                        Preferences.getIrc, byName=True)
91        self.initColour("IrcColor7", self.ircColor7Button,
92                        Preferences.getIrc, byName=True)
93        self.initColour("IrcColor8", self.ircColor8Button,
94                        Preferences.getIrc, byName=True)
95        self.initColour("IrcColor9", self.ircColor9Button,
96                        Preferences.getIrc, byName=True)
97        self.initColour("IrcColor10", self.ircColor10Button,
98                        Preferences.getIrc, byName=True)
99        self.initColour("IrcColor11", self.ircColor11Button,
100                        Preferences.getIrc, byName=True)
101        self.initColour("IrcColor12", self.ircColor12Button,
102                        Preferences.getIrc, byName=True)
103        self.initColour("IrcColor13", self.ircColor13Button,
104                        Preferences.getIrc, byName=True)
105        self.initColour("IrcColor14", self.ircColor14Button,
106                        Preferences.getIrc, byName=True)
107        self.initColour("IrcColor15", self.ircColor15Button,
108                        Preferences.getIrc, byName=True)
109
110        # Automatic User Information Lookup
111        self.whoGroup.setChecked(Preferences.getIrc("AutoUserInfoLookup"))
112        self.whoUsersSpinBox.setValue(Preferences.getIrc("AutoUserInfoMax"))
113        self.whoIntervalSpinBox.setValue(
114            Preferences.getIrc("AutoUserInfoInterval"))
115
116        # Markers
117        self.markWhenHiddenCheckBox.setChecked(
118            Preferences.getIrc("MarkPositionWhenHidden"))
119        self.initColour("MarkerLineForegroundColour",
120                        self.markerForegroundButton,
121                        Preferences.getIrc, byName=True)
122        self.initColour("MarkerLineBackgroundColour",
123                        self.markerBackgroundButton,
124                        Preferences.getIrc, byName=True)
125
126        # Shutdown
127        self.confirmShutdownCheckBox.setChecked(
128            Preferences.getIrc("AskOnShutdown"))
129
130    def save(self):
131        """
132        Public slot to save the IRC configuration.
133        """
134        # timestamps
135        Preferences.setIrc("ShowTimestamps", self.timestampGroup.isChecked())
136        Preferences.setIrc(
137            "TimestampIncludeDate", self.showDateCheckBox.isChecked())
138        Preferences.setIrc("TimeFormat", self.timeFormatCombo.currentText())
139        Preferences.setIrc("DateFormat", self.dateFormatCombo.currentText())
140
141        # notifications
142        Preferences.setIrc(
143            "ShowNotifications", self.notificationsGroup.isChecked())
144        Preferences.setIrc(
145            "NotifyJoinPart", self.joinLeaveCheckBox.isChecked())
146        Preferences.setIrc("NotifyMessage", self.messageCheckBox.isChecked())
147        Preferences.setIrc("NotifyNick", self.ownNickCheckBox.isChecked())
148
149        # Automatic User Information Lookup
150        Preferences.setIrc("AutoUserInfoLookup", self.whoGroup.isChecked())
151        Preferences.setIrc("AutoUserInfoMax", self.whoUsersSpinBox.value())
152        Preferences.setIrc(
153            "AutoUserInfoInterval", self.whoIntervalSpinBox.value())
154
155        # Markers
156        Preferences.setIrc(
157            "MarkPositionWhenHidden",
158            self.markWhenHiddenCheckBox.isChecked())
159
160        # Shutdown
161        Preferences.setIrc(
162            "AskOnShutdown", self.confirmShutdownCheckBox.isChecked())
163
164        # colours
165        self.saveColours(Preferences.setIrc)
166
167
168def create(dlg):
169    """
170    Module function to create the configuration page.
171
172    @param dlg reference to the configuration dialog
173    @return reference to the instantiated page (ConfigurationPageBase)
174    """
175    page = IrcPage()
176    return page
177