Browse Source

version 1.0

pull/3/head
Rinaldus 8 years ago
parent
commit
5bde21a5c7
  1. 18
      README.md
  2. BIN
      icons/settings.png
  3. 167
      mail-notifier.py
  4. 1613
      res.py
  5. 1
      resources.qrc
  6. 0
      screenshots/screen1.jpg
  7. BIN
      screenshots/screen2.jpg
  8. BIN
      screenshots/screen3.jpg
  9. 345
      ui/settings.ui
  10. 137
      ui_settings.py

18
README.md

@ -2,8 +2,10 @@ @@ -2,8 +2,10 @@
This is Light weight mail notifier written in PyQt5. It checks your mailbox periodically and notify you if you have new mail.
## Screenshot
![Screenshot](https://raw.github.com/rinaldus/mail-notify/master/screenshot.jpg)
## Screenshots
![MailboxEmpty](https://raw.github.com/rinaldus/mail-notify/master/screenshots/screen1.jpg)
![MailboxFull](https://raw.github.com/rinaldus/mail-notify/master/screenshots/screen1.jpg)
![Settings](https://raw.github.com/rinaldus/mail-notify/master/screenshots/screen3.jpg)
## Install
@ -16,6 +18,16 @@ Give execute permission to mail-notifier.py @@ -16,6 +18,16 @@ Give execute permission to mail-notifier.py
```sh
$ chmod +x mail-notifier.py
```
## Todo
## Changelog
### Version 1.0 (release date: 31.10.15)
* Settings window
* All parameters are stored in configuration file *(~/.config/mail-notify/settings.conf)*
* Many improvements
### Version 0.10 (pre release date: 28.10.15)
* Initial version
* All parameters are stored right in script
## Todo
* "About program" window

BIN
icons/settings.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

167
mail-notifier.py

@ -5,14 +5,32 @@ from PyQt5.QtWidgets import (QAction, QApplication, QCheckBox, QComboBox, @@ -5,14 +5,32 @@ from PyQt5.QtWidgets import (QAction, QApplication, QCheckBox, QComboBox,
QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QMenu, QPushButton, QSpinBox, QStyle, QSystemTrayIcon,
QTextEdit, QVBoxLayout)
from PyQt5.QtCore import (QThread, QTimer)
from PyQt5.QtCore import (QThread, QTimer, QFile, QSettings)
import imaplib
imaplib._MAXLINE = 400000
import subprocess
import res
from ui_settings import Ui_Settings
from PyQt5 import QtCore, QtGui, QtWidgets
import os
import socket
import hashlib, uuid
#variables
timers = []
programTitle = "Mail Notifier"
settings = QSettings(os.path.expanduser("~")+"/.config/mail-notify/settings.conf", QSettings.NativeFormat)
def SettingsExist():
if ((settings.contains("CheckInterval") and settings.value("CheckInterval") != "") and
(settings.contains("Notify") and settings.value("Notify") != "") and
(settings.contains("MailServer") and settings.value("MailServer") != "") and
(settings.contains("Port") and settings.value("Port") != "") and
(settings.contains("Login") and settings.value("Login") != "") and
(settings.contains("Password") and settings.value("Password") != "") and
(settings.contains("SSL") and settings.value("SSL") != "")):
return True
else:
return False
class Window(QDialog):
def __init__(self):
@ -25,66 +43,138 @@ class Window(QDialog): @@ -25,66 +43,138 @@ class Window(QDialog):
self.trayIcon.setIcon(QIcon(":icons/mailbox_empty.png"))
self.trayIcon.setToolTip("You have no unread letters")
self.trayIcon.show()
# setup settings
self.ui = Ui_Settings()
self.ui.setupUi(self)
self.setWindowIcon(QIcon(os.path.dirname(os.path.realpath(__file__))+"/icons/mailbox_empty.png"))
self.SettingsRestore()
self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Ok).clicked.connect(self.btnOK_clicked)
self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Cancel).clicked.connect(self.btnCancel_clicked)
self.ui.btnTestConnection.clicked.connect(self.btnTestConnection_clicked)
# Menu actions
def createActions(self):
self.quitAction = QAction(QIcon(':icons/menu_quit.png'),"&Quit", self,
triggered=QApplication.instance().quit)
self.checkNow = QAction(QIcon(':icons/check_now.png'),"&Check now", self,
triggered=self.checkNow)
# self.restoreAction = QAction("&Restore", self,
# triggered=self.showNormal)
triggered=mail_check)
self.restoreAction = QAction(QIcon(":icons/settings.png"),"&Settings", self,
triggered=self.showNormal)
# UI functions
def createTrayIcon(self):
self.trayIconMenu = QMenu(self)
self.trayIconMenu.addAction(self.checkNow)
self.trayIconMenu.addAction(self.restoreAction)
self.trayIconMenu.addAction(self.quitAction)
#self.trayIconMenu.addAction(self.restoreAction)
self.trayIcon = QSystemTrayIcon(self)
self.trayIcon.setContextMenu(self.trayIconMenu)
def SettingsRestore(self):
if SettingsExist():
self.ui.checkFreq.setValue(int(settings.value("CheckInterval")))
self.ui.boolifNotify.setChecked(bool(settings.value("Notify")))
self.ui.txtboxMailServer.setText(settings.value("MailServer"))
self.ui.txtboxPort.setText(settings.value("Port"))
self.ui.txtboxLogin.setText(settings.value("Login"))
self.ui.txtboxPassword.setText(settings.value("Password"))
self.ui.boolifSSL.setChecked(bool(settings.value("SSL")))
def SettingsSave(self):
settings.setValue("CheckInterval",self.ui.checkFreq.value())
settings.setValue("Notify", self.ui.boolifNotify.isChecked())
settings.setValue("MailServer",self.ui.txtboxMailServer.text())
settings.setValue("Port",self.ui.txtboxPort.text())
settings.setValue("Login",self.ui.txtboxLogin.text())
settings.setValue("Password",self.ui.txtboxPassword.text())
settings.setValue("SSL",self.ui.boolifSSL.isChecked())
def mailboxEmpty(self):
self.trayIcon.setToolTip ("You have no unread mail")
self.trayIcon.setIcon(QIcon(":icons/mailbox_empty.png"))
def mailboxFull(self):
self.trayIcon.setToolTip ("You have "+ str(Mail().checkMail())+" unread letters")
self.trayIcon.setIcon(QIcon(":icons/mailbox_full.png"))
notify ("You have "+ str(Mail().checkMail())+" unread letters")
def checkNow (self):
if Mail().checkMail() == 0:
self.mailboxEmpty()
notify("You have no unread mail")
else:
self.mailboxFull()
def btnOK_clicked(self):
self.SettingsSave()
if (settings.value("MailServer") == "" or settings.value("Port") == "" or settings.value("Login") == "" or settings.value("Password") == ""):
QMessageBox.critical(self, "Warning","You should fill all fields in IMAP settings!")
self.show()
mail_check()
self.ui.lblTestOutput.setText("")
def btnCancel_clicked(self):
self.SettingsRestore()
self.ui.lblTestOutput.setText("")
def btnTestConnection_clicked(self):
try:
if self.ui.boolifSSL.isChecked:
self.imap = imaplib.IMAP4_SSL(self.ui.txtboxMailServer.text(), self.ui.txtboxPort.text())
else:
self.imap = imaplib.IMAP4(self.ui.txtboxMailServer.text(), self.ui.txtboxPort.text())
self.imap.login(self.ui.txtboxLogin.text(), self.ui.txtboxPassword.text())
output = "Connection was established successfully"
except:
output = "Unable to establish connection to mailbox"
finally:
self.ui.lblTestOutput.setText(output)
def closeEvent(self, event):
print ("Closing the app")
# Common functions
class Mail():
def __init__(self):
self.user= 'YOUR_MAILBOX_LOGIN'
self.password= 'YOUR_MAILBOX_PASSWORD'
self.M = imaplib.IMAP4_SSL('MAIL_SERVER', 'PORT(i.e 993)')
self.M.login(self.user, self.password)
socket.setdefaulttimeout(5)
self.user = settings.value("Login")
self.password = settings.value("Password")
self.mailserver = settings.value("MailServer")
self.port = settings.value("Port")
def login(self):
try:
if settings.value("SSL"):
self.imap = imaplib.IMAP4_SSL(self.mailserver, self.port)
else:
self.imap = imaplib.IMAP4(self.mailserver, self.port)
self.imap.login(self.user, self.password)
return True
except:
print("Login error")
return False
def checkMail(self):
self.M.select()
self.unRead = self.M.search(None, 'UnSeen')
return len(self.unRead[1][0].split())
try:
self.imap.select()
self.unRead = self.imap.search(None, 'UNSEEN')
return len(self.unRead[1][0].split())
except:
print("Unable to check mail")
return "ERROR"
def mail_check():
if Mail().checkMail() == 0:
window.mailboxEmpty()
if SettingsExist():
m = Mail()
if m.login():
mail_count = m.checkMail()
if mail_count == 0:
window.trayIcon.setToolTip ("You have no unread mail")
window.trayIcon.setIcon(QIcon(":icons/mailbox_empty.png"))
else:
window.trayIcon.setToolTip ("You have "+ str(mail_count)+" unread letters")
window.trayIcon.setIcon(QIcon(":icons/mailbox_full.png"))
notify ("You have "+ str(mail_count) +" unread letters")
else:
window.trayIcon.setToolTip("Unable to establish connection to mailbox. Check your mail settings and make sure that you have not network problems.")
notify("Unable to establish connection to mailbox. Check your mail settings and make sure that you have not network problems.")
else:
window.mailboxFull()
window.trayIcon.setToolTip("Cannot find configuration file. You should give access to your mailbox")
def notify(message):
subprocess.Popen(['notify-send', programTitle, message])
if settings.value("Notify"):
subprocess.Popen(['notify-send', programTitle, message])
return
def hash(password):
salt = uuid.uuid4().hex
return hashlib.sha512(password.encode('utf-8') + salt.encode('utf-8')).hexdigest()
class Thread(QThread):
def __init__(self):
@ -93,7 +183,11 @@ class Thread(QThread): @@ -93,7 +183,11 @@ class Thread(QThread):
def run(self):
timer = QTimer()
timer.timeout.connect(mail_check)
timer.start(1000*60*5)
if SettingsExist():
CheckInterval = 1000*60*int(settings.value("CheckInterval"))
else:
CheckInterval = 1000*60*5
timer.start(CheckInterval)
timers.append(timer)
self.exec_()
@ -107,7 +201,10 @@ if __name__ == '__main__': @@ -107,7 +201,10 @@ if __name__ == '__main__':
sys.exit(1)
QApplication.setQuitOnLastWindowClosed(False)
window = Window()
window.hide()
if (SettingsExist() == True):
window.hide()
else:
window.show()
# UI started. Starting required functions after UI start
mail_check()
thread_instance = Thread()

1613
res.py

File diff suppressed because it is too large Load Diff

1
resources.qrc

@ -4,5 +4,6 @@ @@ -4,5 +4,6 @@
<file>icons/mailbox_full.png</file>
<file>icons/menu_quit.png</file>
<file>icons/check_now.png</file>
<file>icons/settings.png</file>
</qresource>
</RCC>

0
screenshot.jpg → screenshots/screen1.jpg

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

BIN
screenshots/screen2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
screenshots/screen3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

345
ui/settings.ui

@ -0,0 +1,345 @@ @@ -0,0 +1,345 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Settings</class>
<widget class="QDialog" name="Settings">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>585</width>
<height>282</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Mail Notify - Settings</string>
</property>
<property name="windowIcon">
<iconset>
<normaloff>../icons/mailbox_empty.png</normaloff>../icons/mailbox_empty.png</iconset>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>20</x>
<y>240</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QCheckBox" name="boolifNotify">
<property name="geometry">
<rect>
<x>21</x>
<y>42</y>
<width>231</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Use also pop-up notification</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>541</width>
<height>161</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>IMAP settings</string>
</property>
<widget class="QLineEdit" name="txtboxMailServer">
<property name="geometry">
<rect>
<x>90</x>
<y>30</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>mail.example.com</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>310</x>
<y>30</y>
<width>31</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Port</string>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>40</x>
<y>60</y>
<width>41</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Login</string>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>280</x>
<y>60</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Password</string>
</property>
</widget>
<widget class="QLineEdit" name="txtboxPassword">
<property name="geometry">
<rect>
<x>350</x>
<y>60</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
<property name="placeholderText">
<string/>
</property>
</widget>
<widget class="QLineEdit" name="txtboxLogin">
<property name="geometry">
<rect>
<x>90</x>
<y>60</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>name@example.com</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>11</x>
<y>31</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Mail server</string>
</property>
</widget>
<widget class="QLineEdit" name="txtboxPort">
<property name="geometry">
<rect>
<x>350</x>
<y>30</y>
<width>41</width>
<height>22</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>143</string>
</property>
</widget>
<widget class="QCheckBox" name="boolifSSL">
<property name="geometry">
<rect>
<x>10</x>
<y>90</y>
<width>161</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Use SSL connection</string>
</property>
</widget>
<widget class="QPushButton" name="btnTestConnection">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>120</y>
<width>121</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="text">
<string>Test connection</string>
</property>
</widget>
<widget class="QLabel" name="lblTestOutput">
<property name="geometry">
<rect>
<x>150</x>
<y>120</y>
<width>371</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<zorder>txtboxPort</zorder>
<zorder>txtboxMailServer</zorder>
<zorder>label_4</zorder>
<zorder>label_3</zorder>
<zorder>label_5</zorder>
<zorder>label_6</zorder>
<zorder>txtboxPassword</zorder>
<zorder>txtboxLogin</zorder>
<zorder>boolifSSL</zorder>
<zorder>btnTestConnection</zorder>
<zorder>lblTestOutput</zorder>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>181</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Check for unread mail every</string>
</property>
</widget>
<widget class="QSpinBox" name="checkFreq">
<property name="geometry">
<rect>
<x>200</x>
<y>15</y>
<width>52</width>
<height>23</height>
</rect>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>120</number>
</property>
<property name="value">
<number>15</number>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>260</x>
<y>20</y>
<width>61</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>minutes</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Settings</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Settings</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

137
ui_settings.py

@ -0,0 +1,137 @@ @@ -0,0 +1,137 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui/settings.ui'
#
# Created by: PyQt5 UI code generator 5.5
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Settings(object):
def setupUi(self, Settings):
Settings.setObjectName("Settings")
Settings.resize(585, 282)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Settings.sizePolicy().hasHeightForWidth())
Settings.setSizePolicy(sizePolicy)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("../icons/mailbox_empty.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Settings.setWindowIcon(icon)
self.buttonBox = QtWidgets.QDialogButtonBox(Settings)
self.buttonBox.setGeometry(QtCore.QRect(20, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.boolifNotify = QtWidgets.QCheckBox(Settings)
self.boolifNotify.setGeometry(QtCore.QRect(21, 42, 231, 20))
self.boolifNotify.setChecked(True)
self.boolifNotify.setObjectName("boolifNotify")
self.groupBox = QtWidgets.QGroupBox(Settings)
self.groupBox.setGeometry(QtCore.QRect(20, 70, 541, 161))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
self.groupBox.setSizePolicy(sizePolicy)
self.groupBox.setObjectName("groupBox")
self.txtboxMailServer = QtWidgets.QLineEdit(self.groupBox)
self.txtboxMailServer.setGeometry(QtCore.QRect(90, 30, 181, 22))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.txtboxMailServer.sizePolicy().hasHeightForWidth())
self.txtboxMailServer.setSizePolicy(sizePolicy)
self.txtboxMailServer.setText("")
self.txtboxMailServer.setObjectName("txtboxMailServer")
self.label_4 = QtWidgets.QLabel(self.groupBox)
self.label_4.setGeometry(QtCore.QRect(310, 30, 31, 21))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.groupBox)
self.label_5.setGeometry(QtCore.QRect(40, 60, 41, 21))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.groupBox)
self.label_6.setGeometry(QtCore.QRect(280, 60, 61, 21))
self.label_6.setObjectName("label_6")
self.txtboxPassword = QtWidgets.QLineEdit(self.groupBox)
self.txtboxPassword.setGeometry(QtCore.QRect(350, 60, 181, 22))
self.txtboxPassword.setText("")
self.txtboxPassword.setEchoMode(QtWidgets.QLineEdit.Password)
self.txtboxPassword.setPlaceholderText("")
self.txtboxPassword.setObjectName("txtboxPassword")
self.txtboxLogin = QtWidgets.QLineEdit(self.groupBox)
self.txtboxLogin.setGeometry(QtCore.QRect(90, 60, 181, 22))
self.txtboxLogin.setText("")
self.txtboxLogin.setObjectName("txtboxLogin")
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(11, 31, 71, 21))
self.label_3.setObjectName("label_3")
self.txtboxPort = QtWidgets.QLineEdit(self.groupBox)
self.txtboxPort.setGeometry(QtCore.QRect(350, 30, 41, 22))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.txtboxPort.sizePolicy().hasHeightForWidth())
self.txtboxPort.setSizePolicy(sizePolicy)
self.txtboxPort.setText("")
self.txtboxPort.setObjectName("txtboxPort")
self.boolifSSL = QtWidgets.QCheckBox(self.groupBox)
self.boolifSSL.setGeometry(QtCore.QRect(10, 90, 161, 20))
self.boolifSSL.setObjectName("boolifSSL")
self.btnTestConnection = QtWidgets.QPushButton(self.groupBox)
self.btnTestConnection.setEnabled(True)
self.btnTestConnection.setGeometry(QtCore.QRect(10, 120, 121, 22))
self.btnTestConnection.setToolTip("")
self.btnTestConnection.setObjectName("btnTestConnection")
self.lblTestOutput = QtWidgets.QLabel(self.groupBox)
self.lblTestOutput.setGeometry(QtCore.QRect(150, 120, 371, 21))
self.lblTestOutput.setText("")
self.lblTestOutput.setObjectName("lblTestOutput")
self.txtboxPort.raise_()
self.txtboxMailServer.raise_()
self.label_4.raise_()
self.label_3.raise_()
self.label_5.raise_()
self.label_6.raise_()
self.txtboxPassword.raise_()
self.txtboxLogin.raise_()
self.boolifSSL.raise_()
self.btnTestConnection.raise_()
self.lblTestOutput.raise_()
self.label = QtWidgets.QLabel(Settings)
self.label.setGeometry(QtCore.QRect(20, 20, 181, 16))
self.label.setObjectName("label")
self.checkFreq = QtWidgets.QSpinBox(Settings)
self.checkFreq.setGeometry(QtCore.QRect(200, 15, 52, 23))
self.checkFreq.setMinimum(1)
self.checkFreq.setMaximum(120)
self.checkFreq.setProperty("value", 15)
self.checkFreq.setObjectName("checkFreq")
self.label_2 = QtWidgets.QLabel(Settings)
self.label_2.setGeometry(QtCore.QRect(260, 20, 61, 16))
self.label_2.setObjectName("label_2")
self.retranslateUi(Settings)
self.buttonBox.accepted.connect(Settings.accept)
self.buttonBox.rejected.connect(Settings.reject)
QtCore.QMetaObject.connectSlotsByName(Settings)
def retranslateUi(self, Settings):
_translate = QtCore.QCoreApplication.translate
Settings.setWindowTitle(_translate("Settings", "Mail Notify - Settings"))
self.boolifNotify.setText(_translate("Settings", "Use also pop-up notification"))
self.groupBox.setTitle(_translate("Settings", "IMAP settings"))
self.txtboxMailServer.setPlaceholderText(_translate("Settings", "mail.example.com"))
self.label_4.setText(_translate("Settings", "Port"))
self.label_5.setText(_translate("Settings", "Login"))
self.label_6.setText(_translate("Settings", "Password"))
self.txtboxLogin.setPlaceholderText(_translate("Settings", "name@example.com"))
self.label_3.setText(_translate("Settings", "Mail server"))
self.txtboxPort.setPlaceholderText(_translate("Settings", "143"))
self.boolifSSL.setText(_translate("Settings", "Use SSL connection"))
self.btnTestConnection.setText(_translate("Settings", "Test connection"))
self.label.setText(_translate("Settings", "Check for unread mail every"))
self.label_2.setText(_translate("Settings", "minutes"))
Loading…
Cancel
Save