Esempio n. 1
0
 def exit(self):
     log.info('Closing window')
     if QtWidgets.QMessageBox.question(self, 'Message', 'Are you sure to quit?',
                                       QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                       QtWidgets.QMessageBox.No) ==\
             QtWidgets.QMessageBox.Yes:
         self.close()
Esempio n. 2
0
 def site_delete(self):
     log.info('Deleting site \'' + self.site + '\'')
     name = self.site
     if QtWidgets.QMessageBox().question(
             self, 'Really', 'Are you sure to delete ' + name + '?',
             QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
             QtWidgets.QMessageBox.No) == QtWidgets.QMessageBox.Yes:
         site.delete(name)
Esempio n. 3
0
    def __init__(self):
        # self.setAttribute(QtCore.Qt.WA_TintedBackground)
        self.sites = site.get_sites_dict()

        log.info('Initializing SiteMonitor window')
        super().__init__()
        self.setupUi(self)

        self.setWindowTitle('SiteMonster - SiteMonitor')
        set_wnd_icon(self, 'logo.ico')

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.check_sites_file)
        self.timer.start()

        self.fav_btn_example.hide()
        self.description_.hide()
        self.fav_only_checkbox.hide()
        self.settings_btn.hide()
        self.site_settings.hide()
        self.delete_site.hide()

        log.debug('Building sites list')
        if site.get_sites_dict().keys().__len__() > 0:
            for key in self.sites:
                if True:
                    self.fav_sites = QtWidgets.QPushButton(self.fav_container_)
                    self.fav_sites.setText('')
                    self.fav_sites.setObjectName(key)

                    self.fav_sites.setToolTip(key)
                    self.fav_sites.setToolTipDuration(20 * 100)

                    icon = QtGui.QIcon()
                    icon.addPixmap(QtGui.QPixmap(self.sites[key]['favicon']),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)

                    self.fav_sites.setIcon(icon)
                    self.fav_sites.setIconSize(QtCore.QSize(24, 24))
                    self.fav_sites.setMaximumSize(QtCore.QSize(256, 32))
                    self.fav_sites.setMinimumSize(QtCore.QSize(24, 24))
                    self.fav_sites.clicked.connect(
                        self.make_get_site_info(key))

                    self.fav_container.addWidget(self.fav_sites)
                    if not self.sites[key]['favourite']:
                        self.fav_sites.hide()
            self.add_site_btn.hide()
            self.message_label.setText("Select a site from the list.")

        self.add_site_btn.clicked.connect(self.add_site_onclick)
        self.plus_site.clicked.connect(self.add_site_onclick)
        self.menu_btn.clicked.connect(self.menu_onclick)
        self.fav_only_checkbox.stateChanged.connect(self.filter)
        self.site_settings.clicked.connect(self.site_settings_onclick)
        self.delete_site.clicked.connect(self.site_delete)
        self.actionAbout.triggered.connect(self.about_onclick)
Esempio n. 4
0
def get_sites_dict() -> dict:
    """Read sites and sites' properties to dict from json."""

    logging.info('Getting dict with lists of websites')

    if os.path.exists(files.get_and_create_data_folder() + SITES_LIST_FILE):
        return files.read(SITES_LIST_FILE)
    else:
        return dict()
Esempio n. 5
0
    def __init__(self):
        log.info('Initializing SiteMonster window')
        super().__init__()
        self.setupUi(self)

        self.setWindowTitle('Welcome')
        set_wnd_icon(self, 'logo.ico')

        self.start_btn.clicked.connect(self.start_btn_onclick)
        self.quit_btn.clicked.connect(self.quit)
Esempio n. 6
0
 def quit(self):
     log.info('Quitting the app')
     reply = QtWidgets.QMessageBox.question(
         self, 'Message', 'Are you sure to quit?',
         QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
         QtWidgets.QMessageBox.No)
     if reply == QtWidgets.QMessageBox.Yes:
         self.close()
     else:
         pass
