Esempio n. 1
0
class Personenfenster(QWidget):
    def __init__(self):
        super().__init__()
        self.init()
        self.suche=False
    
    def string2list(self,tupel):
        retlist=[]
        for index in range(len(tupel)):
            string = tupel[index][0]
            retlist.append(string)
        return retlist

    def init(self):
        #Daten aus der Datenbank
        c.execute("SELECT nachname FROM personen")
        nachnamenlistealsstring=c.fetchall()
        c.execute("SELECT vorname FROM personen")
        vornamenlistealsstring=c.fetchall()
        c.execute("SELECT geburtsdatum FROM personen")
        geburtsdatenlistealsstring=c.fetchall()
        c.execute("SELECT person_id FROM personen")
        idlistealsstring=c.fetchall()
        
        
        nachnamenliste = self.string2list(nachnamenlistealsstring)
        vornamenliste = self.string2list(vornamenlistealsstring)
        geburtsdatenliste = self.string2list(geburtsdatenlistealsstring)
        idliste = self.string2list(idlistealsstring)
        
        self.scrollmatrix = []
        for index,item in enumerate(vornamenliste):
            self.scrollmatrix.append([nachnamenliste[index],item,
                                      geburtsdatenliste[index],idliste[index]])
        
        #Suchenfeld
        self.Input = QLineEdit(self)
        self.Input.setPlaceholderText("Suchen...")
        self.Input.returnPressed.connect(self.Inputtext)
        
        #+-Button
        self.AddButton = QPushButton("+")
        self.AddButton.clicked.connect(self.addPerson)
        
        self.clearButton = QPushButton("reset")
        self.clearButton.clicked.connect(self.clear)
   
        #HBox mit dem Suchen Feld ganz links und dem +-Button ganz rechts
        self.suchen = QHBoxLayout()
        self.suchen.addWidget(self.Input)
        self.suchen.addStretch(1)
        #self.suchen.addWidget(self.clearButton)
        self.suchen.addWidget(self.AddButton)
        
        #HBox mit den Überschriften für die einzelnen Zeilen:
        self.row0 = QGridLayout()
        self.row0.addWidget(QLabel("Nachname"),0,0,1,2)
        self.row0.addWidget(QLabel("Vorname"),0,2,1,2)
        self.row0.addWidget(QLabel("Geburtsdatum"),0,4,1,2)
        self.row0.addWidget(QLabel("Beten/Bearbeiten"),0,6,1,2)
        
        #Hier kommt die Personenanzeige 
        self.scroll = QScrollArea()
        self.personenanzeige = QWidget()
        self.scroll.setWidgetResizable(True)
        
        #Hier kommen die Personen
        
        self.personenanzeigenLayout = QVBoxLayout(self.personenanzeige)
        for person in self.scrollmatrix:
            self.personenanzeigenLayout.addLayout(Row(person))
        self.personenanzeigenLayout.addStretch(1)
        self.personenanzeige.setLayout(self.personenanzeigenLayout)
        self.scroll.setWidget(self.personenanzeige)
        
        #setzt alles in eine große VBox
        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.suchen)
        self.vbox.addLayout(self.row0)
        self.vbox.addWidget(self.scroll)
        self.setLayout(self.vbox)
    
    def Inputtext(self):
        text1 = self.Input.text()
        if text1!=None and text1!="":
            text1=str(text1)
            c.execute("SELECT nachname FROM personen")
            nachnamenlistealsstring=c.fetchall()
            c.execute("SELECT vorname FROM personen")
            vornamenlistealsstring=c.fetchall()
            c.execute("SELECT geburtsdatum FROM personen")
            geburtsdatenlistealsstring=c.fetchall()
            c.execute("SELECT person_id FROM personen")
            idlistealsstring=c.fetchall()
    
            nachnamenliste = self.string2list(nachnamenlistealsstring)
            vornamenliste = self.string2list(vornamenlistealsstring)
            geburtsdatenliste = self.string2list(geburtsdatenlistealsstring)
            idliste = self.string2list(idlistealsstring)
            
            searchednachname=[]
            for nachname in nachnamenliste:
                if nachname:
                    if text1 in nachname:
                        searchednachname.append(nachname)
            
            searchedvorname=[]
            for vorname in vornamenliste:
                if vorname:
                    if text1 in vorname:
                        searchedvorname.append(vorname)
            idliste=[]
            searchednachname=list(set(searchednachname))
            searchedvorname=list(set(searchedvorname))
            
            for i in searchednachname:
                c.execute("""SELECT person_id FROM personen WHERE nachname="{}" """.format(i))
                a=c.fetchall()
                for j in a:
                    idliste.append(j[0])
        
            for i in searchedvorname:
                c.execute("""SELECT person_id FROM personen WHERE vorname="{}" """.format(i))
                a=c.fetchall()
                for j in a:
                    idliste.append(j[0])
            idliste=list(set(idliste))
            if len(idliste)>0:
                nachnamenliste=[]
                vornamenliste=[]
                geburtsdatenliste=[]
                for i in idliste:
                    c.execute("""SELECT nachname FROM personen WHERE person_id={}""".format(i))
                    nachnamenliste.append(c.fetchall()[0][0])
                    c.execute("""SELECT vorname FROM personen WHERE person_id={}""".format(i))
                    vornamenliste.append(c.fetchall()[0][0])
                    c.execute("""SELECT geburtsdatum FROM personen WHERE person_id={}""".format(i))
                    geburtsdatenliste.append(c.fetchall()[0][0])
                
                #Neugestaltung mit gesuchten Werten
                self.scrollmatrix = []
                for index,item in enumerate(vornamenliste):
                    self.scrollmatrix.append([nachnamenliste[index],item,
                                              geburtsdatenliste[index],idliste[index]])
                    
                self.vbox.removeWidget(self.scroll)
                self.scroll.close()
                
                #Hier kommt die Personenanzeige 
                self.scroll = QScrollArea()
                self.personenanzeige = QWidget()
                self.scroll.setWidgetResizable(True)
                
                #Hier kommen die Personen
                self.personenanzeigenLayout = QVBoxLayout(self.personenanzeige)
                for person in self.scrollmatrix:
                    self.personenanzeigenLayout.addLayout(Row(person))
                self.personenanzeigenLayout.addStretch(1)
                self.personenanzeige.setLayout(self.personenanzeigenLayout)
                self.scroll.setWidget(self.personenanzeige)
                
                self.vbox.addWidget(self.scroll)
                self.vbox.update()
            else:
                self.vbox.removeWidget(self.scroll)
                self.scroll.close()
                noresults = QWidget()
                noresultslayout=QVBoxLayout()
                noresultslabel=QLabel("""Zu diesem Suchbegriff wurden leider keine Ergebnisse gefunden\n
Versuchen Sie es mit einem anderen Suchbegriff oder fügen Sie die gesuchte Person hinzu""")
                noresultslabel.setAlignment(Qt.AlignCenter)
                noresultslayout.addWidget(noresultslabel)
                noresults.setLayout(noresultslayout)
                self.scroll = QScrollArea()
                self.scroll.setWidget(noresults)
                self.vbox.addWidget(self.scroll)
                self.vbox.update()
            
            self.suchen.removeWidget(self.AddButton)
            #self.suchen.removeWidget(self.clearButton)
            if not self.suche:
                self.breaksearchButton=QPushButton("Suche abbrechen")
                self.breaksearchButton.clicked.connect(self.breaksearch)
                self.suchen.addWidget(self.breaksearchButton)
                self.suche=True
            #self.suchen.addWidget(self.clearButton)
            self.suchen.addWidget(self.AddButton)
            self.suchen.update()
    
    def breaksearch(self):
        self.suchen.removeWidget(self.breaksearchButton)
        self.suche=False
        self.breaksearchButton.close()
        self.Input.setText("")
        self.suchen.update()
        self.updatedata()

    def clear(self):
        c.execute("DROP TABLE IF EXISTS personen")
        c.execute("""CREATE TABLE IF NOT EXISTS personen (
    person_id INT(10) NOT NULL AUTO_INCREMENT,
    nachname VARCHAR(50) default null,
    vorname VARCHAR(50) not null,
    geburtsdatum date default null,
    primary key (person_id))""")
        
        c.execute("DROP TABLE IF EXISTS gebete")
        c.execute("""CREATE TABLE IF NOT EXISTS gebete (
    gebets_id INT(10) NOT NULL AUTO_INCREMENT,
    person_id INT(10) NOT NULL,
    gebetsart VARCHAR(5) NOT NULL,
    anliegen VARCHAR(1000) NOT NULL,
    PRIMARY KEY (gebets_id)
    )""")
        
        c.execute("DROP TABLE IF EXISTS oldidlist")
        c.execute("""CREATE TABLE IF NOT EXISTS oldidlist (
    ID INTEGER NOT NULL        
    )""")
        
        conn.commit()
        self.updatedata()
    
    def updatedata(self):
        c.execute("SELECT nachname FROM personen")
        nachnamenlistealsstring=c.fetchall()
        c.execute("SELECT vorname FROM personen")
        vornamenlistealsstring=c.fetchall()
        c.execute("SELECT geburtsdatum FROM personen")
        geburtsdatenlistealsstring=c.fetchall()
        c.execute("SELECT person_id FROM personen")
        idlistealsstring=c.fetchall()

        nachnamenliste = self.string2list(nachnamenlistealsstring)
        vornamenliste = self.string2list(vornamenlistealsstring)
        geburtsdatenliste = self.string2list(geburtsdatenlistealsstring)
        idliste = self.string2list(idlistealsstring)
        
        self.scrollmatrix = []
        for index,item in enumerate(vornamenliste):
            self.scrollmatrix.append([nachnamenliste[index],item,
                                      geburtsdatenliste[index],idliste[index]])
        
        self.vbox.removeWidget(self.scroll)
        self.scroll.close()
        
        #Hier kommt die Personenanzeige 
        self.scroll = QScrollArea()
        self.personenanzeige = QWidget()
        self.scroll.setWidgetResizable(True)
        
        #Hier kommen die Personen
        
        self.personenanzeigenLayout = QVBoxLayout(self.personenanzeige)
        for person in self.scrollmatrix:
            self.personenanzeigenLayout.addLayout(Row(person))
        self.personenanzeigenLayout.addStretch(1)
        self.personenanzeige.setLayout(self.personenanzeigenLayout)
        self.scroll.setWidget(self.personenanzeige)
        
        self.vbox.addWidget(self.scroll)
        self.vbox.update()
        
    def addPerson(self):
        self.f = addPersonDialog(self)
