diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rwxr-xr-x | build_tools/bin/bld.py | 76 | ||||
| -rwxr-xr-x | build_tools/bin/bld_resource.py | 2740 | 
3 files changed, 2817 insertions, 0 deletions
@@ -16,3 +16,4 @@ overlay.xpk  .viminfo  build_tools/clarch/profiles/local  local +*.pyc diff --git a/build_tools/bin/bld.py b/build_tools/bin/bld.py new file mode 100755 index 0000000..c28e31d --- /dev/null +++ b/build_tools/bin/bld.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +try: +    from PyQt4 import QtCore, QtGui +    from PyQt4.QtCore import * +    from PyQt4.QtGui import * +except: +    print "pyqt4 needs to be installed" +    sys.exit(1) + +from bld_resource import * +import thread +import signal +signal.signal(signal.SIGINT, signal.SIG_DFL) + + +settings_dict={} +settings_dict['group_file_location']='lineEdit_4' +settings_dict['abs_location'] = 'lineEdit_5' +settings_dict['repo_location'] = 'lineEdit_6' +settings_dict['editor'] = 'lineEdit_7' +settings_dict['sync'] = 'lineEdit_8' +settings_dict['explore'] = 'lineEdit_9' +settings_dict['konsole'] = 'lineEdit_10' +settings_dict['makepkg'] = 'lineEdit_11' +settings_dict['depcheck'] = 'lineEdit_12' +settings_dict['repocheck'] = 'lineEdit_13' +settings_dict['create_iso_cmd'] = 'lineEdit_16' +settings_dict['upload_iso'] = 'lineEdit_17' +settings_dict['profile_iso'] = 'lineEdit_19' + + +options_dict={} +options_dict['chroot'] = 'checkBox_chroot' +options_dict['download_only'] = 'checkBox_download' +options_dict['force_install'] = 'checkBox_force' +options_dict['syncinstall'] = 'checkBox_syncinstall' +#options_dict['createmd5'] = 'checkBox_md5' +options_dict['cleardir'] = 'checkBox_clean' +options_dict['remove_sync'] = 'checkBox_remove' +options_dict['holdver'] ='checkBox_holdver' +options_dict['bumpver'] = 'checkBox_bumpver' +options_dict['install'] = 'checkBox_install' +options_dict['ignore_deps'] = 'checkBox_ignore' +options_dict['logview'] = 'checkBox_2' + + + + +class MyForm(QtGui.QMainWindow): +    def __init__(self, parent=None): +        QtGui.QWidget.__init__(self, parent) +        self.ui = Ui_MainWindow() +        self.ui.setupUi(self) +        #self.ui.populate_group_box() +        self.ui.load_settings_from_file(False) +        thread.start_new_thread(self.ui.populate_group_box, ()) +        thread.start_new_thread(self.ui.populate_abs_group_box,()) +        self.ui.populate_iso_profile() +        self.ui.enable_go_button() +        self.ui.tabWidget.setCurrentIndex(0) +        self.ui.load_settings_from_file(False) + + + + +if __name__ == "__main__": +  #  sys.stdout=Unbuffered(sys.stdout) +    app = QtGui.QApplication(sys.argv) +    myapp = MyForm() +    app.processEvents() +    myapp.show() + +    sys.exit(app.exec_()) diff --git a/build_tools/bin/bld_resource.py b/build_tools/bin/bld_resource.py new file mode 100755 index 0000000..30c5986 --- /dev/null +++ b/build_tools/bin/bld_resource.py @@ -0,0 +1,2740 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'bldtest.ui' +# +# Created: Wed Sep 30 18:21:55 2009 +#      by: PyQt4 UI code generator 4.5.4 +# +# WARNING! All changes made in this file will be lost! +try: +    from PyQt4 import QtCore, QtGui +except: +    print "pyqt4 needs to be installed" +    sys.exit(0) + + +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +#from PyQt4.QtCore import SIGNAL, SLOT +#from PyQt4.QtGui import * +import os, sys, time, subprocess, shutil +import shelve, thread, tarfile, tempfile +import distutils.dir_util + +try: +    import pexpect +except: +    print "the pexpect module is not installed" +    sys.exit(1) +#try: +    #import parched +#except: +    #print "the parched module is not installed" +    #print "http://github.com/sebnow/parched/" +    #sys.exit(1) + + + +global sepLine +sepLine="\n-------------------------------------------------" +global bld_data +homedir = os.path.expanduser("~") +bld_data="%s/.bld_session_data" %homedir + +print bld_data + +class OutLog: +    def __init__(self, edit, out=None, color=None): +        """(edit, out=None, color=None) -> can write stdout, stderr to a +        QTextEdit. +        edit = QTextEdit +        out = alternate stream ( can be the original sys.stdout ) +        color = alternate color (i.e. color stderr a different color) +        """ +        self.edit = edit +        self.out = out +        self.color = color + +    def write(self, m): +        if self.color: +            tc = self.edit.textColor() +            self.edit.setTextColor(self.color) + +        self.edit.moveCursor(QtGui.QTextCursor.End) +        self.edit.append(m) + +        if self.color: +            self.edit.setTextColor(tc) + +        if self.out: +            self.out.write(m) + + + +class TableWidget(QTableWidget): +    def __init__(self, parent = None): +        QTableWidget.__init__(self, parent) +    def contextMenuEvent(self, event): +        menu = QMenu(self) + +       # quitAction = menu.addAction("Quit") +        editAction = menu.addAction("Edit PKGBUILD") +        backupAction = menu.addAction("Backup PKGBUILD") +        changeLogAction = menu.addAction("View changelog") +        buildLogAction = menu.addAction("View buildlog") +        menu.addSeparator() +        xtermAction = menu.addAction("Open terminal here") +        exploreAction = menu.addAction("Open File browser here") +        menu.addSeparator() +        promoteAction =  menu.addAction("Promote package") +        updateAction = menu.addAction("Update pkg from ABS") +        #depAction = menu.addAction("Check package for dependencies") +        md5Action = menu.addAction("Generate MD5 sums") +        removeAction = menu.addAction("Remove package") +        menu.addSeparator() +        resetStatus = menu.addAction("Reset status") +        resetBuildOrder = menu.addAction("Reset build order") + +        action = menu.exec_(self.mapToGlobal(event.pos())) +        #if action == quitAction: +        #    qApp.quit() +        if action == editAction: +            self.emit(QtCore.SIGNAL('edit()')) +        if action == changeLogAction: +            self.emit(QtCore.SIGNAL('changeLogAction()')) +        if action == buildLogAction: +            self.emit(QtCore.SIGNAL('buildLogAction()')) +        if action == xtermAction: +            self.emit(QtCore.SIGNAL('launchxterm()')) +        if action == exploreAction: +            self.emit(QtCore.SIGNAL('exploreAction()')) +        if action == backupAction: +            self.emit(QtCore.SIGNAL('backupAction()')) +        if action == updateAction: +            self.emit(QtCore.SIGNAL('updateAction()')) +        #if action == depAction: +        #    self.emit(QtCore.SIGNAL('depAction()')) +        if action == md5Action: +            self.emit(QtCore.SIGNAL('MD5Action()')) +        if action == removeAction: +            self.emit(QtCore.SIGNAL('removeAction()')) +        if action == promoteAction: +            self.emit(QtCore.SIGNAL('promoteAction()')) +        if action == resetStatus: +            self.resetstatus() +        if action == resetBuildOrder: +            self.resetBuildOrder() + +    def resetstatus(self): +        for row in range(self.rowCount()): +            self.item(row, 3).setText("-") +        return + +    def resetBuildOrder(self): +        for row in range(self.rowCount()): +            self.item(row, 0).setText("") +        return + +    def keep_col_in_list(self,itemList,col): +        new_itemList=[] +        for item in itemList: +            if item.column() == col : +                new_itemList.append(item) +            else: +              self.setItemSelected (item, False) +        return new_itemList + +    def pkglocation(self,item): +        row = item.row() +        locitem = self.item(row,4) +        loc = str(locitem.text()) +        return loc + + +    def search_for_item(self,itemText,orig_itemrow): +        item = self.item(orig_itemrow, 0) +        return_row = -1 +        if  str(item.text()) == itemText: +            #print "found a match at the orig cell" +            self.scrollToItem(item) +            return_row = orig_itemrow +        else: +            row_count=int(self.rowCount()) +            for r in range(row_count): +                row = r +                item = self.item(row, 0) +                if  str(item.text()) == itemText: +                    return_row = row +                    self.scrollToItem(item,3) +                    break +        return return_row + +    def get_num_selected(self): +        itemlist=self.selectedItems() +        itemlist=self.keep_col_in_list(itemlist,1) +        return len(itemlist) + +class TableWidget_ABS(TableWidget): +    def __init__(self, parent = None): +        TableWidget.__init__(self, parent) +    def contextMenuEvent(self, event): +        menu = QMenu(self) +        viewAction = menu.addAction("View PKGBUILD") +        menu.addSeparator() +        xtermAction = menu.addAction("Open terminal here") +        exploreAction = menu.addAction("Open File browser here") +        menu.addSeparator() +        menu.addSeparator() +        copyABSaction = menu.addAction("Copy package to selected repository") +        action = menu.exec_(self.mapToGlobal(event.pos())) + +        if action == viewAction: +            self.emit(QtCore.SIGNAL('viewActionABS()')) +        if action == xtermAction: +            self.emit(QtCore.SIGNAL('launchxtermABS()')) +        if action == exploreAction: +            self.emit(QtCore.SIGNAL('exploreActionABS()')) +        if action == copyABSaction: +            self.emit(QtCore.SIGNAL('CopyABSAction()')) + + + +class MyThread(QtCore.QThread): +   def __init__(self, parent = None): +       QtCore.QThread.__init__(self, parent) +       self.alive = 1 +       self.running = 0 +       self.n = 0 + +   def finish(self): +        outmsg="\n Finished" +        self.emit(SIGNAL("update(QString)"),outmsg) +        self.running = 0 + + +      #  self.close() + +   def runcmd(self,cmd_in,itemText,itemrow,builddir): +        arglist = " ".join(self.mparglist) +        cwd=os.getcwd() +        os.chdir(builddir) +        #print builddir +        cmd="%s  %s %s" %(cmd_in, arglist, itemText) +       # print cmd +        retcode = -1 +        try: +            logfile = "%s/%s.build.log" %(builddir,itemText) +            f = open(logfile, 'w') +            child = pexpect.spawn(cmd,cwd=builddir) +            for line in child: +                f.write(line) +                self.emit(SIGNAL("update_build(QString)"),line) +                self.msleep(20) +            child.close() +            retcode=child.exitstatus +            f.write(str(retcode)) +            f.close() +        except: +             line = "****Exception happened during build for %s" %itemText +             self.emit(SIGNAL("update(QString)"),line) +             pass +        return retcode +        #os.chdir(cwd) +        #process = subprocess.Popen( +            #cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + +        #while True: +            #outitemText = (process.stdout.readline()) +            #if outitemText == '' and process.poll() != None: +                #break +            #if outitemText != '': +                #self.emit(SIGNAL("update(QString)"),outitemText) +               ## sys.stdout.write(itemText) +                ##sys.stdout.flush() +            #self.msleep(5) + +        #retcode = process.poll() + +   def render(self,cmd_in,itemlist,mparglist): +        self.itemlist = itemlist +        self.mparglist = mparglist +        self.cmd_in = cmd_in +        self.running = 0 +        self.start() + +   def run(self): +        self.emit(SIGNAL("update(QString)"),sepLine) +        self.emit(SIGNAL("update(QString)"),"Starting thread for package process") +        itemlistlen=len(self.itemlist) +        for itemitr in range(0,itemlistlen): +                if self.running == 0: +                     outmsg="Stopping, waiting for current job to finish" +                     self.emit(SIGNAL("update(QString)"),outmsg) +                     break +                item = self.itemlist[itemitr][0] +                itemlocation = self.itemlist[itemitr][1] +                ##item = self.itemlist.pop() +                itemrow =  item.row() +                itemText = str(item.text()) + +                #self.msleep(100) +                outmsg="-------------Starting workon: %s-------------" %itemText +                self.emit(SIGNAL("update(QString)"),outmsg) +                status = "Processing!" +                self.emit(SIGNAL("update_StatusCell(int,QString,QString,int)"),itemrow,itemText,status,item.column()) +                rc = self.runcmd(self.cmd_in,itemText,itemrow,itemlocation) +                if rc == 0: +                    status = "Built!" +                elif rc == -1: +                    status = "Skipped" +                else: +                    status = "Failed" + +                self.emit(SIGNAL("update(QString)"),status) +                self.emit(SIGNAL("update_StatusCell(int,QString,QString,int)"),itemrow,itemText,status,item.column()) +                #self.emit(SIGNAL("update(QString)"),"########################################\n") +               # print self.itemlist +                progress = ((float(itemitr+1) / float(itemlistlen)) * 100) +                self.emit(SIGNAL("update_progress_bar(int)"),progress) +                outline = "%s built / %s selected" %(itemitr+1,itemlistlen) +                self.emit(SIGNAL("update(QString)"),outline) +                outline="%s complete" %progress +                self.emit(SIGNAL("update(QString)"),outline) +                self.msleep(1000) +        self.finish() + + +   def toggle(self): +       if self.running: +           self.running = 0 +       else: +           self.running = 1 + +   def stop(self): +       self.alive + + + +class load_pkg_thread(QtCore.QThread): +    def __init__(self, parent = None ): +        QtCore.QThread.__init__(self, parent ) +        self.alive = 1 +        self.running = 0 +        self.n = 0 +    def value_init(self,filename,repo_location,repo_type): +        self.group_filename = filename +        self.repo_location = repo_location +        self.repo_type = repo_type +        self.start() + +    def run(self): +        try: +            f = open(self.group_filename,"r") +            file_contents = f.readlines() +            total_packages=len(file_contents) +            f.close() +        except: +            print "couldn't open file: %s" %self.group_filename +            #outText =  "couldn't open file to populate pkg list: %s " %filename +            #self.update_ouputwindow(outText) +            #self.comboBox.setEnabled(True) +        skipped=[] +        for index, line in enumerate(file_contents): + +            progress = ((float(index+1) / float(total_packages)) * 100) +            currentfile = "%s/%s/PKGBUILD" %(self.repo_location,line.strip()) +            pkglocation = "%s/%s" %(self.repo_location,line.strip()) +            if os.path.isfile(currentfile): +                pkgname="unknown" +                pkgversion="unknown" +                pkgdescription="unknown" +                try: +                    f= open(currentfile,"r") +                    file_contents= f.readlines() +                    f.close() +                    for line in file_contents: +                        if line.strip().startswith("pkgname"): +                            pkgname=line.partition("=")[2] + +                        elif line.strip().startswith("pkgver"): +                            pkgversion=line.partition("=")[2] + +                        elif line.strip().startswith("pkgdesc"): +                            pkgdescription=line.partition("=")[2] + +                    #package = parched.PKGBUILD(currentfile) +                    #pkgname =  str(package.name) +                    #pkgversion = str(package.version) +                    #pkgdescription =  str(package.description) + +                except Exception, e: +                    print "Couldn't parse file: %s\n \treason: %s" %(currentfile,e) +                    skipped.append(currentfile) +                    continue +                itemTextList=[pkgname,pkgversion,"-",pkglocation,pkgdescription] +                if self.repo_type == "ABS": +                    self.emit(SIGNAL("insertItem_ABS(PyQt_PyObject)"),itemTextList) +                    self.emit(SIGNAL("update_progress_bar_ABS(float)"),progress) +                else: +                    self.emit(SIGNAL("insertItem(PyQt_PyObject)"),itemTextList) +                    self.emit(SIGNAL("update_progress_bar(float)"),progress) +                time.sleep(0.005) +        self.emit(SIGNAL("pkg_load_finished(bool)"),True) +        if len(skipped) > 0: +            self.emit(SIGNAL("pkg_load_skipped(PyQt_PyObject)"),skipped) + +    def toggle(self): +        if self.running: +            self.running = 0 +        else: +            self.running = 1 +    def stop(self): +        self.alive = 0 + + +class run_cmd_thread(QtCore.QThread): +    def __init__(self, parent = None ): +        QtCore.QThread.__init__(self, parent ) +        self.alive = 1 +        self.running = 0 +        self.n = 0 +    def value_init(self,runcmd,args): +        self.runcmd = runcmd +        self.args = args +        self.start() + +    def run(self): +        self.emit(SIGNAL("enable_tab2(bool)"),False) +        retcode = -1 +        self.emit(SIGNAL("update(QString)"),sepLine) +        outText="Starting to run:  %s" %self.runcmd +        self.emit(SIGNAL("update(QString)"),outText) +        #try: +        logfile=tempfile.mkstemp(suffix=".cmd.log",dir="/tmp")[1] +        try: +            f = open(logfile, 'w') +            outText="log files is:  %s" %logfile +            self.emit(SIGNAL("update(QString)"),outText) +            child = pexpect.spawn(str(self.runcmd),self.args) +            for line in child: +                f.write(line) +                self.emit(SIGNAL("update_build(QString)"),line) +                self.msleep(20) +            child.close() +            retcode=child.exitstatus +            f.write(str(retcode)) +            f.close() +        except: +            line = "****Exception happened:  %s" %self.runcmd +            self.emit(SIGNAL("update(QString)"),line) +            pass +        self.emit(SIGNAL("enable_tab2(bool)"),True) + +        #return retcode + +    def toggle(self): +        if self.running: +            self.running = 0 +        else: +            self.running = 1 +    def stop(self): +        self.alive = 0 + + +class Ui_MainWindow(object): +    def setupUi(self, MainWindow): +        MainWindow.setObjectName("MainWindow") +        MainWindow.setEnabled(True) +        MainWindow.resize(923, 757) +        MainWindow.setLayoutDirection(QtCore.Qt.LeftToRight) +        self.centralwidget = QtGui.QWidget(MainWindow) +        self.centralwidget.setObjectName("centralwidget") +        self.horizontalLayout_9 = QtGui.QHBoxLayout(self.centralwidget) +        self.horizontalLayout_9.setObjectName("horizontalLayout_9") +        self.tabWidget = QtGui.QTabWidget(self.centralwidget) +        self.tabWidget.setEnabled(True) +        self.tabWidget.setLayoutDirection(QtCore.Qt.LeftToRight) +        self.tabWidget.setAutoFillBackground(True) +        self.tabWidget.setTabPosition(QtGui.QTabWidget.South) +        self.tabWidget.setTabShape(QtGui.QTabWidget.Triangular) +        self.tabWidget.setElideMode(QtCore.Qt.ElideNone) +        self.tabWidget.setUsesScrollButtons(False) +        self.tabWidget.setDocumentMode(False) +        self.tabWidget.setTabsClosable(False) +        self.tabWidget.setMovable(True) +        self.tabWidget.setObjectName("tabWidget") +        self.tab = QtGui.QWidget() +        self.tab.setObjectName("tab") +        self.verticalLayout_2 = QtGui.QVBoxLayout(self.tab) +        self.verticalLayout_2.setObjectName("verticalLayout_2") +        self.groupBox_15 = QtGui.QGroupBox(self.tab) +        self.groupBox_15.setFlat(True) +        self.groupBox_15.setObjectName("groupBox_15") +        self.horizontalLayout_10 = QtGui.QHBoxLayout(self.groupBox_15) +        self.horizontalLayout_10.setContentsMargins(-1, -1, 0, 0) +        self.horizontalLayout_10.setObjectName("horizontalLayout_10") +        self.label_22 = QtGui.QLabel(self.groupBox_15) +        self.label_22.setObjectName("label_22") +        self.horizontalLayout_10.addWidget(self.label_22) +        self.lineEdit_21 = QtGui.QLineEdit(self.groupBox_15) +        self.lineEdit_21.setObjectName("lineEdit_21") +        self.horizontalLayout_10.addWidget(self.lineEdit_21) +        self.pushButton = QtGui.QPushButton(self.groupBox_15) +        self.pushButton.setObjectName("pushButton") +        self.horizontalLayout_10.addWidget(self.pushButton) +        self.pushButton_5 = QtGui.QPushButton(self.groupBox_15) +        self.pushButton_5.setObjectName("pushButton_5") +        self.horizontalLayout_10.addWidget(self.pushButton_5) +        self.checkBox_3 = QtGui.QCheckBox(self.groupBox_15) +        self.checkBox_3.setObjectName("checkBox_3") +        self.horizontalLayout_10.addWidget(self.checkBox_3) +        self.verticalLayout_2.addWidget(self.groupBox_15) +        self.groupBox_2 = QtGui.QGroupBox(self.tab) +        self.groupBox_2.setMinimumSize(QtCore.QSize(0, 50)) +        self.groupBox_2.setFlat(False) +        self.groupBox_2.setObjectName("groupBox_2") +        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox_2) +        self.horizontalLayout.setObjectName("horizontalLayout") +        self.lcdNumber_2 = QtGui.QLCDNumber(self.groupBox_2) +        font = QtGui.QFont() +        font.setWeight(75) +        font.setBold(True) +        self.lcdNumber_2.setFont(font) +        self.lcdNumber_2.setFrameShape(QtGui.QFrame.Box) +        self.lcdNumber_2.setFrameShadow(QtGui.QFrame.Raised) +        self.lcdNumber_2.setLineWidth(1) +        self.lcdNumber_2.setSmallDecimalPoint(False) +        self.lcdNumber_2.setNumDigits(4) +        self.lcdNumber_2.setSegmentStyle(QtGui.QLCDNumber.Flat) +        self.lcdNumber_2.setObjectName("lcdNumber_2") +        self.horizontalLayout.addWidget(self.lcdNumber_2) +        self.lcdNumber = QtGui.QLCDNumber(self.groupBox_2) +        font = QtGui.QFont() +        font.setWeight(75) +        font.setBold(True) +        self.lcdNumber.setFont(font) +        self.lcdNumber.setNumDigits(4) +        self.lcdNumber.setSegmentStyle(QtGui.QLCDNumber.Flat) +        self.lcdNumber.setObjectName("lcdNumber") +        self.horizontalLayout.addWidget(self.lcdNumber) +        self.progressBar = QtGui.QProgressBar(self.groupBox_2) +        self.progressBar.setMaximumSize(QtCore.QSize(16777215, 16777215)) +        self.progressBar.setProperty("value", QtCore.QVariant(0)) +        self.progressBar.setOrientation(QtCore.Qt.Horizontal) +        self.progressBar.setTextDirection(QtGui.QProgressBar.TopToBottom) +        self.progressBar.setObjectName("progressBar") +        self.horizontalLayout.addWidget(self.progressBar) +        self.comboBox = QtGui.QComboBox(self.groupBox_2) +        self.comboBox.setEnabled(True) +        self.comboBox.setMinimumSize(QtCore.QSize(200, 0)) +        self.comboBox.setObjectName("comboBox") +        self.horizontalLayout.addWidget(self.comboBox) +        self.pushButton_8 = QtGui.QPushButton(self.groupBox_2) +        self.pushButton_8.setObjectName("pushButton_8") +        self.horizontalLayout.addWidget(self.pushButton_8) +        self.pushButton_9 = QtGui.QPushButton(self.groupBox_2) +        self.pushButton_9.setObjectName("pushButton_9") +        self.horizontalLayout.addWidget(self.pushButton_9) +        self.verticalLayout_2.addWidget(self.groupBox_2) +        self.groupBox_6 = QtGui.QGroupBox(self.tab) +        self.groupBox_6.setAutoFillBackground(True) +        self.groupBox_6.setFlat(True) +        self.groupBox_6.setCheckable(False) +        self.groupBox_6.setObjectName("groupBox_6") +        self.horizontalLayout_5 = QtGui.QHBoxLayout(self.groupBox_6) +        self.horizontalLayout_5.setSpacing(0) +        self.horizontalLayout_5.setMargin(0) +        self.horizontalLayout_5.setObjectName("horizontalLayout_5") +        self.tableWidget = TableWidget(self.groupBox_6) +        self.tableWidget.setAutoFillBackground(True) +        self.tableWidget.setFrameShape(QtGui.QFrame.StyledPanel) +        self.tableWidget.setFrameShadow(QtGui.QFrame.Sunken) +        self.tableWidget.setLineWidth(3) +        self.tableWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) +        self.tableWidget.setEditTriggers(QtGui.QAbstractItemView.DoubleClicked) +        self.tableWidget.setProperty("showDropIndicator", QtCore.QVariant(False)) +        self.tableWidget.setDragEnabled(False) +        self.tableWidget.setDragDropOverwriteMode(False) +        self.tableWidget.setDragDropMode(QtGui.QAbstractItemView.NoDragDrop) +        self.tableWidget.setAlternatingRowColors(True) +        self.tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) +        self.tableWidget.setGridStyle(QtCore.Qt.SolidLine) +        self.tableWidget.setCornerButtonEnabled(True) +        self.tableWidget.setObjectName("tableWidget") +        self.tableWidget.setColumnCount(6) +        self.tableWidget.setRowCount(0) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(0, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(1, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(2, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(3, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(4, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget.setHorizontalHeaderItem(5, item) +        self.tableWidget.horizontalHeader().setCascadingSectionResizes(True) +        self.tableWidget.horizontalHeader().setStretchLastSection(True) +        self.horizontalLayout_5.addWidget(self.tableWidget) +        self.verticalLayout_2.addWidget(self.groupBox_6) +        self.tabWidget.addTab(self.tab, "") +        self.tab_3 = QtGui.QWidget() +        self.tab_3.setObjectName("tab_3") +        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.tab_3) +        self.horizontalLayout_2.setObjectName("horizontalLayout_2") +        self.tabWidget_2 = QtGui.QTabWidget(self.tab_3) +        self.tabWidget_2.setObjectName("tabWidget_2") +        self.tab_7 = QtGui.QWidget() +        self.tab_7.setObjectName("tab_7") +        self.verticalLayout_12 = QtGui.QVBoxLayout(self.tab_7) +        self.verticalLayout_12.setObjectName("verticalLayout_12") +        self.groupBox_4 = QtGui.QGroupBox(self.tab_7) +        self.groupBox_4.setFlat(True) +        self.groupBox_4.setCheckable(False) +        self.groupBox_4.setObjectName("groupBox_4") +        self.verticalLayout_5 = QtGui.QVBoxLayout(self.groupBox_4) +        self.verticalLayout_5.setObjectName("verticalLayout_5") +        self.groupBox_14 = QtGui.QGroupBox(self.groupBox_4) +        self.groupBox_14.setObjectName("groupBox_14") +        self.verticalLayout_14 = QtGui.QVBoxLayout(self.groupBox_14) +        self.verticalLayout_14.setObjectName("verticalLayout_14") +        self.verticalLayout_5.addWidget(self.groupBox_14) +        self.create_cd = QtGui.QPushButton(self.groupBox_4) +        self.create_cd.setObjectName("create_cd") +        self.verticalLayout_5.addWidget(self.create_cd) +        self.verticalLayout_12.addWidget(self.groupBox_4) +        self.tabWidget_2.addTab(self.tab_7, "") +        self.tab_8 = QtGui.QWidget() +        self.tab_8.setObjectName("tab_8") +        self.verticalLayout_10 = QtGui.QVBoxLayout(self.tab_8) +        self.verticalLayout_10.setObjectName("verticalLayout_10") +        self.groupBox_3 = QtGui.QGroupBox(self.tab_8) +        self.groupBox_3.setObjectName("groupBox_3") +        self.verticalLayout_7 = QtGui.QVBoxLayout(self.groupBox_3) +        self.verticalLayout_7.setObjectName("verticalLayout_7") +        self.groupBox_13 = QtGui.QGroupBox(self.groupBox_3) +        self.groupBox_13.setObjectName("groupBox_13") +        self.verticalLayout_13 = QtGui.QVBoxLayout(self.groupBox_13) +        self.verticalLayout_13.setObjectName("verticalLayout_13") +        self.radioButton_release = QtGui.QRadioButton(self.groupBox_13) +        self.radioButton_release.setObjectName("radioButton_release") +        self.verticalLayout_13.addWidget(self.radioButton_release) +        self.radioButton_testing = QtGui.QRadioButton(self.groupBox_13) +        self.radioButton_testing.setChecked(True) +        self.radioButton_testing.setObjectName("radioButton_testing") +        self.verticalLayout_13.addWidget(self.radioButton_testing) +        self.radioButton_mythvantage = QtGui.QRadioButton(self.groupBox_13) +        self.radioButton_mythvantage.setObjectName("radioButton_mythvantage") +        self.verticalLayout_13.addWidget(self.radioButton_mythvantage) +        self.radioButton_source = QtGui.QRadioButton(self.groupBox_13) +        self.radioButton_source.setObjectName("radioButton_source") +        self.verticalLayout_13.addWidget(self.radioButton_source) +        self.verticalLayout_7.addWidget(self.groupBox_13) +        self.pushButton_sync = QtGui.QPushButton(self.groupBox_3) +        self.pushButton_sync.setObjectName("pushButton_sync") +        self.verticalLayout_7.addWidget(self.pushButton_sync) +        self.verticalLayout_10.addWidget(self.groupBox_3) +        self.tabWidget_2.addTab(self.tab_8, "") +        self.tab_9 = QtGui.QWidget() +        self.tab_9.setObjectName("tab_9") +        self.horizontalLayout_6 = QtGui.QHBoxLayout(self.tab_9) +        self.horizontalLayout_6.setObjectName("horizontalLayout_6") +        self.groupBox_8 = QtGui.QGroupBox(self.tab_9) +        self.groupBox_8.setObjectName("groupBox_8") +        self.verticalLayout_8 = QtGui.QVBoxLayout(self.groupBox_8) +        self.verticalLayout_8.setObjectName("verticalLayout_8") +        self.groupBox_11 = QtGui.QGroupBox(self.groupBox_8) +        self.groupBox_11.setFlat(True) +        self.groupBox_11.setObjectName("groupBox_11") +        self.horizontalLayout_7 = QtGui.QHBoxLayout(self.groupBox_11) +        self.horizontalLayout_7.setObjectName("horizontalLayout_7") +        self.label_19 = QtGui.QLabel(self.groupBox_11) +        self.label_19.setObjectName("label_19") +        self.horizontalLayout_7.addWidget(self.label_19) +        self.lineEdit_upload_cd_dest = QtGui.QLineEdit(self.groupBox_11) +        self.lineEdit_upload_cd_dest.setObjectName("lineEdit_upload_cd_dest") +        self.horizontalLayout_7.addWidget(self.lineEdit_upload_cd_dest) +        self.toolButton_6 = QtGui.QToolButton(self.groupBox_11) +        self.toolButton_6.setObjectName("toolButton_6") +        self.horizontalLayout_7.addWidget(self.toolButton_6) +        self.verticalLayout_8.addWidget(self.groupBox_11) +        self.groupBox_12 = QtGui.QGroupBox(self.groupBox_8) +        self.groupBox_12.setFlat(True) +        self.groupBox_12.setObjectName("groupBox_12") +        self.horizontalLayout_8 = QtGui.QHBoxLayout(self.groupBox_12) +        self.horizontalLayout_8.setObjectName("horizontalLayout_8") +        self.label_20 = QtGui.QLabel(self.groupBox_12) +        self.label_20.setObjectName("label_20") +        self.horizontalLayout_8.addWidget(self.label_20) +        self.lineEdit_18 = QtGui.QLineEdit(self.groupBox_12) +        self.lineEdit_18.setObjectName("lineEdit_18") +        self.horizontalLayout_8.addWidget(self.lineEdit_18) +        self.verticalLayout_8.addWidget(self.groupBox_12) +        self.pushbutton_upload = QtGui.QPushButton(self.groupBox_8) +        self.pushbutton_upload.setObjectName("pushbutton_upload") +        self.verticalLayout_8.addWidget(self.pushbutton_upload) +        self.horizontalLayout_6.addWidget(self.groupBox_8) +        self.tabWidget_2.addTab(self.tab_9, "") +        self.horizontalLayout_2.addWidget(self.tabWidget_2) +        self.tabWidget.addTab(self.tab_3, "") +        self.tab_2 = QtGui.QWidget() +        self.tab_2.setObjectName("tab_2") +        self.verticalLayout_4 = QtGui.QVBoxLayout(self.tab_2) +        self.verticalLayout_4.setObjectName("verticalLayout_4") +        self.textEdit = QtGui.QTextEdit(self.tab_2) +        self.textEdit.setObjectName("textEdit") +        self.verticalLayout_4.addWidget(self.textEdit) +        self.tabWidget.addTab(self.tab_2, "") +        self.tab_4 = QtGui.QWidget() +        self.tab_4.setObjectName("tab_4") +        self.gridLayout = QtGui.QGridLayout(self.tab_4) +        self.gridLayout.setObjectName("gridLayout") +        self.label = QtGui.QLabel(self.tab_4) +        self.label.setObjectName("label") +        self.gridLayout.addWidget(self.label, 0, 0, 1, 1) +        self.lineEdit = QtGui.QLineEdit(self.tab_4) +        self.lineEdit.setObjectName("lineEdit") +        self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1) +        self.label_3 = QtGui.QLabel(self.tab_4) +        self.label_3.setObjectName("label_3") +        self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1) +        self.lineEdit_2 = QtGui.QLineEdit(self.tab_4) +        self.lineEdit_2.setObjectName("lineEdit_2") +        self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 1) +        self.label_2 = QtGui.QLabel(self.tab_4) +        self.label_2.setObjectName("label_2") +        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) +        self.lineEdit_3 = QtGui.QLineEdit(self.tab_4) +        self.lineEdit_3.setObjectName("lineEdit_3") +        self.gridLayout.addWidget(self.lineEdit_3, 2, 1, 1, 1) +        self.label_4 = QtGui.QLabel(self.tab_4) +        self.label_4.setObjectName("label_4") +        self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) +        self.plainTextEdit_2 = QtGui.QPlainTextEdit(self.tab_4) +        self.plainTextEdit_2.setMaximumSize(QtCore.QSize(16777215, 40)) +        self.plainTextEdit_2.setObjectName("plainTextEdit_2") +        self.gridLayout.addWidget(self.plainTextEdit_2, 3, 1, 1, 1) +        self.label_15 = QtGui.QLabel(self.tab_4) +        self.label_15.setObjectName("label_15") +        self.gridLayout.addWidget(self.label_15, 4, 0, 1, 1) +        self.lineEdit_14 = QtGui.QLineEdit(self.tab_4) +        self.lineEdit_14.setObjectName("lineEdit_14") +        self.gridLayout.addWidget(self.lineEdit_14, 4, 1, 1, 1) +        self.checkBox = QtGui.QCheckBox(self.tab_4) +        self.checkBox.setObjectName("checkBox") +        self.gridLayout.addWidget(self.checkBox, 6, 1, 1, 1) +        self.buttonBox = QtGui.QDialogButtonBox(self.tab_4) +        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Reset) +        self.buttonBox.setCenterButtons(True) +        self.buttonBox.setObjectName("buttonBox") +        self.gridLayout.addWidget(self.buttonBox, 7, 1, 1, 1) +        self.toolButton_4 = QtGui.QToolButton(self.tab_4) +        self.toolButton_4.setObjectName("toolButton_4") +        self.gridLayout.addWidget(self.toolButton_4, 4, 2, 1, 1) +        self.tabWidget.addTab(self.tab_4, "") +        self.tab_5 = QtGui.QWidget() +        self.tab_5.setObjectName("tab_5") +        self.verticalLayout_9 = QtGui.QVBoxLayout(self.tab_5) +        self.verticalLayout_9.setObjectName("verticalLayout_9") +        self.groupBox = QtGui.QGroupBox(self.tab_5) +        self.groupBox.setObjectName("groupBox") +        self.verticalLayout_6 = QtGui.QVBoxLayout(self.groupBox) +        self.verticalLayout_6.setObjectName("verticalLayout_6") +        self.groupBox_9 = QtGui.QGroupBox(self.groupBox) +        self.groupBox_9.setObjectName("groupBox_9") +        self.horizontalLayout_3 = QtGui.QHBoxLayout(self.groupBox_9) +        self.horizontalLayout_3.setObjectName("horizontalLayout_3") +        self.label_16 = QtGui.QLabel(self.groupBox_9) +        self.label_16.setObjectName("label_16") +        self.horizontalLayout_3.addWidget(self.label_16) +        self.lineEdit_15 = QtGui.QLineEdit(self.groupBox_9) +        self.lineEdit_15.setObjectName("lineEdit_15") +        self.horizontalLayout_3.addWidget(self.lineEdit_15) +        self.toolButton_5 = QtGui.QToolButton(self.groupBox_9) +        self.toolButton_5.setObjectName("toolButton_5") +        self.horizontalLayout_3.addWidget(self.toolButton_5) +        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum) +        self.horizontalLayout_3.addItem(spacerItem) +        self.toolButton_7 = QtGui.QToolButton(self.groupBox_9) +        self.toolButton_7.setObjectName("toolButton_7") +        self.horizontalLayout_3.addWidget(self.toolButton_7) +        self.verticalLayout_6.addWidget(self.groupBox_9) +        self.groupBox_16 = QtGui.QGroupBox(self.groupBox) +        self.groupBox_16.setFlat(True) +        self.groupBox_16.setObjectName("groupBox_16") +        self.horizontalLayout_11 = QtGui.QHBoxLayout(self.groupBox_16) +        self.horizontalLayout_11.setContentsMargins(-1, 0, -1, 0) +        self.horizontalLayout_11.setObjectName("horizontalLayout_11") +        self.label_23 = QtGui.QLabel(self.groupBox_16) +        self.label_23.setObjectName("label_23") +        self.horizontalLayout_11.addWidget(self.label_23) +        self.lineEdit_20 = QtGui.QLineEdit(self.groupBox_16) +        self.lineEdit_20.setObjectName("lineEdit_20") +        self.horizontalLayout_11.addWidget(self.lineEdit_20) +        self.pushButton_2 = QtGui.QPushButton(self.groupBox_16) +        self.pushButton_2.setObjectName("pushButton_2") +        self.horizontalLayout_11.addWidget(self.pushButton_2) +        self.pushButton_3 = QtGui.QPushButton(self.groupBox_16) +        self.pushButton_3.setObjectName("pushButton_3") +        self.horizontalLayout_11.addWidget(self.pushButton_3) +        self.checkBox_4 = QtGui.QCheckBox(self.groupBox_16) +        self.checkBox_4.setObjectName("checkBox_4") +        self.horizontalLayout_11.addWidget(self.checkBox_4) +        self.verticalLayout_6.addWidget(self.groupBox_16) +        self.groupBox_10 = QtGui.QGroupBox(self.groupBox) +        self.groupBox_10.setObjectName("groupBox_10") +        self.horizontalLayout_4 = QtGui.QHBoxLayout(self.groupBox_10) +        self.horizontalLayout_4.setObjectName("horizontalLayout_4") +        self.lcdNumber_3 = QtGui.QLCDNumber(self.groupBox_10) +        self.lcdNumber_3.setMaximumSize(QtCore.QSize(100, 16777215)) +        self.lcdNumber_3.setNumDigits(4) +        self.lcdNumber_3.setSegmentStyle(QtGui.QLCDNumber.Flat) +        self.lcdNumber_3.setProperty("value", QtCore.QVariant(0.0)) +        self.lcdNumber_3.setObjectName("lcdNumber_3") +        self.horizontalLayout_4.addWidget(self.lcdNumber_3) +        self.lcdNumber_abs2 = QtGui.QLCDNumber(self.groupBox_10) +        self.lcdNumber_abs2.setMaximumSize(QtCore.QSize(100, 16777215)) +        self.lcdNumber_abs2.setFrameShadow(QtGui.QFrame.Raised) +        self.lcdNumber_abs2.setNumDigits(4) +        self.lcdNumber_abs2.setSegmentStyle(QtGui.QLCDNumber.Flat) +        self.lcdNumber_abs2.setObjectName("lcdNumber_abs2") +        self.horizontalLayout_4.addWidget(self.lcdNumber_abs2) +        self.progressBar_2 = QtGui.QProgressBar(self.groupBox_10) +        self.progressBar_2.setMaximumSize(QtCore.QSize(200, 100)) +        self.progressBar_2.setProperty("value", QtCore.QVariant(0)) +        self.progressBar_2.setObjectName("progressBar_2") +        self.horizontalLayout_4.addWidget(self.progressBar_2) +        self.comboBox_2 = QtGui.QComboBox(self.groupBox_10) +        self.comboBox_2.setMinimumSize(QtCore.QSize(200, 0)) +        self.comboBox_2.setObjectName("comboBox_2") +        self.horizontalLayout_4.addWidget(self.comboBox_2) +        self.verticalLayout_6.addWidget(self.groupBox_10) +        self.tableWidget_2 = TableWidget_ABS(self.groupBox) +        self.tableWidget_2.setAutoFillBackground(True) +        self.tableWidget_2.setFrameShape(QtGui.QFrame.StyledPanel) +        self.tableWidget_2.setFrameShadow(QtGui.QFrame.Raised) +        self.tableWidget_2.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) +        self.tableWidget_2.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) +        self.tableWidget_2.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) +        self.tableWidget_2.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerItem) +        self.tableWidget_2.setObjectName("tableWidget_2") +        self.tableWidget_2.setColumnCount(6) +        self.tableWidget_2.setRowCount(0) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(0, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(1, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(2, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(3, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(4, item) +        item = QtGui.QTableWidgetItem() +        self.tableWidget_2.setHorizontalHeaderItem(5, item) +        self.tableWidget_2.horizontalHeader().setStretchLastSection(True) +        self.verticalLayout_6.addWidget(self.tableWidget_2) +        self.verticalLayout_9.addWidget(self.groupBox) +        self.tabWidget.addTab(self.tab_5, "") +        self.tab_6 = QtGui.QWidget() +        self.tab_6.setObjectName("tab_6") +        self.verticalLayout_11 = QtGui.QVBoxLayout(self.tab_6) +        self.verticalLayout_11.setObjectName("verticalLayout_11") +        self.groupBox_5 = QtGui.QGroupBox(self.tab_6) +        self.groupBox_5.setObjectName("groupBox_5") +        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_5) +        self.gridLayout_2.setObjectName("gridLayout_2") +        self.lineEdit_4 = QtGui.QLineEdit(self.groupBox_5) +        self.lineEdit_4.setObjectName("lineEdit_4") +        self.gridLayout_2.addWidget(self.lineEdit_4, 0, 2, 1, 1) +        self.toolButton_3 = QtGui.QToolButton(self.groupBox_5) +        self.toolButton_3.setObjectName("toolButton_3") +        self.gridLayout_2.addWidget(self.toolButton_3, 0, 3, 1, 1) +        self.lineEdit_5 = QtGui.QLineEdit(self.groupBox_5) +        self.lineEdit_5.setObjectName("lineEdit_5") +        self.gridLayout_2.addWidget(self.lineEdit_5, 1, 2, 1, 1) +        self.toolButton_2 = QtGui.QToolButton(self.groupBox_5) +        self.toolButton_2.setObjectName("toolButton_2") +        self.gridLayout_2.addWidget(self.toolButton_2, 1, 3, 1, 1) +        self.label_7 = QtGui.QLabel(self.groupBox_5) +        self.label_7.setObjectName("label_7") +        self.gridLayout_2.addWidget(self.label_7, 2, 0, 2, 2) +        self.lineEdit_6 = QtGui.QLineEdit(self.groupBox_5) +        self.lineEdit_6.setObjectName("lineEdit_6") +        self.gridLayout_2.addWidget(self.lineEdit_6, 2, 2, 2, 1) +        self.toolButton = QtGui.QToolButton(self.groupBox_5) +        self.toolButton.setObjectName("toolButton") +        self.gridLayout_2.addWidget(self.toolButton, 2, 3, 2, 1) +        self.label_5 = QtGui.QLabel(self.groupBox_5) +        self.label_5.setObjectName("label_5") +        self.gridLayout_2.addWidget(self.label_5, 0, 0, 1, 1) +        self.label_6 = QtGui.QLabel(self.groupBox_5) +        self.label_6.setObjectName("label_6") +        self.gridLayout_2.addWidget(self.label_6, 1, 0, 1, 1) +        self.label_21 = QtGui.QLabel(self.groupBox_5) +        self.label_21.setObjectName("label_21") +        self.gridLayout_2.addWidget(self.label_21, 4, 0, 1, 1) +        self.lineEdit_19 = QtGui.QLineEdit(self.groupBox_5) +        self.lineEdit_19.setObjectName("lineEdit_19") +        self.gridLayout_2.addWidget(self.lineEdit_19, 4, 2, 1, 1) +        self.toolButton_8 = QtGui.QToolButton(self.groupBox_5) +        self.toolButton_8.setObjectName("toolButton_8") +        self.gridLayout_2.addWidget(self.toolButton_8, 4, 3, 1, 1) +        self.verticalLayout_11.addWidget(self.groupBox_5) +        self.groupBox_7 = QtGui.QGroupBox(self.tab_6) +        self.groupBox_7.setObjectName("groupBox_7") +        self.formLayout_3 = QtGui.QFormLayout(self.groupBox_7) +        self.formLayout_3.setObjectName("formLayout_3") +        self.lineEdit_7 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_7.setObjectName("lineEdit_7") +        self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.lineEdit_7) +        self.lineEdit_9 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_9.setObjectName("lineEdit_9") +        self.formLayout_3.setWidget(4, QtGui.QFormLayout.FieldRole, self.lineEdit_9) +        self.lineEdit_10 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_10.setObjectName("lineEdit_10") +        self.formLayout_3.setWidget(7, QtGui.QFormLayout.FieldRole, self.lineEdit_10) +        self.lineEdit_11 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_11.setObjectName("lineEdit_11") +        self.formLayout_3.setWidget(9, QtGui.QFormLayout.FieldRole, self.lineEdit_11) +        self.label_13 = QtGui.QLabel(self.groupBox_7) +        self.label_13.setObjectName("label_13") +        self.formLayout_3.setWidget(11, QtGui.QFormLayout.LabelRole, self.label_13) +        self.lineEdit_12 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_12.setObjectName("lineEdit_12") +        self.formLayout_3.setWidget(11, QtGui.QFormLayout.FieldRole, self.lineEdit_12) +        self.label_10 = QtGui.QLabel(self.groupBox_7) +        self.label_10.setObjectName("label_10") +        self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_10) +        self.label_8 = QtGui.QLabel(self.groupBox_7) +        self.label_8.setObjectName("label_8") +        self.formLayout_3.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_8) +        self.label_9 = QtGui.QLabel(self.groupBox_7) +        self.label_9.setObjectName("label_9") +        self.formLayout_3.setWidget(7, QtGui.QFormLayout.LabelRole, self.label_9) +        self.label_12 = QtGui.QLabel(self.groupBox_7) +        self.label_12.setObjectName("label_12") +        self.formLayout_3.setWidget(9, QtGui.QFormLayout.LabelRole, self.label_12) +        self.lineEdit_13 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_13.setObjectName("lineEdit_13") +        self.formLayout_3.setWidget(13, QtGui.QFormLayout.FieldRole, self.lineEdit_13) +        self.label_14 = QtGui.QLabel(self.groupBox_7) +        self.label_14.setObjectName("label_14") +        self.formLayout_3.setWidget(13, QtGui.QFormLayout.LabelRole, self.label_14) +        self.label_11 = QtGui.QLabel(self.groupBox_7) +        self.label_11.setObjectName("label_11") +        self.formLayout_3.setWidget(14, QtGui.QFormLayout.LabelRole, self.label_11) +        self.lineEdit_8 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_8.setObjectName("lineEdit_8") +        self.formLayout_3.setWidget(14, QtGui.QFormLayout.FieldRole, self.lineEdit_8) +        self.lineEdit_16 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_16.setObjectName("lineEdit_16") +        self.formLayout_3.setWidget(15, QtGui.QFormLayout.FieldRole, self.lineEdit_16) +        self.label_17 = QtGui.QLabel(self.groupBox_7) +        self.label_17.setObjectName("label_17") +        self.formLayout_3.setWidget(15, QtGui.QFormLayout.LabelRole, self.label_17) +        self.label_18 = QtGui.QLabel(self.groupBox_7) +        self.label_18.setObjectName("label_18") +        self.formLayout_3.setWidget(16, QtGui.QFormLayout.LabelRole, self.label_18) +        self.lineEdit_17 = QtGui.QLineEdit(self.groupBox_7) +        self.lineEdit_17.setObjectName("lineEdit_17") +        self.formLayout_3.setWidget(16, QtGui.QFormLayout.FieldRole, self.lineEdit_17) +        self.verticalLayout_11.addWidget(self.groupBox_7) +        self.pushButton_config_save = QtGui.QPushButton(self.tab_6) +        self.pushButton_config_save.setObjectName("pushButton_config_save") +        self.verticalLayout_11.addWidget(self.pushButton_config_save) +        self.tabWidget.addTab(self.tab_6, "") +        self.horizontalLayout_9.addWidget(self.tabWidget) +        MainWindow.setCentralWidget(self.centralwidget) +        self.statusbar = QtGui.QStatusBar(MainWindow) +        self.statusbar.setObjectName("statusbar") +        MainWindow.setStatusBar(self.statusbar) +        self.dockWidget = QtGui.QDockWidget(MainWindow) +        self.dockWidget.setFeatures(QtGui.QDockWidget.DockWidgetFloatable|QtGui.QDockWidget.DockWidgetMovable) +        self.dockWidget.setObjectName("dockWidget") +        self.dockWidgetContents = QtGui.QWidget() +        self.dockWidgetContents.setObjectName("dockWidgetContents") +        self.formLayout = QtGui.QFormLayout(self.dockWidgetContents) +        self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) +        self.formLayout.setObjectName("formLayout") +        self.checkBox_chroot = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_chroot.setObjectName("checkBox_chroot") +        self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.checkBox_chroot) +        self.checkBox_download = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_download.setObjectName("checkBox_download") +        self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.checkBox_download) +        self.checkBox_force = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_force.setObjectName("checkBox_force") +        self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.checkBox_force) +        self.checkBox_syncinstall = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_syncinstall.setObjectName("checkBox_syncinstall") +        self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.checkBox_syncinstall) +        self.checkBox_clean = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_clean.setEnabled(True) +        self.checkBox_clean.setObjectName("checkBox_clean") +        self.formLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.checkBox_clean) +        self.checkBox_remove = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_remove.setObjectName("checkBox_remove") +        self.formLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.checkBox_remove) +        self.checkBox_holdver = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_holdver.setObjectName("checkBox_holdver") +        self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.checkBox_holdver) +        self.checkBox_install = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_install.setObjectName("checkBox_install") +        self.formLayout.setWidget(9, QtGui.QFormLayout.LabelRole, self.checkBox_install) +        self.checkBox_ignore = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_ignore.setObjectName("checkBox_ignore") +        self.formLayout.setWidget(10, QtGui.QFormLayout.LabelRole, self.checkBox_ignore) +        self.checkBox_bumpver = QtGui.QCheckBox(self.dockWidgetContents) +        self.checkBox_bumpver.setObjectName("checkBox_bumpver") +        self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.checkBox_bumpver) +        self.dockWidget.setWidget(self.dockWidgetContents) +        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dockWidget) +        self.dockWidget_2 = QtGui.QDockWidget(MainWindow) +        self.dockWidget_2.setMinimumSize(QtCore.QSize(79, 99)) +        self.dockWidget_2.setFloating(False) +        self.dockWidget_2.setFeatures(QtGui.QDockWidget.DockWidgetFloatable|QtGui.QDockWidget.DockWidgetMovable) +        self.dockWidget_2.setObjectName("dockWidget_2") +        self.dockWidgetContents_3 = QtGui.QWidget() +        self.dockWidgetContents_3.setObjectName("dockWidgetContents_3") +        self.verticalLayout = QtGui.QVBoxLayout(self.dockWidgetContents_3) +        self.verticalLayout.setObjectName("verticalLayout") +        self.textEdit_dock = QtGui.QTextEdit(self.dockWidgetContents_3) +        self.textEdit_dock.setFrameShape(QtGui.QFrame.WinPanel) +        self.textEdit_dock.setFrameShadow(QtGui.QFrame.Plain) +        self.textEdit_dock.setObjectName("textEdit_dock") +        self.verticalLayout.addWidget(self.textEdit_dock) +        self.dockWidget_2.setWidget(self.dockWidgetContents_3) +        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(4), self.dockWidget_2) +        self.dockWidget_3 = QtGui.QDockWidget(MainWindow) +        self.dockWidget_3.setMinimumSize(QtCore.QSize(187, 150)) +        self.dockWidget_3.setFeatures(QtGui.QDockWidget.DockWidgetFloatable|QtGui.QDockWidget.DockWidgetMovable) +        self.dockWidget_3.setObjectName("dockWidget_3") +        self.dockWidgetContents_6 = QtGui.QWidget() +        self.dockWidgetContents_6.setObjectName("dockWidgetContents_6") +        self.verticalLayout_3 = QtGui.QVBoxLayout(self.dockWidgetContents_6) +        self.verticalLayout_3.setObjectName("verticalLayout_3") +        self.checkBox_2 = QtGui.QCheckBox(self.dockWidgetContents_6) +        self.checkBox_2.setChecked(False) +        self.checkBox_2.setTristate(True) +        self.checkBox_2.setObjectName("checkBox_2") +        self.verticalLayout_3.addWidget(self.checkBox_2) +        self.pushButton_4 = QtGui.QPushButton(self.dockWidgetContents_6) +        self.pushButton_4.setObjectName("pushButton_4") +        self.verticalLayout_3.addWidget(self.pushButton_4) +        self.pushButton_stop = QtGui.QPushButton(self.dockWidgetContents_6) +        self.pushButton_stop.setObjectName("pushButton_stop") +        self.verticalLayout_3.addWidget(self.pushButton_stop) +        self.pushButton_go = QtGui.QPushButton(self.dockWidgetContents_6) +        self.pushButton_go.setObjectName("pushButton_go") +        self.verticalLayout_3.addWidget(self.pushButton_go) +        self.dockWidget_3.setWidget(self.dockWidgetContents_6) +        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dockWidget_3) +        self.menubar = QtGui.QMenuBar(MainWindow) +        self.menubar.setGeometry(QtCore.QRect(0, 0, 923, 24)) +        self.menubar.setObjectName("menubar") +        self.menuWelcome = QtGui.QMenu(self.menubar) +        self.menuWelcome.setEnabled(True) +        self.menuWelcome.setObjectName("menuWelcome") +        self.menuAbout = QtGui.QMenu(self.menubar) +        self.menuAbout.setObjectName("menuAbout") +        self.menuRepository_2 = QtGui.QMenu(self.menubar) +        self.menuRepository_2.setObjectName("menuRepository_2") +        MainWindow.setMenuBar(self.menubar) +        self.actionExit = QtGui.QAction(MainWindow) +        self.actionExit.setObjectName("actionExit") +        self.actionToggle_options = QtGui.QAction(MainWindow) +        self.actionToggle_options.setObjectName("actionToggle_options") +        self.actionToggle_output_window = QtGui.QAction(MainWindow) +        self.actionToggle_output_window.setObjectName("actionToggle_output_window") +        self.actionUpdate = QtGui.QAction(MainWindow) +        self.actionUpdate.setObjectName("actionUpdate") +        self.actionUpdate_group_list = QtGui.QAction(MainWindow) +        self.actionUpdate_group_list.setObjectName("actionUpdate_group_list") +        self.actionCreate_new_PKG = QtGui.QAction(MainWindow) +        self.actionCreate_new_PKG.setObjectName("actionCreate_new_PKG") +        self.actionAbout = QtGui.QAction(MainWindow) +        self.actionAbout.setObjectName("actionAbout") +        self.actionHelp = QtGui.QAction(MainWindow) +        self.actionHelp.setObjectName("actionHelp") +        self.actionCheck_for_REPO_problems = QtGui.QAction(MainWindow) +        self.actionCheck_for_REPO_problems.setObjectName("actionCheck_for_REPO_problems") +        self.actionSave_output = QtGui.QAction(MainWindow) +        self.actionSave_output.setObjectName("actionSave_output") +        self.actionHelp_2 = QtGui.QAction(MainWindow) +        self.actionHelp_2.setObjectName("actionHelp_2") +        self.actionSave_output_window_to_file = QtGui.QAction(MainWindow) +        self.actionSave_output_window_to_file.setObjectName("actionSave_output_window_to_file") +        self.actionUpdate_packages_from_ABS = QtGui.QAction(MainWindow) +        self.actionUpdate_packages_from_ABS.setObjectName("actionUpdate_packages_from_ABS") +        self.actionCreate_new_package = QtGui.QAction(MainWindow) +        self.actionCreate_new_package.setObjectName("actionCreate_new_package") +        self.actionUpdate_group_list_2 = QtGui.QAction(MainWindow) +        self.actionUpdate_group_list_2.setObjectName("actionUpdate_group_list_2") +        self.actionCheck_for_problems = QtGui.QAction(MainWindow) +        self.actionCheck_for_problems.setObjectName("actionCheck_for_problems") +        self.actionAbout_2 = QtGui.QAction(MainWindow) +        self.actionAbout_2.setObjectName("actionAbout_2") +        self.actionHelp_3 = QtGui.QAction(MainWindow) +        self.actionHelp_3.setObjectName("actionHelp_3") +        self.actionQuit = QtGui.QAction(MainWindow) +        self.actionQuit.setObjectName("actionQuit") +        self.actionAbout_3 = QtGui.QAction(MainWindow) +        self.actionAbout_3.setObjectName("actionAbout_3") +        self.actionHelp_4 = QtGui.QAction(MainWindow) +        self.actionHelp_4.setObjectName("actionHelp_4") +        self.actionUpdate_group_list_abs = QtGui.QAction(MainWindow) +        self.actionUpdate_group_list_abs.setObjectName("actionUpdate_group_list_abs") +        self.actionLoad_configuration_file = QtGui.QAction(MainWindow) +        self.actionLoad_configuration_file.setObjectName("actionLoad_configuration_file") +        self.actionSave_All_options_including_make_package_option = QtGui.QAction(MainWindow) +        self.actionSave_All_options_including_make_package_option.setObjectName("actionSave_All_options_including_make_package_option") +        self.action_Save_make_package_options = QtGui.QAction(MainWindow) +        self.action_Save_make_package_options.setObjectName("action_Save_make_package_options") +        self.actionReset_UI = QtGui.QAction(MainWindow) +        self.actionReset_UI.setObjectName("actionReset_UI") +        self.actionReload_Group_packages = QtGui.QAction(MainWindow) +        self.actionReload_Group_packages.setObjectName("actionReload_Group_packages") +        self.actionReload_ABS_Group_packages = QtGui.QAction(MainWindow) +        self.actionReload_ABS_Group_packages.setObjectName("actionReload_ABS_Group_packages") +        self.actionSearch_current_Repository = QtGui.QAction(MainWindow) +        self.actionSearch_current_Repository.setObjectName("actionSearch_current_Repository") +        self.actionSearch_All_This_includes_ABS = QtGui.QAction(MainWindow) +        self.actionSearch_All_This_includes_ABS.setObjectName("actionSearch_All_This_includes_ABS") +        self.actionRemove_Group = QtGui.QAction(MainWindow) +        self.actionRemove_Group.setObjectName("actionRemove_Group") +        self.menuWelcome.addAction(self.action_Save_make_package_options) +        self.menuWelcome.addAction(self.actionSave_All_options_including_make_package_option) +        self.menuWelcome.addSeparator() +        self.menuWelcome.addAction(self.actionSave_output_window_to_file) +        self.menuWelcome.addSeparator() +        self.menuWelcome.addAction(self.actionLoad_configuration_file) +        self.menuWelcome.addSeparator() +        self.menuWelcome.addAction(self.actionExit) +        self.menuAbout.addAction(self.actionAbout_3) +        self.menuAbout.addAction(self.actionReset_UI) +        self.menuRepository_2.addAction(self.actionCheck_for_problems) +        self.menuRepository_2.addSeparator() +        self.menuRepository_2.addAction(self.actionUpdate_group_list_2) +        self.menuRepository_2.addAction(self.actionUpdate_group_list_abs) +        self.menuRepository_2.addSeparator() +        self.menuRepository_2.addAction(self.actionReload_Group_packages) +        self.menuRepository_2.addAction(self.actionReload_ABS_Group_packages) +        self.menuRepository_2.addSeparator() +        self.menuRepository_2.addSeparator() +        self.menuRepository_2.addAction(self.actionRemove_Group) +        self.menubar.addAction(self.menuWelcome.menuAction()) +        self.menubar.addAction(self.menuRepository_2.menuAction()) +        self.menubar.addAction(self.menuAbout.menuAction()) + +        self.retranslateUi(MainWindow) +        self.tabWidget.setCurrentIndex(0) +        self.tabWidget_2.setCurrentIndex(0) +        QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL("triggered()"), MainWindow.close) +        QtCore.QMetaObject.connectSlotsByName(MainWindow) + + +#------------- + +        self.tabWidget.setCurrentIndex(0) +        #set location column to 5, this is enough to hide it but still accessiable. +        self.tableWidget.horizontalHeader().resizeSection(4,5) +        self.tableWidget_2.horizontalHeader().resizeSection(4,5) +        #set order column to 20 wide +        self.tableWidget.horizontalHeader().resizeSection(0,20) +        self.tableWidget_2.horizontalHeader().resizeSection(0,20) +        #self.tableWidget_2.horizontalHeader().resizeSection(2,1) +        self.all_settings={} +        self.thread = MyThread() +        self.thread_pkg_load = load_pkg_thread() +        self.run_cmd_thread = run_cmd_thread() +        self.upload_file_thread = run_cmd_thread() +        sys.stdout = OutLog(self.textEdit,out=sys.__stdout__) +        sys.stderr = OutLog(self.textEdit,out=sys.__stdout__) +        #self.DLG = search.BookmarksDlg(['uno', 'dos'], None) +        #self.DLG.hide() + + + + + + +        #enable/disable t +        QtCore.QObject.connect(self.run_cmd_thread, QtCore.SIGNAL("enable_tab2(bool)"), self.enable_tab2) +        QtCore.QObject.connect(self.upload_file_thread, QtCore.SIGNAL("enable_tab2(bool)"), self.enable_tab2) +        QtCore.QObject.connect(self.run_cmd_thread, SIGNAL("finished()"), self.run_cmd_thread_finished) +        QtCore.QObject.connect(self.upload_file_thread, SIGNAL("finished()"), self.upload_thread_finished) + + +        #connect pkgload thread to insert item +        QtCore.QObject.connect(self.thread_pkg_load, QtCore.SIGNAL("insertItem(PyQt_PyObject)"), self.insert_item) +        #thread to enable table after pkgload is finished +        QtCore.QObject.connect(self.thread_pkg_load, SIGNAL("pkg_load_finished(bool)"), self.set_repo_box) +        QtCore.QObject.connect(self.thread_pkg_load, SIGNAL("pkg_load_finished(bool)"), self.print_finished_msg) +        #connect up insert item for ABS table +        QtCore.QObject.connect(self.thread_pkg_load, QtCore.SIGNAL("insertItem_ABS(PyQt_PyObject)"), self.insert_item_ABS) + +        #group box change to populate pkglist +        QtCore.QObject.connect(self.comboBox, QtCore.SIGNAL("currentIndexChanged(QString)"), +              self.onIndexChanged) +        #group box change to populate ABS pkglist +        QtCore.QObject.connect(self.comboBox_2, QtCore.SIGNAL("currentIndexChanged(QString)"), +              self.onIndexChanged_ABS) + +        # makepkg button +        QtCore.QObject.connect(self.pushButton_go, QtCore.SIGNAL("clicked()"), self.buttonpushed) +        #stop button +        QtCore.QObject.connect(self.pushButton_stop, QtCore.SIGNAL("clicked()"), self.thread.toggle) +        #thow text to output window +        QtCore.QObject.connect(self.thread, QtCore.SIGNAL("update(QString)"), self.update_ouputwindow) +        QtCore.QObject.connect(self.thread, QtCore.SIGNAL("update_build(QString)"), self.update_build) +        QtCore.QObject.connect(self.run_cmd_thread, QtCore.SIGNAL("update(QString)"), self.update_ouputwindow) +        QtCore.QObject.connect(self.run_cmd_thread, QtCore.SIGNAL("update_build(QString)"), self.update_build) +        QtCore.QObject.connect(self.upload_file_thread, QtCore.SIGNAL("update(QString)"), self.update_ouputwindow) +        QtCore.QObject.connect(self.upload_file_thread, QtCore.SIGNAL("update_build(QString)"), self.update_build) + + + +        #update table with status +        QtCore.QObject.connect(self.thread, QtCore.SIGNAL("update_StatusCell(int,QString,QString,int)"),self.update_status_cell) +        #clear output list +        QtCore.QObject.connect(self.pushButton_4, QtCore.SIGNAL("clicked()"), self.clear_output) +        # select_all packages button +        QtCore.QObject.connect(self.pushButton_9, QtCore.SIGNAL("clicked()"), self.select_all) +        # select_none packages button +        QtCore.QObject.connect(self.pushButton_8, QtCore.SIGNAL("clicked()"), self.select_none) + +        #enable makpkg button after thread finishs +        #do we need this +        QtCore.QObject.connect(self.thread, SIGNAL("finished()"), self.enable_table) + +        #update lcd selected pkgs +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL("itemSelectionChanged()"), self.updateLCDtotal) +        #update abs lcd +        QtCore.QObject.connect(self.tableWidget_2, QtCore.SIGNAL("itemSelectionChanged()"), self.updateLCDtotal_pkg_ABS) +        #update progress bar +        QtCore.QObject.connect(self.thread,QtCore.SIGNAL("update_progress_bar(int)"),self.update_progress_bar) +        QtCore.QObject.connect(self.thread_pkg_load,           QtCore.SIGNAL("update_progress_bar_ABS(float)"),self.update_progress_bar_abs) +        QtCore.QObject.connect(self.thread_pkg_load,           QtCore.SIGNAL("update_progress_bar(float)"),self.update_progress_bar) +        QtCore.QObject.connect(self.thread_pkg_load,           QtCore.SIGNAL("pkg_load_skipped(PyQt_PyObject)"), self.print_skipped_pkg) + + +    #ALL the actions from the table widget +        #edit pkgbuild +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL("edit()"), self.editPkgbuild) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('changeLogAction()'), self.actionChangeLog) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('buildLogAction()'), self.viewbuildLog) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('launchxterm()'), self.launchxterm ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('exploreAction()'), self.exploreAction ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('backupAction()'), self.backupAction) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('updateAction()'), self.updateAction ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('depAction()'), self.depAction ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('MD5Action()'), self.MD5Action ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('removeAction()'), self.removepkg ) +        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('promoteAction()'), self.promoteAction ) +    #ABS TABLE ACTIONS +        QtCore.QObject.connect(self.tableWidget_2 , QtCore.SIGNAL('viewActionABS()') , self.viewABSAction) +        QtCore.QObject.connect(self.tableWidget_2 ,QtCore.SIGNAL('launchxtermABS()'), self.launchxtermABSAction) +        QtCore.QObject.connect(self.tableWidget_2 ,QtCore.SIGNAL('exploreActionABS()'),self.exploreABSAction) +        QtCore.QObject.connect(self.tableWidget_2 ,QtCore.SIGNAL('CopyABSAction()'), self.copyABSAction) +        QtCore.QObject.connect(self.toolButton_5, QtCore.SIGNAL("clicked()"), self.select_newpkg_ABS_dir) +        QtCore.QObject.connect(self.toolButton_7, QtCore.SIGNAL("clicked()"), self.open_copy_location) +        QtCore.QObject.connect(self.toolButton_8, QtCore.SIGNAL("clicked()"), self.select_profile_dir) + + + +    #Top menu actions +        QtCore.QObject.connect(self.actionSave_output_window_to_file, QtCore.SIGNAL("triggered()"), self.save_text_to_file) +        QtCore.QObject.connect(self.actionLoad_configuration_file, QtCore.SIGNAL("triggered()"), self.load_settings_from_file) +        QtCore.QObject.connect(self.actionRemove_Group, QtCore.SIGNAL("triggered()"), self.removeGroup) +        #reset_ui/about +        QtCore.QObject.connect(self.actionAbout_3, QtCore.SIGNAL("triggered()"), self.about) +        QtCore.QObject.connect(self.actionReset_UI, QtCore.SIGNAL("triggered()"), self.resetui) +        QtCore.QObject.connect(self.actionCheck_for_problems, QtCore.SIGNAL("triggered()"), self.repo_check_for_problems) +        QtCore.QObject.connect(self.actionSearch_current_Repository, QtCore.SIGNAL("triggered()"), self.show_search) + + +        #reload group boxes +        QtCore.QObject.connect(self.actionReload_Group_packages, QtCore.SIGNAL("triggered()"), self.populate_group_box) +        QtCore.QObject.connect(self.actionReload_ABS_Group_packages, QtCore.SIGNAL("triggered()"), self.populate_abs_group_box) +        #update group list +        QtCore.QObject.connect(self.actionUpdate_group_list_2, QtCore.SIGNAL("triggered()"), self.populate_repo) +        QtCore.QObject.connect(self.actionUpdate_group_list_abs, QtCore.SIGNAL("triggered()"), self.populate_abs_repo) +        #search box for repp +        QtCore.QObject.connect(self.lineEdit_21, QtCore.SIGNAL("textChanged (const QString&)"), self.searchRepoPkglist) +        QtCore.QObject.connect(self.lineEdit_20, QtCore.SIGNAL("textChanged (const QString&)"), self.searchRepoABSPkglist) +        QtCore.QObject.connect(self.pushButton_5, QtCore.SIGNAL("clicked()"), self.clear_searchbox) +        QtCore.QObject.connect(self.pushButton_3, QtCore.SIGNAL("clicked()"), self.clear_searchbox_ABS) +        #save options500 +        QtCore.QObject.connect(self.action_Save_make_package_options, QtCore.SIGNAL("triggered()"), self.save_package_options) +        QtCore.QObject.connect(self.actionSave_All_options_including_make_package_option, QtCore.SIGNAL("triggered()"), self.save_all_options) + +    #configuration screen +        QtCore.QObject.connect(self.toolButton_3, QtCore.SIGNAL("clicked()"), self.select_group_dir) +        QtCore.QObject.connect(self.toolButton_2, QtCore.SIGNAL("clicked()"), self.select_abs_dir) +        QtCore.QObject.connect(self.toolButton, QtCore.SIGNAL("clicked()"), self.select_repo_dir) +        QtCore.QObject.connect(self.pushButton_config_save, QtCore.SIGNAL("clicked()"), self.save_config_settings) +        #QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.save_config_settings) + +    #new package screen +        #QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), self.create_new_pkg) +        #QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.reset_pkg_screen) +        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("clicked(QAbstractButton*)"), self.show_which_button) +        QtCore.QObject.connect(self.toolButton_4, QtCore.SIGNAL("clicked()"), self.select_newpkg_dir) + + +    #misc screen +        QtCore.QObject.connect(self.pushButton_sync,   QtCore.SIGNAL("clicked()"), self.run_sync) +        QtCore.QObject.connect(self.create_cd,   QtCore.SIGNAL("clicked()"), self.createcd) +        QtCore.QObject.connect(self.pushbutton_upload,   QtCore.SIGNAL("clicked()"), self.upload_files) + +    def clear_searchbox(self): +        self.lineEdit_21.setText('') +    def clear_searchbox_ABS(self): +        self.lineEdit_20.setText('') + + +    def searchRepoPkglist(self,textValue): +      #  print textValue +        if textValue=='': +            self.select_none() +            return +        if self.checkBox_3.isChecked(): +            return +        list=self.tableWidget.findItems(textValue,Qt.MatchStartsWith) +        self.select_none() +        self.tableWidget.setSortingEnabled(True) +        self.tableWidget.sortItems(1) +        for itr,item in enumerate(list): +            if itr == 1: +                self.tableWidget.scrollToItem(item,3) +            self.tableWidget.setItemSelected(item,True) +        if  self.tableWidget.horizontalScrollBar().value > 5: +            self.tableWidget.horizontalScrollBar().setValue (0) + +    def searchRepoABSPkglist(self,textValue): +      #  print textValue +        if textValue=='': +            self.select_none_ABS() +            return +        if self.checkBox_4.isChecked(): +            return +        list=self.tableWidget_2.findItems(textValue,Qt.MatchStartsWith) +        self.select_none_ABS() +        self.tableWidget_2.setSortingEnabled(True) +        self.tableWidget_2.sortItems(1) +        for itr,item in enumerate(list): +            if itr <= 5 : +                self.tableWidget_2.scrollToItem(item,3) +            self.tableWidget_2.setItemSelected(item,True) +        if  self.tableWidget_2.horizontalScrollBar().value > 5: +            self.tableWidget_2.horizontalScrollBar().setValue (0) + + + +    def show_search(self): +        print "show" +        self.DLG.show() + +    def about(self): +        msg="This is bld2\n An easy to use program to help in the development of LinHes and MythVantage.\n  Written and maintained by James Meyer." +        self.showbox("About me",msg) + +    def resetui(self): +        self.clear_output +        self.enable_tab2(True) +        self.enable_table() +        self.set_repo_box(True) +        self.enable_ABS_table() +        msg="Interface  has been reset" +        self.update_ouputwindow(msg) +        self.showbox("Reset interface", msg,True) + +    def repo_check_for_problems(self): +        print "no problems to report, but I didn't run anything" + +    def show_which_button(self, clicked_button): +        role = QtGui.QDialogButtonBox.buttonRole(self.buttonBox, clicked_button) +        if role == 7: +            self.reset_pkg_screen() +        if role == 0: +            self.create_new_pkg() + +    def update_progress_bar(self,new_value): +        self.progressBar.setValue(new_value) + +    def update_progress_bar_abs(self,new_value): +        self.progressBar_2.setValue(new_value) + +    def updateLCDtotal_pkg(self): +    # updates LCD display with the total selected +        num = self.tableWidget.rowCount() +        self.lcdNumber_2.display(num) + +    def updateLCDtotal(self): +    # updates LCD display with the total selected +        num = self.tableWidget.get_num_selected() +        self.lcdNumber.display(num) + +    def updateLCDtotal_pkg_ABS(self): +    # updates LCD display with the total selected +        num = self.tableWidget_2.get_num_selected() +        self.lcdNumber_abs2.display(num) + +    def updateLCDtotal_ABS(self): +    # updates LCD display with the total selected +        num = self.tableWidget_2.rowCount() +        self.lcdNumber_3.display(num) + +    def clear_output(self): +        self.textEdit.clear() +        self.textEdit_dock.clear() + +    def update_build(self,line): +        boxState= self.checkBox_2.checkState() +        PrintBoth = False +        if boxState == 0: +            return +        elif boxState == 1: +            PrintBoth = False +        elif boxState == 2: +            PrintBoth = True +        self.update_ouputwindow(line,PrintBoth) + +    def update_ouputwindow(self,line,PrintBoth=True): + +        self.textEdit.append(line) +        if PrintBoth: +            self.textEdit_dock.append(line) +        #self.textEdit.moveCursor(QtGui.QTextCursor.End) +        #self.textEdit_dock.moveCursor(QtGui.QTextCursor.End) +        self.textEdit.verticalScrollBar().setValue(self.textEdit.verticalScrollBar().maximum()) +        self.textEdit_dock.verticalScrollBar().setValue(self.textEdit_dock.verticalScrollBar().maximum()) +        self.textEdit.moveCursor(QtGui.QTextCursor.End) +        self.textEdit_dock.moveCursor(QtGui.QTextCursor.End) + +    def run_cmd_thread_finished(self): +        itemText="Finished with background job" +        self.update_ouputwindow(itemText) +        self.showbox("Command", "Finished!",True) + + +    def upload_thread_finished(self): +        itemText="File upload finished" +        self.update_ouputwindow(itemText) +        self.showbox("File upload", "Finished!",True) + + + +    def print_finished_msg(self,Value): +        outText="Finished Loading Packages!!" +        self.update_ouputwindow(outText) +        self.tableWidget.setSortingEnabled(True) +        self.tableWidget_2.setSortingEnabled(True) +        columnlist=[1,2,3,5] +        for i in columnlist: +            self.tableWidget.resizeColumnToContents(i) +            self.tableWidget_2.resizeColumnToContents(i) + +    def print_skipped_pkg(self,skipped): +        self.update_ouputwindow(sepLine) +        outText="These packages were skipped" +        self.update_ouputwindow(outText,False) +        for line in skipped: +            self.update_ouputwindow(line,False) +            #self.update_outputwindow(line,False) +        outText="Number of skipped packages:  %s" %(len(skipped)) +        self.update_ouputwindow(outText,True) + +    def enable_tab2(self,Value): +        self.tabWidget_2.setEnabled(Value) + +    def disable_table(self): + +        self.tableWidget.setEnabled(False) +        self.comboBox.setEnabled(False) +        self.pushButton_8.setEnabled(False) +        self.pushButton_9.setEnabled(False) +        self.disable_go_button() + +    def enable_table(self): + +        self.tableWidget.setEnabled(True) +        self.comboBox.setEnabled(True) +        self.pushButton_8.setEnabled(True) +        self.pushButton_9.setEnabled(True) +        self.enable_go_button() + +    def set_repo_box(self,Value): +        self.comboBox.setEnabled(Value) +        self.comboBox_2.setEnabled(Value) +        if Value: +            self.enable_go_button() +        else: +            self.disable_go_button() + +    def disable_ABS_table(self): +        self.tableWidget_2.setEnabled(False) +        self.comboBox_2.setEnabled(False) + +    def enable_ABS_table(self): +        self.tableWidget_2.setEnabled(True) +        self.comboBox_2.setEnabled(True) + + +    def update_status_cell(self,itemrow,itemText,status,itemcol): +        item = self.tableWidget.item(itemrow,itemcol) +        self.tableWidget.setItemSelected (item, False) +        self.tableWidget.scrollToItem(item,3) +        self.tableWidget.item(itemrow, 2).setText(status,) + +    def update_status_cell_ABS(self,itemrow,itemText,status,itemcol): +        item = self.tableWidget_2.item(itemrow,itemcol) +        self.tableWidget_2.setItemSelected (item, False) +        self.tableWidget_2.scrollToItem(item,3) +        self.tableWidget_2.item(itemrow, 2).setText(status,) + +    def insert_item(self,itemTextList): +        pkgname=itemTextList[0] +        pkgversion=itemTextList[1] +        pkglocation = itemTextList[3] +        pkgdescription=itemTextList[4] +        itr = self.tableWidget.rowCount() +        self.tableWidget.insertRow(itr) +        for i in range(0,6): +            item = QtGui.QTableWidgetItem() +            item.setToolTip(pkgdescription) +            item.setFlags(Qt.ItemIsUserCheckable | +                          Qt.ItemIsEnabled| +                          Qt.ItemIsSelectable) +            if i == 0: +                item.setFlags(Qt.ItemIsUserCheckable | +                              Qt.ItemIsEnabled| +                              Qt.ItemIsSelectable | +                              Qt.ItemIsEditable) +                item.setTextAlignment(Qt.AlignRight) + +            self.tableWidget.setItem(itr, i, item) +        self.tableWidget.item(itr,0).setText("zzz") +        self.tableWidget.item(itr,1).setText(pkgname) +        self.tableWidget.item(itr,2).setText(pkgversion) +        self.tableWidget.item(itr,3).setText("-") +        self.tableWidget.item(itr,4).setText(pkglocation) +        self.tableWidget.item(itr,5).setText(pkgdescription) +        self.tableWidget.item(itr,5).setToolTip(pkgdescription) +        self.updateLCDtotal_pkg() + +    def insert_item_ABS(self,itemTextList): +        pkgname=itemTextList[0] +        pkgversion=itemTextList[1] +        pkglocation = itemTextList[3] +        pkgdescription=itemTextList[4] +        itr = self.tableWidget_2.rowCount() +        self.tableWidget_2.insertRow(itr) +        for i in range(0,6): +            item = QtGui.QTableWidgetItem() +            item.setToolTip(pkgdescription) +            item.setFlags(Qt.ItemIsUserCheckable | +                          Qt.ItemIsEnabled| +                          Qt.ItemIsSelectable) +            if i == 0: +                item.setFlags(Qt.ItemIsUserCheckable | +                              Qt.ItemIsEnabled| +                              Qt.ItemIsSelectable | +                              Qt.ItemIsEditable) +            self.tableWidget_2.setItem(itr, i, item) + +        self.tableWidget_2.item(itr,1).setText(pkgname) +        self.tableWidget_2.item(itr,2).setText(pkgversion) +        self.tableWidget_2.item(itr,3).setText("-") +        self.tableWidget_2.item(itr,4).setText(pkglocation) +        self.tableWidget_2.item(itr,5).setText(pkgdescription) +        self.updateLCDtotal_ABS() + + +    def populate_pkg_list(self,repo_value): +    # Populate table on package tab +    # read in the group file, locate pkgbuild & parse out the items +        self.update_ouputwindow(sepLine) +        self.set_repo_box(False) +        self.tableWidget.clear() +        self.tableWidget.clearContents() +        self.tableWidget.setSortingEnabled(False) +        self.tableWidget.setRowCount(0) +        filename = self.all_settings['group_file_location'] + "/" + repo_value + ".group" +        outtext="Loading package list from %s" %filename +        self.update_ouputwindow(outtext) +        self.thread_pkg_load.value_init(filename,self.all_settings['repo_location'],"mainrepo") +        headers=[".","Name", "Version", "Status" , "Location", "Description"] +        self.tableWidget.setHorizontalHeaderLabels(headers) + +    def populate_abs_pkg_list(self,abs_repo_value): +    # Populate table on package tab +    # read in the group file, locate pkgbuild & parse out the items +        self.update_ouputwindow(sepLine) +        self.set_repo_box(False) +        self.tableWidget_2.clear() +        self.tableWidget_2.clearContents() +        self.tableWidget_2.setSortingEnabled(False) +        self.tableWidget_2.setRowCount(0) +        filename = self.all_settings['group_file_location'] + "/" + abs_repo_value + ".group" + +        outtext="Loading package list from %s" %filename +        self.update_ouputwindow(outtext) +        self.thread_pkg_load.value_init(filename,self.all_settings['abs_location'],"ABS") +        headers=[".","Name", "Version", "Status" , "Location", "Description"] +        self.tableWidget_2.setHorizontalHeaderLabels(headers) + +    def select_all(self): +        total_rows = self.tableWidget.rowCount() +        self.tableWidget.setRangeSelected(QtGui.QTableWidgetSelectionRange(0,1, total_rows-1, 1), True) + +    def select_none(self): +        total_rows = self.tableWidget.rowCount() +        self.tableWidget.setRangeSelected(QtGui.QTableWidgetSelectionRange(0, 1, total_rows-1, 1), False) + +    def select_none_ABS(self): +        total_rows = self.tableWidget_2.rowCount() +        self.tableWidget_2.setRangeSelected(QtGui.QTableWidgetSelectionRange(0, 1, total_rows-1, 1), False) + + +    def onIndexChanged(self, index): +        global repo_value +        repo_value = index +        self.tableWidget.clear() +        if repo_value: +            t=repo_value, +            #thread.start_new_thread(self.populate_pkg_list, (t)) +            self.populate_pkg_list(repo_value) + +    def onIndexChanged_ABS(self, index): +        global ABS_repo_value +        ABS_repo_value = index +        self.tableWidget_2.clear() +        if ABS_repo_value: +            t=ABS_repo_value, +            #thread.start_new_thread(self.populate_abs_pkg_list, (t)) +            self.populate_abs_pkg_list(ABS_repo_value) + +    def showbox(self,title,message,Modal=True): +        self.Modal=Modal +        self.msgbox = QtGui.QMessageBox() +        self.msgbox.setWindowTitle(title) +        self.msgbox.setText(message) +        self.msgbox.setModal(Modal) +        self.msgbox.show() +        #ialog.setModal (self, bool modal) +        #QMessageBox.information(None,title,message) +        #Dialog.setModal (self, bool modal) +        #msgbox = QMessageBox +        #msgBox.setText("The document has been modified.") +        #msgBox.setInformativeText("Do you want to save your changes?") +        #msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) +        ##msgBox.setDefaultButton(QMessageBox.Save); +        #msgBox.exec + + + +    def buttonpushed(self): +        itemlist=self.tableWidget.selectedItems() +        makepkg_list=[] +        prunedlist = self.tableWidget.keep_col_in_list(itemlist,1) +        if prunedlist == [] : +            self.showbox("Error", "No packages selected") +            itemText="selected package list was empty" +            self.update_ouputwindow(itemText) +        else: +            #grab location from tableWidget +            for item in prunedlist: +                pkglocation=self.tableWidget.pkglocation(item) +                pkgtuple=(item,pkglocation) +                makepkg_list.append(pkgtuple) + +            self.disable_go_button() +            self.disable_table() +            self.thread.render(self.all_settings['makepkg'], makepkg_list,self.get_checkbox_state()) +            self.thread.toggle() + +    def populate_group_box(self): +        postfix=".group" +        dir_list = os.listdir(self.all_settings['group_file_location']) +        self.comboBox.clear() +        self.comboBox.setEnabled(False) +        for file in dir_list: +            if os.path.isfile(self.all_settings['group_file_location']+"/"+file): +                if file.endswith(postfix) and not file.startswith("ABS"): +                    groupname =  file[:-len(postfix)] +                    self.comboBox.addItem(groupname) +        #self.comboBox.setCurrentIndex(1) +        self.comboBox.setEnabled(True) + +    def populate_abs_group_box(self): +        postfix=".group" +        dir_list = os.listdir(self.all_settings['group_file_location']) +        self.comboBox_2.clear() +        self.comboBox_2.setEnabled(False) +        for file in dir_list: +            if os.path.isfile(self.all_settings['group_file_location']+"/"+file): +                if file.endswith(postfix) and file.startswith("ABS"): +                    groupname =  file[:-len(postfix)] +                    self.comboBox_2.addItem(groupname) +        self.comboBox_2.setEnabled(True) + +    def populate_iso_profile(self): +        #populate profile dir for iso +        global isoProfile +        isoProfile=[] +        try: +            profileDir = self.all_settings['profile_iso'] +            os.chdir(str(profileDir)) +        except: +            return + + +        dir_list = os.listdir(".") +        for itr, dir in enumerate(dir_list): +            if os.path.isdir(dir): +                buttontxt_2="%s" %str(dir) +                buttonname="radioButton_iso_%s" %itr +                cmd=('''self.%s = QtGui.QRadioButton('%s',self.groupBox_14)''') %(buttonname,buttontxt_2) +                exec (cmd) +                cmd='''self.%s.setObjectName("self.%s")''' %(buttonname,buttonname) +                exec(cmd) +                if dir == "i686-testing-local-httpd": +                    cmd='''self.%s.setChecked(True)''' %(buttonname) +                    exec(cmd) +                cmd = 'self.verticalLayout_14.addWidget(self.%s)' %buttonname +                exec (cmd) +                blist=(buttontxt_2,buttonname) +                isoProfile.append(blist) + +    def populate_repo(self): +    #  regenerates all the group files +        repodir=self.all_settings['repo_location'] +        os.chdir(str(repodir)) +        dir_list = os.listdir(".") +        for dir in dir_list: +            if os.path.isdir(dir): +                print "found a dir:%s" %dir +                group_list=[] +                dir_walk = dir +                for root, dirs, files in os.walk(dir_walk): +                    #print "walking %s,%s" %(root,dirs) +                    for file in [f for f in files]: +                        if file == "PKGBUILD" : +                            group_list.append(root) +                group_name="%s/%s.group" %(self.all_settings['group_file_location'],dir) +                if group_list != [] : +                    itemText = "Writing out group name: %s" %group_name +                    self.update_ouputwindow(itemText) +                    f = open(group_name,"w") +                    for line in group_list: +                        f.write(line) +                        f.write("\n") +                    f.close() +        os.chdir("..") +        self.populate_group_box() + +    def populate_abs_repo(self): +  #  regenerates all the abs group files +        repodir=self.all_settings['abs_location'] +        os.chdir(str(repodir)) +        dir_list = os.listdir(".") +        for dir in dir_list: +            if os.path.isdir(dir): +                print "found a dir:%s" %dir +                group_list=[] +                dir_walk = dir +                for root, dirs, files in os.walk(dir_walk): +                    #print "walking %s,%s" %(root,dirs) +                    for file in [f for f in files]: +                        if file == "PKGBUILD" : +                            group_list.append(root) +                group_name="%s/ABS-%s.group" %(self.all_settings['group_file_location'],dir) +                if group_list != [] : +                    itemText = "Writing out group name: %s" %group_name +                    self.update_ouputwindow(itemText) +                    f = open(group_name,"w") +                    for line in group_list: +                        f.write(line) +                        f.write("\n") +                    f.close() +        os.chdir("..") +        self.populate_abs_group_box() + + + + +    def disable_go_button(self): +        self.pushButton_go.setEnabled(False) +        self.pushButton_stop.setEnabled(True) +        self.comboBox.setEnabled(False) + +    def enable_go_button(self): +        self.pushButton_go.setEnabled(True) +        self.pushButton_stop.setEnabled(False) +        self.comboBox.setEnabled(True) + +    def find_pkgdir(self): +    #return list of selected pkg locations +        dirlist=[] +        itemlist=self.tableWidget.selectedItems() +        prunedlist = self.tableWidget.keep_col_in_list(itemlist,1) +        if prunedlist == [] : +            self.showbox("Error", "No packages selected") +            itemText="selected package list was empty" +            self.update_ouputwindow(itemText) +        else: +            for item in prunedlist: +                itemText= str(item.text()) +                pkglocation=self.tableWidget.pkglocation(item) +                pkgtuple=(item,pkglocation) +                dirlist.append(pkgtuple) +        return dirlist + +    def find_pkgdir_ABS(self): +        #grab selected items from abs tab and return their location +        dirlist=[] +        itemlist=self.tableWidget_2.selectedItems() +        prunedlist = self.tableWidget_2.keep_col_in_list(itemlist,1) +        if prunedlist == [] : +            self.showbox("Error", "No packages selected") +            itemText="selected package list was empty" +            self.update_ouputwindow(itemText) +        else: +            for item in prunedlist: +                    itemText= str(item.text()) +                    pkglocation=self.tableWidget_2.pkglocation(item) +                    pkgtuple=(item,pkglocation) +                    dirlist.append(pkgtuple) +        return dirlist + +    def findPKGdir(self,directory, spackage): +    #""" +    #    Searches for PKGBUILDS with name recursively in directory. +    #    Returns False if the file was not found. +    #    This is used by promote and update +    #""" +        print "Searching for %s in %s" %(spackage,directory) +        for root, dirs, files in os.walk(directory): +            if "PKGBUILD" in files: +                try: +                        currentfile=root+"/PKGBUILD" +                        package = parched.PKGBUILD(currentfile) +                        pkgname =  str(package.name).strip() +                        pkgversion = str(package.version) +                        if pkgname == spackage: +                            return root +                except Exception, reason: +                    pass +        return False + +    #def search_group_file(self,groupfile,spackage): +    ##""" +    ##    Searches group file for matching spackage name. +    ##    Returns False if the file was not found. +    ##""" +        #filename = bld_config.repo_location + "/" + groupfile + ".group" +        #try: +            #f = open(filename,"r") +            #file_contents = f.readlines() +            #f.close() +        #except: +            #outText =  "couldn't open file to search: %s " %filename +            #self.update_ouputwindow(outText) +            #return False +        #for line in file_contents: +            #currentdir = "%s/%s" %(bld_config.repo_location,line.strip()) +            #currentfile = "%s/PKGBUILD" %(currentdir) +            #if os.path.isfile(currentfile): +                #try: +                    #package = parched.PKGBUILD(currentfile) +                    #pkgname =  str(package.name) +                    #pkgversion = str(package.version) +                    #pkgdescription =  str(package.description) +                    #if pkgname == spackage: +                        #return currentdir +                #except: +                    #continue +        #return False + +    def runcmd_thread(self,cmd): +        os.system(cmd) + +#ABS ACTIONS +    def viewABSAction(self): +        dir_list = self.find_pkgdir_ABS() +        for item,dir  in dir_list: +            itemText= str(item.text()) +            #grab location from tableWidget +            pkglocation=self.tableWidget_2.pkglocation(item) +            filename = "%s/PKGBUILD" %(pkglocation) +            self.update_ouputwindow(sepLine) +            outText ="Viewing: %s" %(filename) +            self.update_ouputwindow(outText) +            cmd = "%s %s" %(self.all_settings['editor'], filename) +            if os.path.exists(filename): +                cmd = cmd, +                thread.start_new_thread(self.runcmd_thread, cmd) +            else: +                outtext="Couldn't open file:%s" %filename +                self.update_ouputwindow(outtext) + +    def launchxtermABSAction(self): +        dir_list = self.find_pkgdir_ABS() +        for item,dir  in dir_list: +            cmd = "%s" %(self.all_settings['konsole']) +            cmd = cmd + " "  + " " + dir +            cmd = cmd, +            thread.start_new_thread(self.runcmd_thread, cmd) + +    def exploreABSAction(self): +        dir_list = self.find_pkgdir_ABS() +        for item,dir in dir_list: +            cmd = "%s" %(self.all_settings['explore']) +            cmd = cmd + " "  + dir +            cmd = cmd, +            thread.start_new_thread(self.runcmd_thread, cmd) + +    def select_newpkg_ABS_dir(self): +        dir = self.getExistingDirectory("Location to copy packages into.",self.all_settings['repo_location']) +        if dir: +            self.lineEdit_15.setText(dir) + +    def open_copy_location(self): +        dst = self.lineEdit_15.text() +        dst = str(dst) +        if dst == '': +            outText="Location is emptly, please select a location" +            self.update_ouputwindow(outText) +            self.showbox("Error",outText,True) +            return +        cmd = "%s" %(self.all_settings['explore']) +        cmd = cmd + " "  + dst +        cmd = cmd, +        thread.start_new_thread(self.runcmd_thread, cmd) + +    def copyABSAction(self): +        self.update_ouputwindow(sepLine) +        itemlist = self.find_pkgdir_ABS() +        dst = self.lineEdit_15.text() +        dst = str(dst) +        if dst == '': +            outText="Location is emptly, please select a location" +            self.update_ouputwindow(outText) +            self.showbox("Error",outText) +            return + +        if itemlist: +            for item,dir in itemlist: +                srcdir=dir +                itemText= str(item.text()) +                itemrow=item.row() +                itemcol=item.column() +                try: +                    outtext="Copy start  %s -> %s"  %(srcdir,dst) +                    self.update_ouputwindow(outtext) +                    cmd="rsync -ar --exclude src --exclude pkg %s %s" %(str(srcdir),dst ) +                    #print cmd +                    retcode = subprocess.call(cmd, shell=True) +                    if retcode == 0 : +                        self.update_status_cell_ABS(itemrow,itemText,"Copy complete!",itemcol) +                        outtext="Copying finished!" +                        self.update_ouputwindow(outtext) +                    else: +                        outtext="Copying Failed" +                        self.update_status_cell_ABS(itemrow,itemText,"Failed Copy",itemcol) +                        self.update_ouputwindow(outtext) +                        return False +                except OSError, e: +                    outtext="Copying Failed: %s " %(e) +                    self.update_status_cell_ABS(itemrow,itemText,"Failed Copy",itemcol) +                    self.update_ouputwindow(outtext) +                    return False +#--------pkg table options + +    def editPkgbuild(self): +        dir_list = self.find_pkgdir() +        for item,dir  in dir_list: +            itemText= str(item.text()) +            #grab location from tableWidget +            pkglocation=self.tableWidget.pkglocation(item) +            filename = "%s/PKGBUILD" %(pkglocation) +            cmd = "%s %s" %(self.all_settings['editor'], filename) +            if os.path.exists(filename): +                cmd = cmd, +                thread.start_new_thread(self.runcmd_thread, cmd) +            else: +                self.update_ouputwindow(sepLine) +                outtext="Couldn't open PKGBUILD:  %s" %filename +                self.update_ouputwindow(outtext) + +    def viewbuildLog(self): +        dir_list = self.find_pkgdir() +        for item,dir in dir_list: +            itemText= str(item.text()) +            filename = "%s/%s.build.log" %(dir,itemText) +            if os.path.exists(filename): +                cmd = "%s %s" %(self.all_settings['editor'], filename) +                cmd = cmd, +                thread.start_new_thread(self.runcmd_thread, cmd) +            else: +                self.update_ouputwindow(sepLine) +                outtext="Couldn't open buildlog:  %s" %filename +                self.update_ouputwindow(outtext) +                self.showbox("Error",outtext) + + +    def actionChangeLog(self): +        dir_list = self.find_pkgdir() +        for item,dir in dir_list: +            itemText= str(item.text()) +            filename = "%s/__changelog" %(dir) +            if os.path.exists(filename): +                cmd = "%s %s" %(self.all_settings['editor'], filename) +                self.update_ouputwindow(cmd) +                cmd = cmd, +                thread.start_new_thread(self.runcmd_thread, cmd) +            else: +                self.update_ouputwindow(sepLine) +                outtext="Couldn't open changelog:  %s" %filename +                self.update_ouputwindow(outtext) +                self.showbox("Error",outtext) + +    def launchxterm(self): +        dir_list = self.find_pkgdir() +        for item,dir  in dir_list: +            cmd = "%s" %(self.all_settings['konsole']) +            cmd = cmd + " "  + " " + dir +            cmd = cmd, +            thread.start_new_thread(self.runcmd_thread, cmd) + + +    def exploreAction(self): +        dir_list = self.find_pkgdir() +        for item,dir in dir_list: +            cmd = "%s" %(self.all_settings['explore']) +            cmd = cmd + " "  + dir +            cmd = cmd, +            thread.start_new_thread(self.runcmd_thread, cmd) + + +    def backupAction(self): +        current_time=time.strftime("%Y-%m-%d_%H-%M-%S") +        dir_list = self.find_pkgdir() +        self.update_ouputwindow(sepLine) +        for item,dir in dir_list: +            itemText = item.text() +            itemrow = item.row() +            itemcol = item.column() +            filename = "%s/PKGBUILD" %dir +            new_filename = "%s/PKGBUILD.backup.%s.old" %(dir,current_time) +            try: +                outText = "Creating backup file %s" %new_filename +                self.update_ouputwindow(outText) +                self.update_status_cell(itemrow,itemText,"Working..",itemcol) +                shutil.copy(filename.strip(), new_filename.strip()) +            except Exception, reason: +                self.update_ouputwindow(str(reason)) +                self.update_ouputwindow(outText) +                outText = "Backup Failed for:  %s" %filename +                self.update_status_cell(itemrow,itemText,"FAILED, PKGBUILD  backup",itemcol) +                self.showbox(outText,str(reason)) +                return +            outText="Backup of PKGBUILD was a success" +            self.update_ouputwindow(outText) +            self.update_status_cell(itemrow,itemText,"Successful backup",itemcol) + +    def check_for_changelog(self, pkgdir): +        filename = "%s/__changelog" %pkgdir +        return os.path.exists(filename) + +    def updateAction(self): +    #update package from abs_location +    #it will take the name and search abs +        self.disable_table() +        dir_list = self.find_pkgdir() +        for item,dir in dir_list: +                itemText= str(item.text()) +                self.updatepkg(item,dir) +        self.enable_table() + +    def updatepkg(self,item,dir): +        #updates our pkg with the contents from abs +        self.update_ouputwindow(sepLine) + +        pkgname = item.text() +        itemrow = item.row() +        itemcol = item.column() +        itemText = pkgname +        outText = "Start update: %s" %pkgname +        self.update_ouputwindow(outText) +        destdir = dir +        has_changelog = self.check_for_changelog(destdir) +        if has_changelog : +            outText = "Will not update, because changelog was detected:   %s" %pkgname +            self.update_ouputwindow(outText) +            self.showbox("Update pkg",outText) +            return False +        #search /var/abs for pkg +        outText = "Searching %s for %s" %(str(self.all_settings['abs_location']), pkgname) +        self.update_ouputwindow(outText) +        self.update_status_cell(itemrow,itemText,"Searching...",itemcol) +        srcdir = self.findPKGdir(str(self.all_settings['abs_location']), pkgname) +        if srcdir: +            destdir=dir +            if os.path.exists(destdir): +                rc = self.backup(destdir,itemText) +                if  not rc: +                        self.update_status_cell(itemrow,itemText,"Failed update",itemcol) +                        self.enable_table() +                        outtext="*Backup Failed during update package" +                        self.update_ouputwindow(outtext) +                        return False +            try: +                cmd="rsync -ar --exclude src --exclude pkg %s/ %s" %(str(srcdir),dir ) +               # print cmd +                retcode = subprocess.call(cmd, shell=True) +                if retcode == 0 : +                    self.update_status_cell(itemrow,itemText,"Updated!",itemcol) +                    outtext="Update of %s finished" %pkgname +                    self.update_ouputwindow(outtext) +                else: +                    outtext="Copying Failed" +                    self.update_status_cell(itemrow,itemText,"Failed update",itemcol) +                    self.update_ouputwindow(outtext) +                    return False +            except OSError, e: +                outtext="Copying Failed: %s " %(e) +                self.update_status_cell(itemrow,itemText,"Failed update",itemcol) +                self.update_ouputwindow(outtext) +                return False +            return True +        else: +            outtext="Search did not find a package in ABS" +            self.update_status_cell(itemrow,itemText,"Failed",itemcol) +            self.update_ouputwindow(outtext) +            self.showbox("Error",outtext) + + +    def depAction(self): +        print "depaction" + +    def updateMD5(self,filename): +        file_contents=[] +        f = open(filename,"r") +        lineIter= iter(f) +        for aLine in lineIter: +            if aLine.strip().startswith("md5sum"): +                if aLine.strip().endswith(")"): +                    continue +                else: +                    for aModule in lineIter: +                        if aModule.strip().endswith(")"): +                            break +            else: +                file_contents.append(aLine) +        f.close() +        try: +            f = open(filename,"w") +        except: +            outtext="Couldn't open file for writing:  %s" %filename +            print outtext +            #self.update_status_cell(itemrow,itemText,"Failed",itemcol) +            #self.update_ouputwindow(outtext) +            return False +        for line in file_contents: +            f.write(line) +        f.close() +        cmd = "makepkg --asroot -g %s >> %s" %(filename,filename) +        retcode = subprocess.call(cmd, shell=True) +        if not retcode == 0 : +            return False +        return True + +    def MD5Action(self): +        self.update_ouputwindow(sepLine) +        dir_list = self.find_pkgdir() +        self.disable_table() +        for item,dir in dir_list: +            itemText= str(item.text()) +            itemrow=item.row() +            itemcol=item.column() +            filename = "PKGBUILD" +            try: +                os.chdir(dir) +            except: +                outtext="MD5 failed for %s, dir didn't exisit" %itemText +                self.update_status_cell(itemrow,itemText,"MD5 Failed!",itemcol) +                self.update_ouputwindow(outtext) +                continue +            if self.updateMD5(filename): +                outtext="MD5 update complete for %s" %itemText +                self.update_status_cell(itemrow,itemText,"MD5 Updated!",itemcol) +                self.update_ouputwindow(outtext) +            else: +                outtext="MD5 update failed for %s" %itemText +                self.update_status_cell(itemrow,itemText,"MD5 Failed!",itemcol) +                self.update_ouputwindow(outtext) +        self.enable_table() + +    def removepkg(self): +        print "remove" +        #repo-remove /path/to/repo.db.tar.gz kernel26 + +    def removeGroup(self): +        self.update_ouputwindow(sepLine) +        options = QtGui.QFileDialog.Options() +        #if not self.native.isChecked(): +        options |= QtGui.QFileDialog.DontUseNativeDialog +        selectedFilter = QtCore.QString() +        fd = QtGui.QFileDialog() +        fileName = QtGui.QFileDialog.getOpenFileName(QtGui.QFileDialog(), +                "Select Group File to remove.....", +                self.all_settings['group_file_location'], +                "Text Files (*.group);;All Files (*)", selectedFilter, +                options) +        if  fileName.isEmpty(): +            outtext="No files were selected for removal" +            self.update_ouputwindow(outtext) +#            self.showbox("Error", outtext,True) +            return +        #do removal +        try: +            os.remove(fileName) +            outtext="Removed: %s\n *you should reload the group files or restart" %fileName +        except Exception, reason: +            outtext = "Couldn't remove %s\n \t Reason: %s" %(fileName,reason) +        self.update_ouputwindow(outtext) + + +    def backup(self,pkgdir,pkgname): +        #"makepkg --asroot -f --source" +        filename = "%s.bld.backup.tar" %pkgname +        outtext="*Start Backup of %s -> %s  " %(pkgdir,filename) +        self.update_ouputwindow(outtext) +        try: +            os.chdir(pkgdir) +        except: +            outtext="Backup Failed" +            self.update_ouputwindow(outtext) +            return  False +        files = os.listdir('.') +        try: +            backupfile  = tarfile.open(filename,'w') +        except Exception, reason: +            outtext="Backup Failed: %s " %(reason) +            self.update_ouputwindow(outtext) +            return False +        for file in files: +            if ( file == "src" ) or (file == "pkg"): +                continue +            else: +                backupfile.add(file) +        backupfile.close() +        outtext="* Backup finished" +        self.update_ouputwindow(outtext) +        return True + + +    def promote(self,prunedlist,dir): + +        for item in prunedlist: +            itemText= str(item.text()) +            itemrow = item.row() +            itemcol = item.column() +            self.update_status_cell(itemrow,itemText,"Working...",itemcol) +            outtext = "Promotion of %s -> %s" %(itemText,dir) +            self.update_ouputwindow(outtext) +            srcdir=self.findPKGdir(str(self.all_settings['repo_location']), itemText) +            destdir=dir+"/"+itemText +            if os.path.exists(destdir): +                rc = self.backup(destdir,itemText) +                if  not rc: +                    self.update_status_cell(itemrow,itemText,"Failed promotion",itemcol) +                    self.enable_table() +                    outtext="*Backup Failed during promotion " +                    self.update_ouputwindow(outtext) +                    return False +            outtext="Copying to %s" %(destdir) +            self.update_status_cell(itemrow,itemText,"Copying...",itemcol) +            self.update_ouputwindow(outtext) +            try: +                cmd="rsync -ar --exclude src --exclude pkg %s %s" %(str(srcdir),dir ) +                retcode = subprocess.call(cmd, shell=True) +                if retcode == 0 : +                    self.update_status_cell(itemrow,itemText,"Promoted",itemcol) +                else: +                    outtext="Copying Failed" +                    self.update_status_cell(itemrow,itemText,"Failed promotion",itemcol) +                    self.update_ouputwindow(outtext) +                    return False +            except OSError, e: +                outtext="Copying Failed: %s " %(e) +                self.update_status_cell(itemrow,itemText,"Failed promotion",itemcol) +                self.update_ouputwindow(outtext) +                return False + +            #self.update_status_cell(itemrow,itemText,"Promoted",itemcol) +           # except Exception, reason: +           #     outtext="Copying Failed: %s " %(reason) +           #     self.update_status_cell(itemrow,itemText,"Failed promotion",itemcol) +           #     self.update_ouputwindow(outtext) +            outtext="**Complete: Promotion of %s" %itemText +            self.update_ouputwindow(outtext) +            outtext="You should regenerate the repo" +            self.update_ouputwindow(outtext) +        return True + + + +    def promoteAction(self): +        self.update_ouputwindow(sepLine) +        self.disable_table() +        itemlist=self.tableWidget.selectedItems() +        prunedlist = self.tableWidget.keep_col_in_list(itemlist,1) +        if prunedlist == [] : +            self.showbox("Error", "No packages selected") +            itemText="selected package list was empty" +            self.update_ouputwindow(itemText) +        else: +                dir = self.getExistingDirectory("Select location",self.all_settings['repo_location']) +                if dir: +                    args=(prunedlist,dir) +                    thread.start_new_thread(self.promote, args) +                else: +                        self.showbox("Error", "Dest dir was not selected") +                        itemText="Directory was not selected" +                        self.update_ouputwindow(itemText) +        self.enable_table() + +    def save_text_to_file(self): +        self.update_ouputwindow(sepLine) +        contents= self.textEdit.toPlainText() +        filename = self.setSaveFileName() +        f = open(filename,"w") +        f.write(contents) +            #f.write("\n") +        f.close() +        outText="Text saved to file: %s " %filename +        self.update_ouputwindow(sepLine) + +    def setSaveFileName(self): +        options = QtGui.QFileDialog.Options() +        #if not self.native.isChecked(): +        options |= QtGui.QFileDialog.DontUseNativeDialog +        selectedFilter = QtCore.QString() +        fd = QtGui.QFileDialog() +        fileName = QtGui.QFileDialog.getSaveFileName(QtGui.QFileDialog(), +                "QFileDialog.getSaveFileName()", +                "Save File", +                "All Files (*);;Text Files (*.txt)", selectedFilter, +                options) +        if  fileName.isEmpty(): +            fileName="status_out.txt" +        return fileName + +    def getExistingDirectory(self,title,startdir): +        options = QtGui.QFileDialog.DontResolveSymlinks | QtGui.QFileDialog.ShowDirsOnly +        directory = QtGui.QFileDialog.getExistingDirectory(QtGui.QFileDialog(), +                title, +                startdir, options) +        #self.directoryLabel.text() +        if not directory.isEmpty(): +            return directory +        return False + +    def select_group_dir(self): +        dir = self.getExistingDirectory("Location to store group files","/") +        if dir: +            self.lineEdit_4.setText(dir) + +    def select_abs_dir(self): +        dir = self.getExistingDirectory("Location of ABS","/") +        if dir: +            self.lineEdit_5.setText(dir) + +    def select_repo_dir(self): +        dir = self.getExistingDirectory("Location of PKGBUILD repository","/") +        if dir: +            self.lineEdit_6.setText(dir) + +    def select_profile_dir(self): +        dir = self.getExistingDirectory("Location of iso profiles","/") +        if dir: +            self.lineEdit_19.setText(dir) + + + + +    def select_newpkg_dir(self): +        dir = self.getExistingDirectory("Location to create new packages.",self.all_settings['repo_location']) +        if dir: +            self.lineEdit_14.setText(dir) + +    def create_new_pkg(self): +        self.update_ouputwindow(sepLine) + +        pkgname = self.lineEdit.text() +        pkgversion = self.lineEdit_2.text() +        pkgurl = self.lineEdit_3.text() +        pkgdesc = self.plainTextEdit_2.toPlainText() +        useinstall =  self.checkBox.isChecked() +        location = self.lineEdit_14.text() +        outtext = "Creating new package %s" %pkgname +        self.update_ouputwindow(outtext) +        if location == '' or not location : +            print "location is null, can't do anything" +            return +        filename = "%s/PKGBUILD.proto" %self.all_settings['repo_location'] +        try: +            f = open(filename,"r") +            file_contents = f.readlines() +            f.close() +        except: +            print "couldn't open template file" +            return +        new_contents=[] +        for line in file_contents: +            if line.startswith("pkgname="): +                new_line = 'pkgname="%s" \n' %pkgname +                new_contents.append(new_line) +            elif line.startswith("pkgver="): +                new_line = 'pkgver="%s" \n' %pkgversion +                new_contents.append(new_line) +            elif line.startswith("url="): +                new_line = 'url="%s" \n' %pkgurl +                new_contents.append(new_line) +            elif line.startswith("pkgdesc="): +                new_line = 'pkgdesc="%s" \n' %pkgdesc +                new_contents.append(new_line) +            elif useinstall: +                if line.startswith("install"): +                    new_line = "install=%s.install \n" %pkgname +                    new_contents.append(new_line) +                else: +                    new_contents.append(line) +            else: +                new_contents.append(line) + +        filename="%s/%s/PKGBUILD" %(location,pkgname) +        mydir = "%s/%s" %(location,pkgname) +        if not os.path.exists(mydir): +            os.mkdir(mydir) +        try: +            f = open(filename,"w") +        except: +            print "couldn't open pkgbuild file for writing" +        for line in new_contents: +            f.write(line) +        f.close() +        if useinstall: +            src = "%s/proto.install" %self.all_settings['repo_location'] +            dest="%s/%s/%s.install" %(location,pkgname,pkgname) +            shutil.copyfile(src, dest) + + +    def reset_pkg_screen(self): +        self.update_ouputwindow(sepLine) +        outtext="Reset new package screen" +        self.update_ouputwindow(outtext) +        self.lineEdit.setText('') +        self.lineEdit_2.setText('') +        self.lineEdit_3.setText('') +        self.plainTextEdit_2.setPlainText('') + +    def run_sync(self): +        runcmd=self.all_settings['sync'] +        if self.radioButton_release.isChecked(): +            cmdargs=["release"] +        elif self.radioButton_testing.isChecked(): +            cmdargs=["testing"] +        elif self.radioButton_mythvantage.isChecked(): +            cmdargs=["mythvantage"] +        elif self.radioButton_source.isChecked(): +            cmdargs=["source"] +        #cmdargs=[str(self.comboBox_buildType.currentText())] +        self.run_cmd_thread.value_init(runcmd,cmdargs) + + +    def upload_files(self): +        srcfile=self.lineEdit_upload_cd_dest.text() +        if srcfile == '' : +             outText="Source file is empty" +             self.update_ouputwindow(outText) +             self.showbox("Error",outText,True) +        if not os.path.exists(srcfile): +             outText="Source file does not exist" +             self.showbox("Error",outText,True) +        dest=self.lineEdit_18.text() +        if dest=='': +             outText="Remote Dir is empty" +             self.update_ouputwindow(outText) +             self.showbox("Error",outText,True) +        runcmd=self.all_settings['upload_iso'] +        cmdargs=[srcfile,dest] +        self.upload_file_thread.value_init(runcmd,cmdargs) + +    def createcd(self): +        for i in isoProfile: +            btext=i[0] +            bname=i[1] +            runcmd=self.all_settings['create_iso_cmd'] +            cmd="buttonChecked = self.%s.isChecked()" %bname +            exec(cmd) +            if buttonChecked: +                self.update_ouputwindow(sepLine) +                outText="Making ISO with profile:  %s" %btext +                self.update_ouputwindow(outText) +                cmdargs = [btext] +                self.run_cmd_thread.value_init(runcmd,cmdargs) +                break + +    def save_config_settings(self): +        from __main__ import settings_dict +        homedir = os.path.expanduser("~") +        self.update_ouputwindow("Saved configuration options") +        bld_settings = shelve.open(bld_data, writeback=True) +        for key,val in settings_dict.iteritems(): +            cmd= 'self.%s.text()' %val +            try: +                tempdata =  eval(cmd) +            except: +                continue +            bld_settings[key] = tempdata +        bld_settings.close() + +    def save_package_options(self): +        self.update_ouputwindow("Saved package options") +        from __main__ import options_dict +        bld_settings = shelve.open(bld_data, writeback=True) +        for key,val in options_dict.iteritems(): +                #cmd= 'self.%s.isChecked()' %val +                cmd= 'self.%s.checkState()' %val +                tempdata = eval(cmd) +                bld_settings[key] = tempdata +        bld_settings.close() + +    def save_all_options(self): +        self.save_config_settings() +        self.save_package_options() + +    def load_settings_from_file(self,Verbose=True): +        from __main__ import settings_dict +        from __main__ import options_dict +        bld_settings = shelve.open(bld_data, writeback=True) +        for key,val in settings_dict.iteritems(): +            if bld_settings.has_key(key): +                tempdata = bld_settings.get(key) +                cmd = 'self.%s.setText(tempdata)' %val +                eval(cmd) +                self.all_settings[key]=tempdata + +        for key,val in options_dict.iteritems(): +            if bld_settings.has_key(key): +                tempdata = bld_settings.get(key) +                cmd = 'self.%s.setCheckState(tempdata)' %(val) +                try: +                    eval(cmd) +                    self.all_settings[key]=tempdata +                except: +                    pass +        bld_settings.close() +        if Verbose: +            self.update_ouputwindow("Loaded settings from file") + +    def get_checkbox_state(self): +        mp_arg_list=[] +        if  self.checkBox_chroot.isChecked(): +            mp_arg_list.append("--chroot ") +        if self.checkBox_download.isChecked(): +            mp_arg_list.append("-o ") +        if self.checkBox_force.isChecked(): +            mp_arg_list.append("-f") +        if self.checkBox_syncinstall.isChecked(): +            mp_arg_list.append("-s") +        if self.checkBox_clean.isChecked(): +            mp_arg_list.append("-c") +        if self.checkBox_remove.isChecked(): +            mp_arg_list.append("-r") +        if self.checkBox_holdver.isChecked(): +            mp_arg_list.append("--holdver") +        if self.checkBox_bumpver.isChecked(): +            mp_arg_list.append("-b") +        if self.checkBox_install.isChecked(): +            mp_arg_list.append("-i") +        if self.checkBox_ignore.isChecked(): +            mp_arg_list.append("-d") +        return mp_arg_list + +#--- + + + +    def retranslateUi(self, MainWindow): +        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "BLD", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_22.setText(QtGui.QApplication.translate("MainWindow", "Search Repo", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Search", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_5.setText(QtGui.QApplication.translate("MainWindow", "clear", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_3.setText(QtGui.QApplication.translate("MainWindow", "Search All", None, QtGui.QApplication.UnicodeUTF8)) +        self.groupBox_2.setToolTip(QtGui.QApplication.translate("MainWindow", "Select all packages", None, QtGui.QApplication.UnicodeUTF8)) +        self.lcdNumber_2.setToolTip(QtGui.QApplication.translate("MainWindow", "Total number of packages loaded", None, QtGui.QApplication.UnicodeUTF8)) +        self.lcdNumber.setToolTip(QtGui.QApplication.translate("MainWindow", "Total number of packages selected", None, QtGui.QApplication.UnicodeUTF8)) +        self.comboBox.setToolTip(QtGui.QApplication.translate("MainWindow", "Current group file.", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_8.setToolTip(QtGui.QApplication.translate("MainWindow", "Deselect all packages", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_8.setText(QtGui.QApplication.translate("MainWindow", "Select None", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_9.setText(QtGui.QApplication.translate("MainWindow", "Select All", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.setSortingEnabled(True) +        self.tableWidget.horizontalHeaderItem(0).setText(QtGui.QApplication.translate("MainWindow", ".", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.horizontalHeaderItem(1).setText(QtGui.QApplication.translate("MainWindow", "Name", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.horizontalHeaderItem(2).setText(QtGui.QApplication.translate("MainWindow", "Version", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.horizontalHeaderItem(3).setText(QtGui.QApplication.translate("MainWindow", "Status", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.horizontalHeaderItem(4).setText(QtGui.QApplication.translate("MainWindow", "Location", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget.horizontalHeaderItem(5).setText(QtGui.QApplication.translate("MainWindow", "Description", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "Packages", None, QtGui.QApplication.UnicodeUTF8)) +        self.groupBox_14.setTitle(QtGui.QApplication.translate("MainWindow", "Profiles", None, QtGui.QApplication.UnicodeUTF8)) +        self.create_cd.setText(QtGui.QApplication.translate("MainWindow", "Create CD", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_7), QtGui.QApplication.translate("MainWindow", "Create ISO", None, QtGui.QApplication.UnicodeUTF8)) +        self.radioButton_release.setText(QtGui.QApplication.translate("MainWindow", "release", None, QtGui.QApplication.UnicodeUTF8)) +        self.radioButton_testing.setText(QtGui.QApplication.translate("MainWindow", "testing", None, QtGui.QApplication.UnicodeUTF8)) +        self.radioButton_mythvantage.setText(QtGui.QApplication.translate("MainWindow", "mythvantage", None, QtGui.QApplication.UnicodeUTF8)) +        self.radioButton_source.setText(QtGui.QApplication.translate("MainWindow", "source", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_sync.setText(QtGui.QApplication.translate("MainWindow", "Sync", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_8), QtGui.QApplication.translate("MainWindow", "Repo Sync", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_19.setText(QtGui.QApplication.translate("MainWindow", "File to Upload:", None, QtGui.QApplication.UnicodeUTF8)) +        self.lineEdit_upload_cd_dest.setText(QtGui.QApplication.translate("MainWindow", "/tmp/testcd-2.iso", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_6.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_20.setText(QtGui.QApplication.translate("MainWindow", "Remote Dir.", None, QtGui.QApplication.UnicodeUTF8)) +        self.lineEdit_18.setText(QtGui.QApplication.translate("MainWindow", "/tmp", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushbutton_upload.setText(QtGui.QApplication.translate("MainWindow", "upload", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_9), QtGui.QApplication.translate("MainWindow", "ISO upload", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QtGui.QApplication.translate("MainWindow", "Misc", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QtGui.QApplication.translate("MainWindow", "Output", None, QtGui.QApplication.UnicodeUTF8)) +        self.label.setText(QtGui.QApplication.translate("MainWindow", "Package Name", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_3.setText(QtGui.QApplication.translate("MainWindow", "Package Version", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_2.setText(QtGui.QApplication.translate("MainWindow", "URL", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_4.setText(QtGui.QApplication.translate("MainWindow", "Description", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_15.setText(QtGui.QApplication.translate("MainWindow", "Location", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox.setText(QtGui.QApplication.translate("MainWindow", "Use Install File", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_4.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QtGui.QApplication.translate("MainWindow", "Create New Package", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_16.setText(QtGui.QApplication.translate("MainWindow", "Copy ABS files to: ", None, QtGui.QApplication.UnicodeUTF8)) +        self.lineEdit_15.setToolTip(QtGui.QApplication.translate("MainWindow", "Location the ABS packages will be copied into.", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_5.setToolTip(QtGui.QApplication.translate("MainWindow", "Select directory", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_5.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_7.setToolTip(QtGui.QApplication.translate("MainWindow", "Opens location of \"copy abs files\" in a file manager", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_7.setText(QtGui.QApplication.translate("MainWindow", "open location", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_23.setText(QtGui.QApplication.translate("MainWindow", "Search ABS repo:", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Search", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Clear", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_4.setText(QtGui.QApplication.translate("MainWindow", "Search All", None, QtGui.QApplication.UnicodeUTF8)) +        self.lcdNumber_3.setToolTip(QtGui.QApplication.translate("MainWindow", "Total files in the group", None, QtGui.QApplication.UnicodeUTF8)) +        self.lcdNumber_abs2.setToolTip(QtGui.QApplication.translate("MainWindow", "Total files selected", None, QtGui.QApplication.UnicodeUTF8)) +        self.comboBox_2.setToolTip(QtGui.QApplication.translate("MainWindow", "Current ABS group file", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.setSortingEnabled(True) +        self.tableWidget_2.horizontalHeaderItem(0).setText(QtGui.QApplication.translate("MainWindow", ".", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.horizontalHeaderItem(1).setText(QtGui.QApplication.translate("MainWindow", "Name", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.horizontalHeaderItem(2).setText(QtGui.QApplication.translate("MainWindow", "Version", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.horizontalHeaderItem(3).setText(QtGui.QApplication.translate("MainWindow", "Status", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.horizontalHeaderItem(4).setText(QtGui.QApplication.translate("MainWindow", "Location", None, QtGui.QApplication.UnicodeUTF8)) +        self.tableWidget_2.horizontalHeaderItem(5).setText(QtGui.QApplication.translate("MainWindow", "Description", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), QtGui.QApplication.translate("MainWindow", "Copy from ABS", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_3.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_2.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_7.setText(QtGui.QApplication.translate("MainWindow", "Repostory location", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_5.setText(QtGui.QApplication.translate("MainWindow", "Group file location", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_6.setText(QtGui.QApplication.translate("MainWindow", "ABS location", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_21.setText(QtGui.QApplication.translate("MainWindow", "ISO profile dir", None, QtGui.QApplication.UnicodeUTF8)) +        self.toolButton_8.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_13.setText(QtGui.QApplication.translate("MainWindow", "dependancy", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_10.setText(QtGui.QApplication.translate("MainWindow", "editor", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_8.setText(QtGui.QApplication.translate("MainWindow", "explore", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_9.setText(QtGui.QApplication.translate("MainWindow", "konsole", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_12.setText(QtGui.QApplication.translate("MainWindow", "makepkg command", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_14.setText(QtGui.QApplication.translate("MainWindow", "repo check", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_11.setText(QtGui.QApplication.translate("MainWindow", "Sync", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_17.setText(QtGui.QApplication.translate("MainWindow", "create ISO", None, QtGui.QApplication.UnicodeUTF8)) +        self.label_18.setText(QtGui.QApplication.translate("MainWindow", "upload ISO", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_config_save.setText(QtGui.QApplication.translate("MainWindow", "Save", None, QtGui.QApplication.UnicodeUTF8)) +        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), QtGui.QApplication.translate("MainWindow", "Configuration", None, QtGui.QApplication.UnicodeUTF8)) +        self.dockWidget.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Make package options", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_chroot.setToolTip(QtGui.QApplication.translate("MainWindow", "Check this to build the package in a chroot", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_chroot.setText(QtGui.QApplication.translate("MainWindow", "build in chroot", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_download.setToolTip(QtGui.QApplication.translate("MainWindow", " Download and extract files only, but do not build them. Useful with the --noextract option if you\n" +"           wish to tweak the files in src/ before building.", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_download.setText(QtGui.QApplication.translate("MainWindow", "Download only", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_force.setToolTip(QtGui.QApplication.translate("MainWindow", "makepkg will not build a package if a built package already exists in the PKGDEST (set in\n" +"           makepkg.conf(5)) directory, which may default to the current directory. This allows the built\n" +"           package to be overwritten.\n" +"", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_force.setText(QtGui.QApplication.translate("MainWindow", "Force build", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_syncinstall.setToolTip(QtGui.QApplication.translate("MainWindow", "Install missing dependencies using pacman. When build-time or run-time dependencies are not found,\n" +"           pacman will try to resolve them. If successful, the missing packages will be downloaded and\n" +"           installed.\n" +"", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_syncinstall.setText(QtGui.QApplication.translate("MainWindow", "Install dependencies", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_clean.setToolTip(QtGui.QApplication.translate("MainWindow", " Clean up leftover work files and directories after a successful build.", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_clean.setText(QtGui.QApplication.translate("MainWindow", " Clean after build", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_remove.setToolTip(QtGui.QApplication.translate("MainWindow", "Upon successful build, remove any dependencies installed by makepkg during dependency\n" +"           auto-resolution and installation when using -s (install dependencies)", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_remove.setText(QtGui.QApplication.translate("MainWindow", "Remove dependencies", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_holdver.setToolTip(QtGui.QApplication.translate("MainWindow", " Useful when building development versions of packages. Prevents makepkg from automatically bumping\n" +"           the pkgver to the latest revision number in the package’s development tree", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_holdver.setText(QtGui.QApplication.translate("MainWindow", "Hold Version", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_install.setToolTip(QtGui.QApplication.translate("MainWindow", "Install or upgrade the package after a successful build using pacman.", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_install.setText(QtGui.QApplication.translate("MainWindow", "Install after build", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_ignore.setToolTip(QtGui.QApplication.translate("MainWindow", "Do not perform any dependency checks. This will let you override and ignore any dependencies\n" +"           required. There is a good chance this option will break the build process if all of the\n" +"           dependencies are not installed.\n" +"", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_ignore.setText(QtGui.QApplication.translate("MainWindow", "Ignore dependencies", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_bumpver.setToolTip(QtGui.QApplication.translate("MainWindow", "Increase the pkg release by one.", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_bumpver.setText(QtGui.QApplication.translate("MainWindow", "Bump pkg version", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_2.setToolTip(QtGui.QApplication.translate("MainWindow", "Toggles if the output from the build is shown in the output windows.  \n" +"  A half check will enable the\"output\" tab.\n" +"  A full check will show output in both windows.", None, QtGui.QApplication.UnicodeUTF8)) +        self.checkBox_2.setText(QtGui.QApplication.translate("MainWindow", "View Log during build", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "clear", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_stop.setText(QtGui.QApplication.translate("MainWindow", "Stop", None, QtGui.QApplication.UnicodeUTF8)) +        self.pushButton_go.setText(QtGui.QApplication.translate("MainWindow", "Make package", None, QtGui.QApplication.UnicodeUTF8)) +        self.menuWelcome.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8)) +        self.menuAbout.setTitle(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) +        self.menuRepository_2.setTitle(QtGui.QApplication.translate("MainWindow", "Repository", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionExit.setText(QtGui.QApplication.translate("MainWindow", "Exit", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionExit.setShortcut(QtGui.QApplication.translate("MainWindow", "Alt+Q", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionToggle_options.setText(QtGui.QApplication.translate("MainWindow", "Toggle options", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionToggle_output_window.setText(QtGui.QApplication.translate("MainWindow", "Toggle output window", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionUpdate.setText(QtGui.QApplication.translate("MainWindow", "Update ALL packages  from ABS", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionUpdate_group_list.setText(QtGui.QApplication.translate("MainWindow", "Update group list", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionCreate_new_PKG.setText(QtGui.QApplication.translate("MainWindow", "New package", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionAbout.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionHelp.setText(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionCheck_for_REPO_problems.setText(QtGui.QApplication.translate("MainWindow", "Check for  problems", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSave_output.setText(QtGui.QApplication.translate("MainWindow", "Save output", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionHelp_2.setText(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSave_output_window_to_file.setText(QtGui.QApplication.translate("MainWindow", "Save output window to file", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionUpdate_packages_from_ABS.setText(QtGui.QApplication.translate("MainWindow", "Update ALL packages from ABS", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionCreate_new_package.setText(QtGui.QApplication.translate("MainWindow", "Create new package", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionUpdate_group_list_2.setText(QtGui.QApplication.translate("MainWindow", "Update package group list", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionCheck_for_problems.setText(QtGui.QApplication.translate("MainWindow", "Check for problems", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionAbout_2.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionHelp_3.setText(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionQuit.setText(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionAbout_3.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionHelp_4.setText(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionUpdate_group_list_abs.setText(QtGui.QApplication.translate("MainWindow", "Regenerate  ABS package group list", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionLoad_configuration_file.setText(QtGui.QApplication.translate("MainWindow", "Load configuration file", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSave_All_options_including_make_package_option.setText(QtGui.QApplication.translate("MainWindow", "Save ALL  options", None, QtGui.QApplication.UnicodeUTF8)) +        self.action_Save_make_package_options.setText(QtGui.QApplication.translate("MainWindow", "Save make package options", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionReset_UI.setText(QtGui.QApplication.translate("MainWindow", "Reset UI", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionReload_Group_packages.setText(QtGui.QApplication.translate("MainWindow", "Reload Group packages", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionReload_ABS_Group_packages.setText(QtGui.QApplication.translate("MainWindow", "Reload ABS Group packages", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSearch_current_Repository.setText(QtGui.QApplication.translate("MainWindow", "Search repository", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSearch_current_Repository.setShortcut(QtGui.QApplication.translate("MainWindow", "Alt+S", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionSearch_All_This_includes_ABS.setText(QtGui.QApplication.translate("MainWindow", "Search All (This includes ABS)", None, QtGui.QApplication.UnicodeUTF8)) +        self.actionRemove_Group.setText(QtGui.QApplication.translate("MainWindow", "Remove Group", None, QtGui.QApplication.UnicodeUTF8)) +  | 