Esempio n. 7
0
    def __init__(self):
        log.info('Initializing SiteAdd window')
        super().__init__()
        self.setupUi(self)

        self.setWindowTitle('SiteMonster - add site')
        set_wnd_icon(self, 'plus.png')

        self.cancel.clicked.connect(self.quit)
        self.continue_btn.clicked.connect(self.continue_f)
Esempio n. 8
0
def update_updater():
    try:
        logging.info('Begging updating.')
        if not updater_updates.is_up_to_date():
            thread = updater_updates.UpdaterUpdater()
            thread.start()
            return thread
        else:
            return None
    except Exception as e:
        logging.error("Can't update updater: " + str(e))
Esempio n. 9
0
def send_notification(message):
    """Send push notification to your PC."""

    logging.info('Sending notification')

    if osinfo.is_win():
        send_windows_notification(message)
    elif osinfo.is_linux():
        send_linux_notification(message)
    elif osinfo.is_mac_os():
        send_mac_os_notification(message)
    else:
        raise OSError("Unknown OS: " + platform.system())
Esempio n. 10
0
def delete(name: str):
    """Remove url from sites list.

    NameError - if than name not exists.

    """

    logging.info('Deleting website ' + name)

    sites = get_sites_dict()

    if name not in sites.keys():
        logging.error('Name not exists')
        raise NameError('Name not exists.')

    del sites[name]
    save_sites_list(sites)
Esempio n. 11
0
def change_settings(name: str, settings: dict):
    """Change url's settings.

    Generate settings dictionary by `build_settings` method.

    NameError - if than name not exists.

    """

    logging.info('Changing ' + name + "'s settings")

    sites = get_sites_dict()

    if name not in sites.keys():
        raise NameError('Name not exists.')

    sites[name]['settings'] = settings
    save_sites_list(sites)
Esempio n. 12
0
def add(name: str, url: str, settings: dict, favourite: bool = False, favicon: str = files.get_media_folder_path() + '/logo.ico'):
    """Add url to sites list.

    Generate settings dictionary by `build_settings` method.

    NameError - if than name already exists.

    """

    logging.info('Adding new website ' + name + '<' + url + '>')

    sites = get_sites_dict()

    if name in sites.keys():
        logging.error('Name already exists')
        raise NameError('Name already exists.')

    sites[name] = {'url': url, 'settings': settings, 'favourite': favourite, 'favicon': favicon}
    save_sites_list(sites)
Esempio n. 13
0
def rename(old_name: str, new_name: str):
    """Rename url in sites list.

    NameError - if new name already exists or old name not exists.

    """

    logging.info('Renaming website ' + old_name + ' to ' + new_name)

    sites = get_sites_dict()

    if old_name not in sites.keys():
        logging.error('old name not exists')
        raise NameError('Old name not exists.')
    if new_name in sites.keys():
        logging.error('New name already exists')
        raise NameError('New name already exists.')

    sites[new_name] = sites.pop(old_name)
    save_sites_list(sites)
Esempio n. 14
0
def play_sound():
    """Plays alarm on user's PC"""
    chunk = 1024

    logging.info('Playing sound')

    f = wave.open(files.get_media_folder_path() + r"/alarm.wav", "rb")
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(f.getsampwidth()),
                    channels=f.getnchannels(),
                    rate=f.getframerate(),
                    output=True)
    data = f.readframes(chunk)

    while data:
        stream.write(data)
        data = f.readframes(chunk)

    stream.stop_stream()
    stream.close()

    p.terminate()
Esempio n. 15
0
    def save_all(self):
        log.info('Saving changed settings')
        proxy = None
        if self.text_edits[3].text() != '' or self.text_edits[4].text() != '':
            proxy = {
                'http': self.text_edits[3].text(),
                'https': self.text_edits[4].text()
            }

        site.change_settings(
            self.site_name,
            site.build_settings(
                self.text_edits[0].text(),
                json.loads(self.text_edits[1].text()),
                self.text_edits[2].toPlainText(), proxy,
                list(int(i) for i in self.text_edits[5].text().split(',')),
                self.text_edits[6].text(),
                site.build_fail_actions(self.text_edits[7].isChecked(),
                                        self.text_edits[8].isChecked())))
        site.set_favourite(self.site_name, self.text_edits[9].isChecked())
        site.set_site_icon(self.site_name, self.icon_path)

        self.close()