class SettingsUI:  # create settings form window
    def __init__(self, conf, conffile, icn):
        self.conf = conf
        self.conffile = conffile
        self.icon = icn
        self.scroll = QScrollArea()
        self.window = QWidget()
        self.separator = QFrame()
        self.scroll.setWindowIcon(QIcon(icn))
        self.layoutV = QVBoxLayout()
        self.layoutH0 = QHBoxLayout()
        self.layoutH0a = QHBoxLayout()
        self.layoutH1 = QHBoxLayout()
        self.layoutH2 = QHBoxLayout()
        self.layoutH3 = QHBoxLayout()
        self.layoutH4 = QHBoxLayout()
        self.layoutH5 = QHBoxLayout()
        self.layoutH6a = QHBoxLayout()
        self.layoutH6b = QHBoxLayout()
        self.layoutH6c = QHBoxLayout()
        self.layoutH6d = QHBoxLayout()
        self.fBold = QFont()
        self.fBold.setBold(True)
        self.scroll.setWindowTitle('Now Playing v1.4.0 - Settings')

        self.scroll.setWidgetResizable(True)
        self.scroll.setWindowFlag(Qt.CustomizeWindowHint, True)
        self.scroll.setWindowFlag(Qt.WindowCloseButtonHint, False)
        # self.scroll.setWindowFlag(Qt.WindowMinMaxButtonsHint, False)
        self.scroll.setWindowFlag(Qt.WindowMinimizeButtonHint, False)
        self.scroll.setWidget(self.window)
        self.scroll.setMinimumWidth(625)
        self.scroll.resize(625, 825)

        # error section
        self.errLabel = QLabel()
        self.errLabel.setStyleSheet('color: red')
        # remote
        self.localLabel = QLabel('Track Retrieval Mode')
        self.localLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.localLabel)
        self.remoteDesc = QLabel(
            'Local mode (default) uses Serato\'s local history log for track data.\
\nRemote mode retrieves remote track data from Serato Live Playlists.')
        self.remoteDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.remoteDesc)
        # radios
        self.localRadio = QRadioButton('Local')
        self.localRadio.setChecked(True)
        self.localRadio.toggled.connect(
            lambda: self.on_radiobutton_select(self.localRadio))
        self.localRadio.setMaximumWidth(60)

        self.remoteRadio = QRadioButton('Remote')
        self.remoteRadio.toggled.connect(
            lambda: self.on_radiobutton_select(self.remoteRadio))
        self.layoutH0.addWidget(self.localRadio)
        self.layoutH0.addWidget(self.remoteRadio)
        self.layoutV.addLayout(self.layoutH0)

        # library path
        self.libLabel = QLabel('Serato Library Path')
        self.libLabel.setFont(self.fBold)
        self.libDesc = QLabel(
            'Location of Serato library folder.\ni.e., \\THE_PATH_TO\\_Serato_'
        )
        self.libDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.libLabel)
        self.layoutV.addWidget(self.libDesc)
        self.libButton = QPushButton('Browse for folder')
        self.layoutH0a.addWidget(self.libButton)
        self.libButton.clicked.connect(self.on_libbutton_clicked)
        self.libEdit = QLineEdit()
        self.layoutH0a.addWidget(self.libEdit)
        self.layoutV.addLayout(self.layoutH0a)
        # url
        self.urlLabel = QLabel('URL')
        self.urlLabel.setFont(self.fBold)
        self.urlDesc = QLabel(
            'Web address of your Serato Playlist.\ne.g., https://serato.com/playlists/USERNAME/live'
        )
        self.urlDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.urlLabel)
        self.urlEdit = QLineEdit()
        self.layoutV.addWidget(self.urlDesc)
        self.layoutV.addWidget(self.urlEdit)
        self.urlLabel.setHidden(True)
        self.urlEdit.setHidden(True)
        self.urlDesc.setHidden(True)
        # separator line
        self.separator.setFrameShape(QFrame.HLine)
        # self.separator.setFrameShadow(QFrame.Sunken)
        self.layoutV.addWidget(self.separator)
        # file
        self.fileLabel = QLabel('File')
        self.fileLabel.setFont(self.fBold)
        self.fileDesc = QLabel(
            'The file to which current track info is written. (Must be plain text: .txt)'
        )
        self.fileDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.fileLabel)
        self.layoutV.addWidget(self.fileDesc)
        self.fileButton = QPushButton('Browse for file')
        self.layoutH1.addWidget(self.fileButton)
        self.fileButton.clicked.connect(self.on_filebutton_clicked)
        self.fileEdit = QLineEdit()
        self.layoutH1.addWidget(self.fileEdit)
        self.layoutV.addLayout(self.layoutH1)
        # interval
        self.intervalLabel = QLabel('Polling Interval')
        self.intervalLabel.setFont(self.fBold)
        self.intervalDesc = QLabel('Amount of time, in seconds, \
that must elapse before checking for new track info. (Default = 10.0)')
        self.intervalDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.intervalLabel)
        self.layoutV.addWidget(self.intervalDesc)
        self.intervalEdit = QLineEdit()
        self.intervalEdit.setMaximumSize(40, 35)
        self.layoutV.addWidget(self.intervalEdit)
        self.intervalLabel.setHidden(True)
        self.intervalDesc.setHidden(True)
        self.intervalEdit.setHidden(True)
        # delay
        self.delayLabel = QLabel('Write Delay')
        self.delayLabel.setFont(self.fBold)
        self.delayDesc = QLabel('Amount of time, in seconds, \
to delay writing the new track info once it\'s retrieved. (Default = 0)')
        self.delayDesc.setStyleSheet('color: grey')
        self.layoutV.addWidget(self.delayLabel)
        self.layoutV.addWidget(self.delayDesc)
        self.delayEdit = QLineEdit()
        self.delayEdit.setMaximumWidth(40)
        self.layoutV.addWidget(self.delayEdit)
        # multi-line
        self.multiLabel = QLabel('Multiple Line Indicator')
        self.multiLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.multiLabel)
        self.multiCbox = QCheckBox()
        self.multiCbox.setMaximumWidth(25)
        self.layoutH2.addWidget(self.multiCbox)
        self.multiDesc = QLabel('Write Artist and Song \
data on separate lines.')
        self.multiDesc.setStyleSheet('color: grey')
        self.layoutH2.addWidget(self.multiDesc)
        self.layoutV.addLayout(self.layoutH2)
        # quotes
        self.quoteLabel = QLabel('Song Quote Indicator')
        self.quoteLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.quoteLabel)
        self.quoteCbox = QCheckBox()
        self.quoteCbox.setMaximumWidth(25)
        self.layoutH3.addWidget(self.quoteCbox)
        self.quoteDesc = QLabel('Surround the song title \
with quotes.')
        self.quoteDesc.setStyleSheet('color: grey')
        self.layoutH3.addWidget(self.quoteDesc)
        self.layoutV.addLayout(self.layoutH3)
        # prefixes
        self.prefixLabel = QLabel('Prefixes')
        self.prefixLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.prefixLabel)
        self.a_prefixDesc = QLabel(
            'Artist - String to be written before artist info.')
        self.a_prefixDesc.setStyleSheet('color: grey')
        self.s_prefixDesc = QLabel(
            'Song - String to be written before song info.')
        self.s_prefixDesc.setStyleSheet('color: grey')
        self.layoutH6a.addWidget(self.a_prefixDesc)
        self.layoutH6a.addWidget(self.s_prefixDesc)
        self.a_prefixEdit = QLineEdit()
        self.s_prefixEdit = QLineEdit()
        self.layoutH6b.addWidget(self.a_prefixEdit)
        self.layoutH6b.addWidget(self.s_prefixEdit)
        self.layoutV.addLayout(self.layoutH6a)
        self.layoutV.addLayout(self.layoutH6b)
        # suffixes
        self.suffixLabel = QLabel('Suffixes')
        self.suffixLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.suffixLabel)
        self.a_suffixDesc = QLabel(
            'Artist - String to be written after artist info.')
        self.a_suffixDesc.setStyleSheet('color: grey')
        self.s_suffixDesc = QLabel(
            'Song - String to be written after song info.')
        self.s_suffixDesc.setStyleSheet('color: grey')
        self.layoutH6c.addWidget(self.a_suffixDesc)
        self.layoutH6c.addWidget(self.s_suffixDesc)
        self.a_suffixEdit = QLineEdit()
        self.s_suffixEdit = QLineEdit()
        self.layoutH6d.addWidget(self.a_suffixEdit)
        self.layoutH6d.addWidget(self.s_suffixEdit)
        self.layoutV.addLayout(self.layoutH6c)
        self.layoutV.addLayout(self.layoutH6d)
        # notify
        self.notifLabel = QLabel('Notification Indicator')
        self.notifLabel.setFont(self.fBold)
        self.layoutV.addWidget(self.notifLabel)
        self.notifCbox = QCheckBox()
        self.notifCbox.setMaximumWidth(25)
        self.layoutH5.addWidget(self.notifCbox)
        self.notifDesc = QLabel('Show OS system notification \
when new song is retrieved.')
        self.notifDesc.setStyleSheet('color: grey')
        self.layoutH5.addWidget(self.notifDesc)
        self.layoutV.addLayout(self.layoutH5)
        # error area
        self.layoutV.addWidget(self.errLabel)
        # cancel btn
        self.cancelButton = QPushButton('Cancel')
        self.cancelButton.setMaximumSize(80, 35)
        self.layoutH4.addWidget(self.cancelButton)
        self.cancelButton.clicked.connect(self.on_cancelbutton_clicked)
        # save btn
        self.saveButton = QPushButton('Save')
        self.saveButton.setMaximumSize(80, 35)
        self.layoutH4.addWidget(self.saveButton)
        self.saveButton.clicked.connect(self.on_savebutton_clicked)
        self.layoutV.addLayout(self.layoutH4)

        self.window.setLayout(self.layoutV)

    def upd_win(self):
        c = ConfigFile(self.conf, self.conffile)
        if c.local:
            self.localRadio.setChecked(True)
            self.remoteRadio.setChecked(False)
        else:
            self.localRadio.setChecked(False)
            self.remoteRadio.setChecked(True)
        self.libEdit.setText(c.libpath)
        self.urlEdit.setText(c.url)
        self.fileEdit.setText(c.file)
        self.intervalEdit.setText(str(c.interval))
        self.delayEdit.setText(str(c.delay))
        self.multiCbox.setChecked(c.multi)
        self.quoteCbox.setChecked(c.quote)
        self.a_prefixEdit.setText(c.a_pref)
        self.a_suffixEdit.setText(c.a_suff)
        self.s_prefixEdit.setText(c.s_pref)
        self.s_suffixEdit.setText(c.s_suff)
        self.notifCbox.setChecked(c.notif)

    def upd_conf(self):

        local = str(self.localRadio.isChecked())
        libpath = self.libEdit.text()
        url = self.urlEdit.text()
        file = self.fileEdit.text()
        interval = self.intervalEdit.text()
        delay = self.delayEdit.text()
        multi = str(self.multiCbox.isChecked())
        quote = str(self.quoteCbox.isChecked())
        a_pref = self.a_prefixEdit.text().replace(" ", "|_0")
        a_suff = self.a_suffixEdit.text().replace(" ", "|_0")
        s_pref = self.s_prefixEdit.text().replace(" ", "|_0")
        s_suff = self.s_suffixEdit.text().replace(" ", "|_0")
        notif = str(self.notifCbox.isChecked())

        c = ConfigFile(self.conf, self.conffile)
        c.put(local, libpath, url, file, interval, delay, multi, quote, a_pref,
              a_suff, s_pref, s_suff, notif)

    # radio button action
    def on_radiobutton_select(self, b):
        if b.text() == 'Local':
            self.urlLabel.setHidden(True)
            self.urlEdit.setHidden(True)
            self.urlDesc.setHidden(True)
            self.intervalLabel.setHidden(True)
            self.intervalDesc.setHidden(True)
            self.intervalEdit.setHidden(True)
            self.libLabel.setHidden(False)
            self.libEdit.setHidden(False)
            self.libDesc.setHidden(False)
            self.libButton.setHidden(False)
            self.window.hide()
            self.errLabel.setText('')
            self.window.show()
        else:
            self.urlLabel.setHidden(False)
            self.urlEdit.setHidden(False)
            self.urlDesc.setHidden(False)
            self.intervalLabel.setHidden(False)
            self.intervalDesc.setHidden(False)
            self.intervalEdit.setHidden(False)
            self.libLabel.setHidden(True)
            self.libEdit.setHidden(True)
            self.libDesc.setHidden(True)
            self.libButton.setHidden(True)
            self.window.hide()
            self.errLabel.setText('')
            self.window.show()

    # file button action
    def on_filebutton_clicked(self):
        filename = QFileDialog.getOpenFileName(self.window, 'Open file', '.',
                                               '*.txt')
        if filename:
            self.fileEdit.setText(filename[0])

    # file button action
    def on_libbutton_clicked(self):
        libdir = QFileDialog.getExistingDirectory(self.window,
                                                  'Select directory')
        if libdir:
            self.libEdit.setText(libdir)

    # cancel button action
    def on_cancelbutton_clicked(self):
        tray.actConfig.setEnabled(True)
        self.upd_win()
        self.close()
        self.errLabel.setText('')

    # save button action
    def on_savebutton_clicked(self):
        if self.remoteRadio.isChecked():
            if 'https://serato.com/playlists' not in self.urlEdit.text() and \
                    'https://www.serato.com/playlists' not in self.urlEdit.text() or \
                    len(self.urlEdit.text()) < 30:
                self.errLabel.setText('* URL is invalid')
                self.window.hide()
                self.window.show()
                return

        if self.localRadio.isChecked():
            if '_Serato_' not in self.libEdit.text():
                self.errLabel.setText(
                    '* Serato Library Path is required.  Should point to "_Serato_" folder'
                )
                self.window.hide()
                self.window.show()
                return

        if self.fileEdit.text() == "":
            self.errLabel.setText('* File is required')
            self.window.hide()
            self.window.show()
            return

        self.upd_conf()
        self.close()
        self.errLabel.setText('')

        global ini
        if ini == 0:
            ini = 1
            tray.actPause.setText('Pause')
            tray.actPause.setEnabled(True)
            main_thread.start()

    def show(self):
        tray.actConfig.setEnabled(False)
        self.upd_win()
        self.scroll.show()
        self.scroll.setFocus()

    def close(self):
        tray.actConfig.setEnabled(True)
        self.scroll.hide()

    def exit(self):
        self.scroll.close()