def _setUpIdleTracker(self, enable=True): if self._idleTimer: self._idleTimer.stop() self._idleTimer = None if enable and IdleTimer.supported(): self._idleTimer = IdleTimer(self, int(self.getSetting("program", "away_time")) * 60) self.connect(self._idleTimer, QtCore.SIGNAL("idle()"), self.onIdle) self.connect(self._idleTimer, QtCore.SIGNAL("active()"), self.onActive) self._idleTimer.start()
def _setUpIdleTracker(self, enable=True): if self._idleTimer: self._idleTimer.stop() self._idleTimer = None if enable and IdleTimer.supported(): self._idleTimer = IdleTimer( self, int(self.getSetting("program", "away_time")) * 60) self.connect(self._idleTimer, QtCore.SIGNAL("idle()"), self.onIdle) self.connect(self._idleTimer, QtCore.SIGNAL("active()"), self.onActive) self._idleTimer.start()
def _setupUI(self): # Connection group self._subdomainField = QtGui.QLineEdit(self) self._usernameField = QtGui.QLineEdit(self) self._passwordField = QtGui.QLineEdit(self) self._passwordField.setEchoMode(QtGui.QLineEdit.Password) self._sslField = QtGui.QCheckBox(self._mainFrame._("Use &secure connection (SSL)"), self) self.connect(self._subdomainField, QtCore.SIGNAL('textChanged(QString)'), self.validate) self.connect(self._usernameField, QtCore.SIGNAL('textChanged(QString)'), self.validate) self.connect(self._passwordField, QtCore.SIGNAL('textChanged(QString)'), self.validate) connectionGrid = QtGui.QGridLayout() connectionGrid.addWidget(QtGui.QLabel(self._mainFrame._("Subdomain:"), self), 1, 0) connectionGrid.addWidget(self._subdomainField, 1, 1) connectionGrid.addWidget(QtGui.QLabel(self._mainFrame._("Username:"******"Password:"******"Campfire connection")) connectionGroupBox.setLayout(connectionGrid) # Program group spellLanguages = { "": self._mainFrame._("No spell check") } if SpellTextEditor.canSpell(): for language in SpellTextEditor.languages(): spellLanguages[language] = language; self._connectField = QtGui.QCheckBox(self._mainFrame._("Automatically &connect when program starts"), self) self._joinField = QtGui.QCheckBox(self._mainFrame._("&Join last opened channels once connected"), self) self._minimizeField = QtGui.QCheckBox(self._mainFrame._("&Minimize to system tray if window is minimized, or closed"), self) self._spellLanguageField = QtGui.QComboBox(self) spellLanguageBox = QtGui.QHBoxLayout() spellLanguageBox.addWidget(QtGui.QLabel(self._mainFrame._("Spell checking:"), self)) spellLanguageBox.addWidget(self._spellLanguageField) spellLanguageBox.addStretch(1) programGrid = QtGui.QGridLayout() programGrid.addWidget(self._connectField, 1, 0) programGrid.addWidget(self._joinField, 2, 0) programGrid.addWidget(self._minimizeField, 3, 0) programGrid.addLayout(spellLanguageBox, 4, 0) programGroupBox = QtGui.QGroupBox(self._mainFrame._("Program settings")) programGroupBox.setLayout(programGrid) if not SpellTextEditor.canSpell(): self._spellLanguageField.setEnabled(False) # Away group awayTimes = { 5: self._mainFrame._("5 minutes"), 10: self._mainFrame._("10 minutes"), 15: self._mainFrame._("15 minutes"), 30: self._mainFrame._("30 minutes"), 45: self._mainFrame._("45 minutes"), 60: self._mainFrame._("1 hour"), 90: self._mainFrame._("1 and a half hours"), 120: self._mainFrame._("2 hours") } awayBetweenTimes = { 2: self._mainFrame._("2 minutes"), 5: self._mainFrame._("5 minutes"), 10: self._mainFrame._("10 minutes"), 15: self._mainFrame._("15 minutes"), 30: self._mainFrame._("30 minutes"), 45: self._mainFrame._("45 minutes"), 60: self._mainFrame._("1 hour") } self._awayField = QtGui.QCheckBox(self._mainFrame._("Set me as &away after idle time"), self) self._awayTimeField = QtGui.QComboBox(self) self._awayMessageField = QtGui.QLineEdit(self) self._awayTimeBetweenMessagesField = QtGui.QComboBox(self) if IdleTimer.supported(): self.connect(self._awayField, QtCore.SIGNAL('stateChanged(int)'), self.validate) self.connect(self._awayMessageField, QtCore.SIGNAL('textChanged(QString)'), self.validate) else: self._awayField.setEnabled(False) awayTimeBox = QtGui.QHBoxLayout() awayTimeBox.addWidget(QtGui.QLabel(self._mainFrame._("Idle Time:"), self)) awayTimeBox.addWidget(self._awayTimeField) awayTimeBox.addWidget(QtGui.QLabel(self._mainFrame._("Wait"), self)) awayTimeBox.addWidget(self._awayTimeBetweenMessagesField) awayTimeBox.addWidget(QtGui.QLabel(self._mainFrame._("before sending consecutive messages"), self)) awayTimeBox.addStretch(1) awayMessageBox = QtGui.QHBoxLayout() awayMessageBox.addWidget(QtGui.QLabel(self._mainFrame._("Message:"), self)) awayMessageBox.addWidget(self._awayMessageField) awayBox = QtGui.QVBoxLayout() awayBox.addWidget(self._awayField) awayBox.addLayout(awayTimeBox) awayBox.addLayout(awayMessageBox) awayGroupBox = QtGui.QGroupBox(self._mainFrame._("Away mode")) awayGroupBox.setLayout(awayBox) # Theme group self._themeField = QtGui.QComboBox(self) self._themeSizeField = QtGui.QComboBox(self) self._themePreview = QtWebKit.QWebView(self) self._themePreview.setMaximumHeight(300) themeSelectorBox = QtGui.QHBoxLayout() themeSelectorBox.addWidget(QtGui.QLabel(self._mainFrame._("Theme:"))) themeSelectorBox.addWidget(self._themeField) themeSelectorBox.addWidget(QtGui.QLabel(self._mainFrame._("Text size:"))) themeSelectorBox.addWidget(self._themeSizeField) themeSelectorBox.addStretch(1) themeSelectorBox.setContentsMargins(0, 0, 0, 0) themeSelectorBox.setSpacing(5) themeSelectorFrame = QtGui.QWidget() themeSelectorFrame.setLayout(themeSelectorBox) themeGrid = QtGui.QGridLayout() themeGrid.addWidget(themeSelectorFrame, 1, 0) themeGrid.addWidget(self._themePreview, 2, 0) themeGroupBox = QtGui.QGroupBox(self._mainFrame._("Theme")) themeGroupBox.setLayout(themeGrid) # Events group self._showJoinMessageField = QtGui.QCheckBox(self._mainFrame._("Show &join messages"), self) self._showPartMessageField = QtGui.QCheckBox(self._mainFrame._("Show p&art messages"), self) self._showMessageTimestampsField = QtGui.QCheckBox(self._mainFrame._("Show message ×tamps"), self) self._showAvatarsField = QtGui.QCheckBox(self._mainFrame._("Show user a&vatars (only supported by certain themes)"), self) eventsGrid = QtGui.QGridLayout() eventsGrid.addWidget(self._showJoinMessageField, 1, 0) eventsGrid.addWidget(self._showPartMessageField, 2, 0) eventsGrid.addWidget(self._showMessageTimestampsField, 3, 0) eventsGrid.addWidget(self._showAvatarsField, 4, 0) eventsGroupBox = QtGui.QGroupBox(self._mainFrame._("Display events")) eventsGroupBox.setLayout(eventsGrid) # Options tab optionsBox = QtGui.QVBoxLayout() optionsBox.addWidget(connectionGroupBox) optionsBox.addWidget(programGroupBox) optionsBox.addWidget(awayGroupBox) optionsBox.addStretch(1) optionsFrame = QtGui.QWidget() optionsFrame.setLayout(optionsBox) # Display tab displayBox = QtGui.QVBoxLayout() displayBox.addWidget(themeGroupBox) displayBox.addWidget(eventsGroupBox) displayBox.addStretch(1) displayFrame = QtGui.QWidget() displayFrame.setLayout(displayBox) # Tabs tabs = QtGui.QTabWidget() tabs.setTabsClosable(False) tabs.addTab(optionsFrame, self._mainFrame._("&Program options")) tabs.addTab(displayFrame, self._mainFrame._("&Display options")) # Buttons self._okButton = QtGui.QPushButton(self._mainFrame._("&OK"), self) self._cancelButton = QtGui.QPushButton(self._mainFrame._("&Cancel"), self) self.connect(self._okButton, QtCore.SIGNAL('clicked()'), self.ok) self.connect(self._cancelButton, QtCore.SIGNAL('clicked()'), self.cancel) # Main layout hbox = QtGui.QHBoxLayout() hbox.addStretch(1) hbox.addWidget(self._okButton) hbox.addWidget(self._cancelButton) vbox = QtGui.QVBoxLayout() vbox.addWidget(tabs) vbox.addLayout(hbox) self.setLayout(vbox) # Load settings connectionSettings = self._mainFrame.getSettings("connection") programSettings = self._mainFrame.getSettings("program") displaySettings = self._mainFrame.getSettings("display") self._subdomainField.setText(connectionSettings["subdomain"]) self._usernameField.setText(connectionSettings["user"]) if connectionSettings["password"]: self._passwordField.setText(connectionSettings["password"]) self._sslField.setChecked(connectionSettings["ssl"]) self._connectField.setChecked(connectionSettings["connect"]) self._joinField.setChecked(connectionSettings["join"]) self._minimizeField.setChecked(programSettings["minimize"]) self._awayField.setChecked(programSettings["away"]) self._awayMessageField.setText(programSettings["away_message"]) self._showJoinMessageField.setChecked(displaySettings["show_join_message"]) self._showPartMessageField.setChecked(displaySettings["show_part_message"]) self._showMessageTimestampsField.setChecked(displaySettings["show_message_timestamps"]) self._showAvatarsField.setChecked(displaySettings["show_avatars"]) self._setupThemesUI(displaySettings) currentIndex = None index = 0 spellLanguageKeys = spellLanguages.keys() spellLanguageKeys.sort() for value in spellLanguageKeys: self._spellLanguageField.addItem(spellLanguages[value], value) if value == programSettings["spell_language"]: currentIndex = index index += 1 if currentIndex is not None: self._spellLanguageField.setCurrentIndex(currentIndex) currentIndex = None index = 0 awayTimeKeys = awayTimes.keys() awayTimeKeys.sort() for value in awayTimeKeys: self._awayTimeField.addItem(awayTimes[value], value) if value == int(programSettings["away_time"]): currentIndex = index index += 1 if currentIndex is not None: self._awayTimeField.setCurrentIndex(currentIndex) currentIndex = None index = 0 awayBetweenTimeKeys = awayBetweenTimes.keys() awayBetweenTimeKeys.sort() for value in awayBetweenTimeKeys: self._awayTimeBetweenMessagesField.addItem(awayBetweenTimes[value], value) if value == int(programSettings["away_time_between_messages"]): currentIndex = index index += 1 if currentIndex is not None: self._awayTimeBetweenMessagesField.setCurrentIndex(currentIndex) self.validate()
def _setupUI(self): # Connection group self._subdomainField = QtGui.QLineEdit(self) self._usernameField = QtGui.QLineEdit(self) self._passwordField = QtGui.QLineEdit(self) self._passwordField.setEchoMode(QtGui.QLineEdit.Password) self._sslField = QtGui.QCheckBox( self._mainFrame._("Use &secure connection (SSL)"), self) self.connect(self._subdomainField, QtCore.SIGNAL('textChanged(QString)'), self.validate) self.connect(self._usernameField, QtCore.SIGNAL('textChanged(QString)'), self.validate) self.connect(self._passwordField, QtCore.SIGNAL('textChanged(QString)'), self.validate) connectionGrid = QtGui.QGridLayout() connectionGrid.addWidget( QtGui.QLabel(self._mainFrame._("Subdomain:"), self), 1, 0) connectionGrid.addWidget(self._subdomainField, 1, 1) connectionGrid.addWidget( QtGui.QLabel(self._mainFrame._("Username:"******"Password:"******"Campfire connection")) connectionGroupBox.setLayout(connectionGrid) # Program group spellLanguages = {"": self._mainFrame._("No spell check")} if SpellTextEditor.canSpell(): for language in SpellTextEditor.languages(): spellLanguages[language] = language self._connectField = QtGui.QCheckBox( self._mainFrame._("Automatically &connect when program starts"), self) self._joinField = QtGui.QCheckBox( self._mainFrame._("&Join last opened channels once connected"), self) self._minimizeField = QtGui.QCheckBox( self._mainFrame._( "&Minimize to system tray if window is minimized, or closed"), self) self._spellLanguageField = QtGui.QComboBox(self) spellLanguageBox = QtGui.QHBoxLayout() spellLanguageBox.addWidget( QtGui.QLabel(self._mainFrame._("Spell checking:"), self)) spellLanguageBox.addWidget(self._spellLanguageField) spellLanguageBox.addStretch(1) programGrid = QtGui.QGridLayout() programGrid.addWidget(self._connectField, 1, 0) programGrid.addWidget(self._joinField, 2, 0) programGrid.addWidget(self._minimizeField, 3, 0) programGrid.addLayout(spellLanguageBox, 4, 0) programGroupBox = QtGui.QGroupBox( self._mainFrame._("Program settings")) programGroupBox.setLayout(programGrid) if not SpellTextEditor.canSpell(): self._spellLanguageField.setEnabled(False) # Away group awayTimes = { 5: self._mainFrame._("5 minutes"), 10: self._mainFrame._("10 minutes"), 15: self._mainFrame._("15 minutes"), 30: self._mainFrame._("30 minutes"), 45: self._mainFrame._("45 minutes"), 60: self._mainFrame._("1 hour"), 90: self._mainFrame._("1 and a half hours"), 120: self._mainFrame._("2 hours") } awayBetweenTimes = { 2: self._mainFrame._("2 minutes"), 5: self._mainFrame._("5 minutes"), 10: self._mainFrame._("10 minutes"), 15: self._mainFrame._("15 minutes"), 30: self._mainFrame._("30 minutes"), 45: self._mainFrame._("45 minutes"), 60: self._mainFrame._("1 hour") } self._awayField = QtGui.QCheckBox( self._mainFrame._("Set me as &away after idle time"), self) self._awayTimeField = QtGui.QComboBox(self) self._awayMessageField = QtGui.QLineEdit(self) self._awayTimeBetweenMessagesField = QtGui.QComboBox(self) if IdleTimer.supported(): self.connect(self._awayField, QtCore.SIGNAL('stateChanged(int)'), self.validate) self.connect(self._awayMessageField, QtCore.SIGNAL('textChanged(QString)'), self.validate) else: self._awayField.setEnabled(False) awayTimeBox = QtGui.QHBoxLayout() awayTimeBox.addWidget( QtGui.QLabel(self._mainFrame._("Idle Time:"), self)) awayTimeBox.addWidget(self._awayTimeField) awayTimeBox.addWidget(QtGui.QLabel(self._mainFrame._("Wait"), self)) awayTimeBox.addWidget(self._awayTimeBetweenMessagesField) awayTimeBox.addWidget( QtGui.QLabel( self._mainFrame._("before sending consecutive messages"), self)) awayTimeBox.addStretch(1) awayMessageBox = QtGui.QHBoxLayout() awayMessageBox.addWidget( QtGui.QLabel(self._mainFrame._("Message:"), self)) awayMessageBox.addWidget(self._awayMessageField) awayBox = QtGui.QVBoxLayout() awayBox.addWidget(self._awayField) awayBox.addLayout(awayTimeBox) awayBox.addLayout(awayMessageBox) awayGroupBox = QtGui.QGroupBox(self._mainFrame._("Away mode")) awayGroupBox.setLayout(awayBox) # Theme group self._themeField = QtGui.QComboBox(self) self._themeSizeField = QtGui.QComboBox(self) self._themePreview = QtWebKit.QWebView(self) self._themePreview.setMaximumHeight(300) themeSelectorBox = QtGui.QHBoxLayout() themeSelectorBox.addWidget(QtGui.QLabel(self._mainFrame._("Theme:"))) themeSelectorBox.addWidget(self._themeField) themeSelectorBox.addWidget( QtGui.QLabel(self._mainFrame._("Text size:"))) themeSelectorBox.addWidget(self._themeSizeField) themeSelectorBox.addStretch(1) themeSelectorBox.setContentsMargins(0, 0, 0, 0) themeSelectorBox.setSpacing(5) themeSelectorFrame = QtGui.QWidget() themeSelectorFrame.setLayout(themeSelectorBox) themeGrid = QtGui.QGridLayout() themeGrid.addWidget(themeSelectorFrame, 1, 0) themeGrid.addWidget(self._themePreview, 2, 0) themeGroupBox = QtGui.QGroupBox(self._mainFrame._("Theme")) themeGroupBox.setLayout(themeGrid) # Events group self._showJoinMessageField = QtGui.QCheckBox( self._mainFrame._("Show &join messages"), self) self._showPartMessageField = QtGui.QCheckBox( self._mainFrame._("Show p&art messages"), self) self._showMessageTimestampsField = QtGui.QCheckBox( self._mainFrame._("Show message ×tamps"), self) eventsGrid = QtGui.QGridLayout() eventsGrid.addWidget(self._showJoinMessageField, 1, 0) eventsGrid.addWidget(self._showPartMessageField, 2, 0) eventsGrid.addWidget(self._showMessageTimestampsField, 3, 0) eventsGroupBox = QtGui.QGroupBox(self._mainFrame._("Display events")) eventsGroupBox.setLayout(eventsGrid) # Options tab optionsBox = QtGui.QVBoxLayout() optionsBox.addWidget(connectionGroupBox) optionsBox.addWidget(programGroupBox) optionsBox.addWidget(awayGroupBox) optionsBox.addStretch(1) optionsFrame = QtGui.QWidget() optionsFrame.setLayout(optionsBox) # Display tab displayBox = QtGui.QVBoxLayout() displayBox.addWidget(themeGroupBox) displayBox.addWidget(eventsGroupBox) displayBox.addStretch(1) displayFrame = QtGui.QWidget() displayFrame.setLayout(displayBox) # Tabs tabs = QtGui.QTabWidget() tabs.setTabsClosable(False) tabs.addTab(optionsFrame, self._mainFrame._("&Program options")) tabs.addTab(displayFrame, self._mainFrame._("&Display options")) # Buttons self._okButton = QtGui.QPushButton(self._mainFrame._("&OK"), self) self._cancelButton = QtGui.QPushButton(self._mainFrame._("&Cancel"), self) self.connect(self._okButton, QtCore.SIGNAL('clicked()'), self.ok) self.connect(self._cancelButton, QtCore.SIGNAL('clicked()'), self.cancel) # Main layout hbox = QtGui.QHBoxLayout() hbox.addStretch(1) hbox.addWidget(self._okButton) hbox.addWidget(self._cancelButton) vbox = QtGui.QVBoxLayout() vbox.addWidget(tabs) vbox.addLayout(hbox) self.setLayout(vbox) # Load settings connectionSettings = self._mainFrame.getSettings("connection") programSettings = self._mainFrame.getSettings("program") displaySettings = self._mainFrame.getSettings("display") self._subdomainField.setText(connectionSettings["subdomain"]) self._usernameField.setText(connectionSettings["user"]) if connectionSettings["password"]: self._passwordField.setText(connectionSettings["password"]) self._sslField.setChecked(connectionSettings["ssl"]) self._connectField.setChecked(connectionSettings["connect"]) self._joinField.setChecked(connectionSettings["join"]) self._minimizeField.setChecked(programSettings["minimize"]) self._awayField.setChecked(programSettings["away"]) self._awayMessageField.setText(programSettings["away_message"]) self._showJoinMessageField.setChecked( displaySettings["show_join_message"]) self._showPartMessageField.setChecked( displaySettings["show_part_message"]) self._showMessageTimestampsField.setChecked( displaySettings["show_message_timestamps"]) self._setupThemesUI(displaySettings) currentIndex = None index = 0 spellLanguageKeys = spellLanguages.keys() spellLanguageKeys.sort() for value in spellLanguageKeys: self._spellLanguageField.addItem(spellLanguages[value], value) if value == programSettings["spell_language"]: currentIndex = index index += 1 if currentIndex is not None: self._spellLanguageField.setCurrentIndex(currentIndex) currentIndex = None index = 0 awayTimeKeys = awayTimes.keys() awayTimeKeys.sort() for value in awayTimeKeys: self._awayTimeField.addItem(awayTimes[value], value) if value == int(programSettings["away_time"]): currentIndex = index index += 1 if currentIndex is not None: self._awayTimeField.setCurrentIndex(currentIndex) currentIndex = None index = 0 awayBetweenTimeKeys = awayBetweenTimes.keys() awayBetweenTimeKeys.sort() for value in awayBetweenTimeKeys: self._awayTimeBetweenMessagesField.addItem(awayBetweenTimes[value], value) if value == int(programSettings["away_time_between_messages"]): currentIndex = index index += 1 if currentIndex is not None: self._awayTimeBetweenMessagesField.setCurrentIndex(currentIndex) self.validate()