Esempio n. 16
0
        exit(1)
    test_for_update()
    thr = update_updater()
    window = SiteMonster()
    window.show()
    if thr is not None:
        thr.join()
    sys.exit(app.exec_())


def add_in_startup():
    if getattr(sys, 'frozen', False):
        path = os.getenv('HOME') + '/.config/autostart/'
        if not os.path.exists(path):
            os.makedirs(path)
        shutil.copyfile('/usr/share/applications/daemon.desktop', path + '/Site Monster Daemon.desktop')


def not_valid_os():
    QtWidgets.QMessageBox.information(QtWidgets.QMessageBox(), "Can't start",
                                                  "This app don't support this os",
                                                  QtWidgets.QMessageBox.Ok)


if __name__ == '__main__':
    if osinfo.is_linux():
        add_in_startup()
    logging.info('Starting app')
    run_daemon_if_it_is_not_running()
    main()
Esempio n. 17
0
def get_list() -> list:
    """Get list of sites' names"""

    logging.info("Getting ist of sites' names")

    return list(get_sites_dict().keys())
Esempio n. 18
0
 def site_settings_onclick(self):
     log.info('Opening SiteSettings window about \'' + self.site + '\'')
     geometry = self.geometry()
     self.settings = SiteSettings({'site_name': self.site})
     self.settings.setGeometry(geometry)
     self.settings.show()
Esempio n. 19
0
 def add_site_onclick(self):
     log.info('Opening SiteAdd window')
     self.site_add_wnd = SiteAdd()
     geometry = self.geometry()
     self.site_add_wnd.show()
     self.site_add_wnd.setGeometry(geometry)
Esempio n. 20
0
 def quit(self):
     self.close()
     log.info('Closing SiteAdd window')
Esempio n. 21
0
def save_sites_list(sites_obj: dict):
    """Save sites list to file."""

    logging.info("Saving websites")

    files.save(sites_obj, SITES_LIST_FILE)
Esempio n. 22
0
 def __init__(self):
     log.info('Initializing AppAbout window')
     super().__init__()
     self.setupUi(self)
Esempio n. 23
0
    def __init__(self, data=None):
        log.info('Initializing SiteSettings window')
        super().__init__()
        if data is None:
            data = {}
        self.setupUi(self)

        set_wnd_icon(self, 'settings.png')

        self.quit.clicked.connect(self.exit)
        self.save.clicked.connect(self.save_all)
        self.file_open.clicked.connect(self.open_icon)

        self.site_name = data['site_name']
        self.setWindowTitle('Settings: ' + self.site_name)
        self.header.setText(self.header.text().replace('[SITENAME]',
                                                       self.site_name))

        website = site.get_sites_dict()[self.site_name]

        log.debug('Getting site settings')

        text = website['settings']['method']
        self.http_method.setText(text)

        text = website['settings']['headers']
        if text is None:
            text = dict()
        self.http_headers.setText(json.dumps(text))

        text = website['settings']['body']
        self.http_body.setPlainText(text)

        text = website['settings']['proxy']
        if text is None:
            text = {'http': '', 'https': ''}
        self.http_proxy.setText(text['http'])
        self.https_proxy.setText(text['https'])

        text = website['settings']['expected_code']
        if text is None:
            text = [200, 201, 202, 203, 204, 205, 206, 207, 208, 226]
        self.http_codes.setText(','.join(str(i) for i in text))

        text = website['settings']['expected_answer']
        if text is None:
            text = ''
        self.expected.setText(text)

        text = website['favourite']
        if text is None:
            text = False
        self.favourite.setChecked(text)

        text = website['favicon']
        self.icon_path = text

        self.notification.setChecked(
            website['settings']['fail_actions']['send_notification'])
        self.sound.setChecked(
            website['settings']['fail_actions']['play_sound'])

        self.text_edits = [
            self.http_method, self.http_headers, self.http_body,
            self.http_proxy, self.https_proxy, self.http_codes, self.expected,
            self.notification, self.sound, self.favourite
        ]