From 77b7545a6b1bd3e6f1a8f16233b049fbb2a86ee4 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Mon, 19 Oct 2009 23:43:01 -0500 Subject: bld: work in progress to adding pkg group support, Just to show groups after selecting them. --- build_tools/bin/bld_resource.py | 521 ++++++++++++++++++++++++---------------- 1 file changed, 316 insertions(+), 205 deletions(-) diff --git a/build_tools/bin/bld_resource.py b/build_tools/bin/bld_resource.py index afcb1d6..c19731f 100644 --- a/build_tools/bin/bld_resource.py +++ b/build_tools/bin/bld_resource.py @@ -1,3 +1,4 @@ +#!/bin/python # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'bldtest.ui' @@ -21,6 +22,10 @@ from PyQt4.QtGui import * import os, sys, time, subprocess, shutil import shelve, thread, tarfile, tempfile import distutils.dir_util +import pprint +import operator +import itertools + try: import pexpect @@ -41,10 +46,10 @@ sepLine="\n-------------------------------------------------" global bld_data homedir = os.path.expanduser("~") bld_data="%s/.bld_session_data" %homedir - -print bld_data - - +global masterPkgList +global masterListPopulated +masterPkgList=[] +masterListPopulated=False class OutLog: def __init__(self, edit, out=None, color=None): @@ -105,6 +110,7 @@ class TableWidget(QTableWidget): menu.addSeparator() resetStatus = menu.addAction("Reset status") resetBuildOrder = menu.addAction("Reset build order") + resetSize = menu.addAction("Resize to width") action = menu.exec_(self.mapToGlobal(event.pos())) #if action == quitAction: @@ -139,6 +145,8 @@ class TableWidget(QTableWidget): self.resetstatus() if action == resetBuildOrder: self.resetBuildOrder() + if action == resetSize: + self.resetSize() def resetstatus(self): for row in range(self.rowCount()): @@ -149,6 +157,11 @@ class TableWidget(QTableWidget): for row in range(self.rowCount()): self.item(row, 0).setText("") return + def resetSize(self): + columnlist=[1,2,4,6,7] + for i in columnlist: + self.resizeColumnToContents(i) + return def keep_col_in_list(self,itemList,col): new_itemList=[] @@ -161,7 +174,7 @@ class TableWidget(QTableWidget): def pkglocation(self,item): row = item.row() - locitem = self.item(row,4) + locitem = self.item(row,5) loc = str(locitem.text()) return loc @@ -226,16 +239,11 @@ class MyThread(QtCore.QThread): 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.strip(),itemText.strip()) @@ -254,28 +262,13 @@ class MyThread(QtCore.QThread): 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.TIMEOUT=300 + self.TIMEOUT=300 self.start() def run(self): @@ -330,6 +323,117 @@ class MyThread(QtCore.QThread): self.alive +class create_pkglist_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,group_location): + self.group_filename_list = filename + self.repo_location = repo_location + self.repo_type = repo_type + self.group_location=group_location + self.start() + + def run(self): + total_packages=0 + for group_filename in self.group_filename_list: + group_file="%s/%s.group" %(self.group_location,group_filename) + try: + f = open(group_file,"r") + file_contents = f.readlines() + total_packages_temp=len(file_contents) + f.close() + except: + print "couldn't open file: %s" %group_file + #outText = "couldn't open file to populate pkg list: %s " %filename + #self.update_ouputwindow(outText) + #self.comboBox.setEnabled(True) + total_packages+=total_packages_temp + + process_pkg_num = 0 + pkggroup_list=[] + for group_filename in self.group_filename_list: + group_file="%s/%s.group" %(self.group_location,group_filename) + try: + f = open(group_file,"r") + file_contents = f.readlines() + f.close() + except: + print "couldn't open file: %s" %group_file + #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): + process_pkg_num+=1 + 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" + pkggroup=[] + 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] + + elif line.strip().startswith("groups"): + l=line.partition("=")[2].strip() + for c in ['(',')',"'"]: + l = l.replace( c, '' ) + pkggroup=l.split() + + except Exception, e: + print "Couldn't parse file: %s\n \treason: %s" %(currentfile,e) + skipped.append(currentfile) + continue + for i in pkggroup: + pkggroup_list.append(i) + itemTextList=[pkgname,pkgversion,"-",pkglocation,pkgdescription,pkggroup] + itemDict={"pkgname" : pkgname, + "pkgversion" : pkgversion, + "pkglocation" : pkglocation, + "pkgdescription" : pkgdescription, + "pkggroup" : pkggroup, + "pkggroupfile": group_filename } + masterPkgList.append(itemDict) + time.sleep(0.005) + progress = ((float(process_pkg_num) / float(total_packages)) * 100) + self.emit(SIGNAL("update_progress_bar(float)"),progress) + + self.emit(SIGNAL("pkg_load_list_finished(bool)"),True) + if len(skipped) > 0: + self.emit(SIGNAL("pkg_load_skipped(PyQt_PyObject)"),skipped) + + grpset = set(pkggroup_list) + for i in grpset: + groupname="group-%s" %i + self.emit(SIGNAL("insert_group(QString)"),groupname) + + def toggle(self): + if self.running: + self.running = 0 + else: + self.running = 1 + def stop(self): + self.alive = 0 + + class load_pkg_thread(QtCore.QThread): def __init__(self, parent = None ): @@ -343,58 +447,89 @@ class load_pkg_thread(QtCore.QThread): 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) + if masterListPopulated and self.repo_type != "ABS": + if self.group_filename == "All-testing": + selected_group=["core-testing","extra-testing"] + elif self.group_filename == "All-stable": + selected_group=["core","extra"] + else: + selected_group=[self.group_filename] + size = 0 + list1 = [] + for key, items in itertools.groupby(masterPkgList, operator.itemgetter('pkggroupfile')): + list1.append(list(items)) + #find total size + for item in list1: + group_file = item[0]['pkggroupfile'] + if group_file in selected_group : + size += len(item) + totalprocessed=0 + for item in list1: + group_file = item[0]['pkggroupfile'] + if group_file in selected_group : + for index,pkg in enumerate(item): + totalprocessed+=1 + progress = ((float(totalprocessed) / float(size)) * 100) + itemTextList=[pkg["pkgname"],pkg["pkgversion"],"-",pkg["pkglocation"],pkg["pkgdescription"],pkg["pkggroup"]] + self.emit(SIGNAL("insertItem(PyQt_PyObject)"),itemTextList) + self.emit(SIGNAL("update_progress_bar(float)"),progress) + #group_list.append(pkg["pkggroup"]) + else: + 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) + + 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" + pkggroup=[] + 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] + + elif line.strip().startswith("groups"): + l=line.partition("=")[2].strip() + for c in ['(',')',"'"]: + l = l.replace( c, '' ) + pkggroup=l.split() + except Exception, e: + print "Couldn't parse file: %s\n \treason: %s" %(currentfile,e) + skipped.append(currentfile) + continue + itemTextList=[pkgname,pkgversion,"-",pkglocation,pkgdescription,pkggroup] + 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) - 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) @@ -417,7 +552,7 @@ class run_cmd_thread(QtCore.QThread): def value_init(self,runcmd,args): self.runcmd = runcmd self.args = args - self.TIMEOUT=300 + self.TIMEOUT=300 self.start() def run(self): @@ -448,8 +583,6 @@ class run_cmd_thread(QtCore.QThread): pass self.emit(SIGNAL("enable_tab2(bool)"),True) - #return retcode - def toggle(self): if self.running: self.running = 0 @@ -459,12 +592,11 @@ class run_cmd_thread(QtCore.QThread): self.alive = 0 - class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setEnabled(True) - MainWindow.resize(923, 757) + MainWindow.resize(982, 870) MainWindow.setLayoutDirection(QtCore.Qt.LeftToRight) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") @@ -580,7 +712,7 @@ class Ui_MainWindow(object): self.tableWidget.setGridStyle(QtCore.Qt.SolidLine) self.tableWidget.setCornerButtonEnabled(False) self.tableWidget.setObjectName("tableWidget") - self.tableWidget.setColumnCount(6) + self.tableWidget.setColumnCount(7) self.tableWidget.setRowCount(0) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) @@ -594,6 +726,8 @@ class Ui_MainWindow(object): self.tableWidget.setHorizontalHeaderItem(4, item) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) self.tableWidget.horizontalHeader().setCascadingSectionResizes(True) self.tableWidget.horizontalHeader().setStretchLastSection(True) self.horizontalLayout_5.addWidget(self.tableWidget) @@ -840,7 +974,7 @@ class Ui_MainWindow(object): self.tableWidget_2.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerItem) self.tableWidget_2.setCornerButtonEnabled(False) self.tableWidget_2.setObjectName("tableWidget_2") - self.tableWidget_2.setColumnCount(6) + self.tableWidget_2.setColumnCount(7) self.tableWidget_2.setRowCount(0) item = QtGui.QTableWidgetItem() self.tableWidget_2.setHorizontalHeaderItem(0, item) @@ -854,6 +988,8 @@ class Ui_MainWindow(object): self.tableWidget_2.setHorizontalHeaderItem(4, item) item = QtGui.QTableWidgetItem() self.tableWidget_2.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget_2.setHorizontalHeaderItem(6, item) self.tableWidget_2.horizontalHeader().setStretchLastSection(True) self.verticalLayout_6.addWidget(self.tableWidget_2) self.verticalLayout_9.addWidget(self.groupBox) @@ -1053,7 +1189,7 @@ class Ui_MainWindow(object): 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.setGeometry(QtCore.QRect(0, 0, 982, 24)) self.menubar.setObjectName("menubar") self.menuWelcome = QtGui.QMenu(self.menubar) self.menuWelcome.setEnabled(True) @@ -1179,17 +1315,16 @@ class Ui_MainWindow(object): self.menubar.addAction(self.menuSystem.menuAction()) self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(4) + 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) + self.tableWidget.horizontalHeader().resizeSection(5,5) + self.tableWidget_2.horizontalHeader().resizeSection(5,5) #set order column to 20 wide self.tableWidget.horizontalHeader().resizeSection(0,20) self.tableWidget_2.horizontalHeader().resizeSection(0,20) @@ -1199,16 +1334,9 @@ class Ui_MainWindow(object): self.thread_pkg_load = load_pkg_thread() self.run_cmd_thread = run_cmd_thread() self.upload_file_thread = run_cmd_thread() - + self.createPkgListThread = create_pkglist_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) @@ -1216,6 +1344,8 @@ class Ui_MainWindow(object): 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) + QtCore.QObject.connect(self.createPkgListThread,SIGNAL("pkg_load_list_finished(bool)"), self.pkg_load_finished) + QtCore.QObject.connect(self.createPkgListThread,SIGNAL("insert_group(QString)"), self.insert_group) #connect pkgload thread to insert item QtCore.QObject.connect(self.thread_pkg_load, QtCore.SIGNAL("insertItem(PyQt_PyObject)"), self.insert_item) @@ -1269,6 +1399,7 @@ class Ui_MainWindow(object): 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.createPkgListThread, 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) @@ -1296,8 +1427,6 @@ class Ui_MainWindow(object): 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) @@ -1343,18 +1472,27 @@ class Ui_MainWindow(object): 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 insert_group(self,g): + self.comboBox.addItem(g) + + def pkg_load_finished(self): + global masterListPopulated + masterListPopulated=True + self.comboBox.addItem("All-stable") + self.comboBox.addItem("All-testing") + self.enable_table() + 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=='': @@ -1391,8 +1529,6 @@ class Ui_MainWindow(object): if self.tableWidget_2.horizontalScrollBar().value > 5: self.tableWidget_2.horizontalScrollBar().setValue (0) - - def show_search(self): print "show" self.DLG.show() @@ -1463,7 +1599,6 @@ class Ui_MainWindow(object): self.update_ouputwindow(line,PrintBoth) def update_ouputwindow(self,line,PrintBoth=True): - self.textEdit.append(line) if PrintBoth: self.textEdit_dock.append(line) @@ -1479,20 +1614,17 @@ class Ui_MainWindow(object): 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] + columnlist=[1,2,3,6] for i in columnlist: self.tableWidget.resizeColumnToContents(i) self.tableWidget_2.resizeColumnToContents(i) @@ -1513,7 +1645,6 @@ class Ui_MainWindow(object): self.tabWidget_2.setEnabled(Value) def disable_table(self): - self.tableWidget.setEnabled(False) self.comboBox.setEnabled(False) self.pushButton_8.setEnabled(False) @@ -1521,7 +1652,6 @@ class Ui_MainWindow(object): self.disable_go_button() def enable_table(self): - self.tableWidget.setEnabled(True) self.comboBox.setEnabled(True) self.pushButton_8.setEnabled(True) @@ -1536,7 +1666,6 @@ class Ui_MainWindow(object): self.lineEdit_20.setEnabled(Value) self.pushButton_2.setEnabled(Value) - def set_repo_box(self,Value): self.comboBox.setEnabled(Value) self.comboBox_2.setEnabled(Value) @@ -1553,7 +1682,6 @@ class Ui_MainWindow(object): 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) @@ -1571,9 +1699,29 @@ class Ui_MainWindow(object): pkgversion=itemTextList[1] pkglocation = itemTextList[3] pkgdescription=itemTextList[4] + pkggroup=itemTextList[5] + pkgtooltip=pkgdescription + if pkggroup: + pkgtooltip+="Groups: " + pkgloc=[] + pkglist=[] + pkgloc.append(pkgname.strip()) + pkgloc.append(pkglocation) + #print pkgloc + #for i in pkggroup: + #pkglist=[] + #pkg_group_name="%s/pkg_group_%s.group" %(self.all_settings['group_file_location'],i) + #pkgtuple=(pkgname.strip(),pkglocation) + #pkglist.append(pkgtuple) + ##pkglist.append(pkgname) + #pkglist.append(pkgloc) + #self.addPkgGroup(pkg_group_name,pkglist) + #pkgtooltip+=" " + #pkgtooltip+= i +# print pkggroup itr = self.tableWidget.rowCount() self.tableWidget.insertRow(itr) - for i in range(0,6): + for i in range(0,7): item = QtGui.QTableWidgetItem() item.setToolTip(pkgdescription) item.setFlags(Qt.ItemIsUserCheckable | @@ -1591,9 +1739,10 @@ class Ui_MainWindow(object): 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.tableWidget.item(itr,4).setText(",".join(pkggroup)) + self.tableWidget.item(itr,5).setText(pkglocation) + self.tableWidget.item(itr,6).setText(pkgdescription) + self.tableWidget.item(itr,6).setToolTip(pkgtooltip) self.updateLCDtotal_pkg() def insert_item_ABS(self,itemTextList): @@ -1601,9 +1750,19 @@ class Ui_MainWindow(object): pkgversion=itemTextList[1] pkglocation = itemTextList[3] pkgdescription=itemTextList[4] + pkggroup=itemTextList[5] + pkgtooltip=pkgdescription + if pkggroup: + pkgtooltip+="Groups: " + pkgloc=[] + pkglist=[] + pkgloc.append(pkgname.strip()) + pkgloc.append(pkglocation) + + itr = self.tableWidget_2.rowCount() self.tableWidget_2.insertRow(itr) - for i in range(0,6): + for i in range(0,7): item = QtGui.QTableWidgetItem() item.setToolTip(pkgdescription) item.setFlags(Qt.ItemIsUserCheckable | @@ -1619,8 +1778,9 @@ class Ui_MainWindow(object): 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.tableWidget_2.item(itr,4).setText(",".join(pkggroup)) + self.tableWidget_2.item(itr,5).setText(pkglocation) + self.tableWidget_2.item(itr,6).setText(pkgdescription) self.updateLCDtotal_ABS() def populate_pkg_list(self,repo_value): @@ -1633,11 +1793,17 @@ class Ui_MainWindow(object): 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"] + + if masterListPopulated: + outtext="Loading package list from memory" + self.update_ouputwindow(outtext) + self.thread_pkg_load.value_init(repo_value,self.all_settings['repo_location'],"mainrepo") + else: + 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" ,"Group", "Location", "Description"] self.tableWidget.setHorizontalHeaderLabels(headers) def populate_abs_pkg_list(self,abs_repo_value): @@ -1655,7 +1821,7 @@ class Ui_MainWindow(object): 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"] + headers=[".","Name", "Version", "Status" ,"Group", "Location", "Description"] self.tableWidget_2.setHorizontalHeaderLabels(headers) def select_all(self): @@ -1670,14 +1836,11 @@ class Ui_MainWindow(object): 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): @@ -1685,8 +1848,6 @@ class Ui_MainWindow(object): 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): @@ -1696,15 +1857,7 @@ class Ui_MainWindow(object): 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 show_yes_no_box(self,title,message,Modal=True): self.Modal=Modal self.msgyesbox = QtGui.QMessageBox() @@ -1713,15 +1866,11 @@ class Ui_MainWindow(object): self.msgyesbox.setModal(Modal) self.msgyesbox.setStandardButtons(QMessageBox.Yes | QMessageBox.No); self.msgyesbox.setDefaultButton(QMessageBox.Save); - #int ret = self.msgyesbox.exec(); - if self.msgyesbox.exec_() == 16384 : return True else: return False - - def buttonpushed(self): itemlist=self.tableWidget.selectedItems() makepkg_list=[] @@ -1744,16 +1893,24 @@ class Ui_MainWindow(object): def populate_group_box(self): postfix=".group" + grouplist=[] dir_list = os.listdir(self.all_settings['group_file_location']) self.comboBox.clear() + self.comboBox.setInsertPolicy(6) 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) + grouplist.append(groupname) #self.comboBox.setCurrentIndex(1) + grouplist.sort() + for g in grouplist: + self.comboBox.addItem(g) self.comboBox.setEnabled(True) + #kick of thread to create list of stuff + self.disable_table() + self.createPkgListThread.value_init(grouplist,self.all_settings['repo_location'],"mainrepo",self.all_settings['group_file_location']) def populate_abs_group_box(self): postfix=".group" @@ -1849,9 +2006,6 @@ class Ui_MainWindow(object): os.chdir("..") self.populate_abs_group_box() - - - def disable_go_button(self): self.pushButton_go.setEnabled(False) self.pushButton_stop.setEnabled(True) @@ -1916,35 +2070,6 @@ class Ui_MainWindow(object): 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) @@ -2077,9 +2202,10 @@ class Ui_MainWindow(object): group = "%s/adHoc.group" %self.all_settings['group_file_location'] self.addPkgGroup(group) - def addPkgGroup(self,group=None): + def addPkgGroup(self,group=None,dir_list=None): groupname = group - dir_list = self.find_pkgdir() + if dir_list == None: + dir_list = self.find_pkgdir() if groupname == None: options = QtGui.QFileDialog.Options() options |= QtGui.QFileDialog.DontUseNativeDialog @@ -2094,16 +2220,19 @@ class Ui_MainWindow(object): self.update_ouputwindow(outtext) return filename = groupname + print filename try: f = open(filename,"a") except: outtext="Couldn't open file for writing: %s" %filename print outtext return False - print filename + for item,dir in dir_list: - itemText= str(item.text()) - print dir + if not type(item) == str: + itemText= str(item.text()) + else: + itemText=item.strip() location = dir.replace(self.all_settings["repo_location"]+"/", "") outtext = "Adding %s to %s" %(location,group) self.update_ouputwindow(outtext) @@ -2111,12 +2240,6 @@ class Ui_MainWindow(object): f.write("\n") f.close() - - - - - - def actionChangeLog(self): dir_list = self.find_pkgdir() for item,dir in dir_list: @@ -2158,7 +2281,6 @@ class Ui_MainWindow(object): 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() @@ -2202,7 +2324,6 @@ class Ui_MainWindow(object): 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() @@ -2378,7 +2499,6 @@ class Ui_MainWindow(object): def promote(self,prunedlist,dir): - for item in prunedlist: itemText= str(item.text()) itemrow = item.row() @@ -2426,8 +2546,6 @@ class Ui_MainWindow(object): self.update_ouputwindow(outtext) return True - - def promoteAction(self): self.update_ouputwindow(sepLine) self.disable_table() @@ -2504,9 +2622,6 @@ class Ui_MainWindow(object): 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: @@ -2659,8 +2774,6 @@ class Ui_MainWindow(object): outtext = "Could not create group: %s" %(text) self.update_ouputwindow(outtext) - - def updateSystem(self): runcmd="pacman" cmdargs=["-Su","--noconfirm"] @@ -2672,8 +2785,6 @@ class Ui_MainWindow(object): def switch_pacman_to_remote(self): print "switch to remote" - - def save_config_settings(self): from __main__ import settings_dict homedir = os.path.expanduser("~") @@ -2750,9 +2861,7 @@ class Ui_MainWindow(object): 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)) @@ -2772,8 +2881,9 @@ class Ui_MainWindow(object): 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.tableWidget.horizontalHeaderItem(4).setText(QtGui.QApplication.translate("MainWindow", "Group", None, QtGui.QApplication.UnicodeUTF8)) + self.tableWidget.horizontalHeaderItem(5).setText(QtGui.QApplication.translate("MainWindow", "Location", None, QtGui.QApplication.UnicodeUTF8)) + self.tableWidget.horizontalHeaderItem(6).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)) @@ -2819,8 +2929,9 @@ class Ui_MainWindow(object): 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.tableWidget_2.horizontalHeaderItem(4).setText(QtGui.QApplication.translate("MainWindow", "Group", None, QtGui.QApplication.UnicodeUTF8)) + self.tableWidget_2.horizontalHeaderItem(5).setText(QtGui.QApplication.translate("MainWindow", "Location", None, QtGui.QApplication.UnicodeUTF8)) + self.tableWidget_2.horizontalHeaderItem(6).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)) @@ -2922,6 +3033,6 @@ class Ui_MainWindow(object): self.actionInstall_all_updates.setText(QtGui.QApplication.translate("MainWindow", "System update", None, QtGui.QApplication.UnicodeUTF8)) self.actionSwitch_to_local.setText(QtGui.QApplication.translate("MainWindow", "Switch to local", None, QtGui.QApplication.UnicodeUTF8)) self.actionSwitch_to_remote.setText(QtGui.QApplication.translate("MainWindow", "Switch to remote", None, QtGui.QApplication.UnicodeUTF8)) - self.actionClear_Adhoc_Group.setText(QtGui.QApplication.translate("MainWindow", "Clear Adhoc Group", None, QtGui.QApplication.UnicodeUTF8)) + self.actionClear_Adhoc_Group.setText(QtGui.QApplication.translate("MainWindow", "Clear Adhoc Groupe", None, QtGui.QApplication.UnicodeUTF8)) self.actionCreate_Group.setText(QtGui.QApplication.translate("MainWindow", "Create Group", None, QtGui.QApplication.UnicodeUTF8)) -- cgit v0.12