69
74
# ---- dictionary ----
70
75
dic = { 'on_btnCreateGo_clicked' : self.on_btnCreateGo_clicked,'on_btnAddDeb_clicked':self.on_btnAddDeb_clicked}
72
self.gladeFile.signal_autoconnect(dic)
77
self.gladeFile.signal_autoconnect(dic)
78
self.frmCreateCD.connect('response', self.onResponse)
73
79
self.cmdCreateGo = self.gladeFile.get_widget("btnCreateGo")
74
81
self.cmdAddDeb = self.gladeFile.get_widget("btnAddDeb")
75
82
self.cmdCancel = self.gladeFile.get_widget("btnCancel")
83
self.cmdCancel.connect('clicked',self.onCancel)
76
85
self.lblMediaNumber = self.gladeFile.get_widget("lblMediaNumber")
77
86
self.cboMediaCreate = self.gladeFile.get_widget("cboMediaCreate")
78
87
self.cboMediaCreate.connect("changed", self.on_cboMediaCreate)
89
self.txtFileName = self.gladeFile.get_widget('entryIsoFilename')
90
self.txtFileName.connect('insert-text',self.on_insert_text)
80
92
self.ckbtnOldVersions = self.gladeFile.get_widget("ckbtnOldVersions")
81
93
self.ckbtnOldVersions.connect("toggled", self.on_ckbtnOldVersion_check)
83
95
self.ckbtnMetaPackage = self.gladeFile.get_widget("ckbtnMetaPackage")
84
96
self.ckbtnMetaPackage.connect("toggled", self.on_ckbtnMetaPackage_check)
98
self.cmbIsoFileName = self.gladeFile.get_widget("fileIsoTo")
99
self.cmbIsoFileName.connect('selection_changed', self.on_cmbIsoFileName_change)
86
101
self.ckbtnAutoSelectDepends = self.gladeFile.get_widget("ckbtnAutoSelectDepends")
88
103
ret = metaPackage.updatePackageCount(None,False)
97
112
result = self.frmCreateCD.run()
99
114
#we are done with the dialog, destory it
100
self.frmCreateCD.destroy()
115
if result == gtk.RESPONSE_CANCEL :
116
self.frmCreateCD.destroy()
117
if result == gtk.RESPONSE_OK and not self.isError :
118
self.frmCreateCD.destroy()
102
120
#return the result
123
def on_cmbIsoFileName_change(self, widget):
124
toMainDir = widget.get_filename()
126
if not self.util.checkAccess(toMainDir):
127
widget.set_current_folder(os.path.expanduser('~/'))
128
widget.emit_stop_by_name('selection_changed')
132
def package_tree_sort_func(self, model, iter1, iter2):
133
statecmp = cmp(model.get_value(iter1, config.C_TITLE), model.get_value(iter2, config.C_TITLE))
136
descr1 = model.get_value(iter1, config.C_PKG).get_pkg_Name()
140
descr1 = descr1.decode('utf-8')
142
descr2 = model.get_value(iter2, config.C_PKG).get_pkg_Name()
146
descr2 = descr2.decode('utf-8')
148
return cmp(descr1, descr2)
151
def onCancel(self,widget,*args):
152
self.frmCreateCD.destroy()
154
def onResponse(self, response_id ,value):
155
if response_id == gtk.RESPONSE_OK and self.isError:
156
print 'Onresponse:', response_id
158
self.frmCreateCD.emit_stop_by_name('response')
159
elif response_id == gtk.RESPONSE_OK and not self.isError:
160
self.wProgress.destroy()
162
def on_insert_text (self, entry, text, length, position):
163
"""Stop garbage input."""
164
for c in text[:length]:
165
if c in r"(){}[]<>?*&%$#@!';:|\/^ ":
166
entry.emit_stop_by_name ('insert-text')
105
169
def on_cboMediaCreate(self,*args):
106
170
ret = metaPackage.updatePackageCount(self.packageList)
107
171
self.updateCountView(ret)
149
213
#column = gtk.TreeViewColumn(title, cell, text = columnId)
151
215
column.set_resizable(True)
152
column.set_sort_column_id(columnId)
216
#column.set_sort_column_id(columnId)
153
218
self.packageView.append_column(column)
163
228
self.packageView.set_sensitive(False)
165
230
self.wProgress = ProgressWindow.AptOnCDProgressDialog(self.frmCreateCD)
166
self.wProgress.Title("APTonCD")
231
self.wProgress.Title("Selecting Packages")
167
232
self.wProgress.TaskTitle(msg.MESSAGE_0001)
168
233
self.wProgress.Task(msg.MESSAGE_0002)
169
234
self.wProgress.Description(msg.MESSAGE_0003)
202
267
# this will start the list sorted by name
203
268
self.packageList.set_sort_column_id(1, gtk.SORT_ASCENDING)
270
self.createDebFileList()
204
272
# this will create the main list and store it in the view
273
self.packageList.set_sort_func(config.C_TITLE, self.package_tree_sort_func)
274
self.packageList.set_sort_column_id(config.C_TITLE, gtk.SORT_ASCENDING)
205
276
self.packageView.set_model(self.packageList)
207
self.createDebFileList()
209
279
self.wProgress.destroy()
230
300
if mediaCount > 1 :
231
301
self.gladeFile.get_widget("lblMediaNumber") .set_text("<span foreground='gray'><big><b>%s %ss</b></big></span>" % ( mediaCount,mediaType))
233
#self.gladeFile.get_widget("lblMediaNumber") .set_text("%s %s" % ( mediaCount,mediaType))
234
self.gladeFile.get_widget("lblMediaNumber") .set_text("<span foreground='gray'><big><b>%s %s</b></big></span>" % ( mediaCount,mediaType))
303
self.gladeFile.get_widget("lblMediaNumber") .set_text("<span foreground='gray'><big><b>%s %s</b></big></span>" % ( mediaCount,mediaType))
236
305
self.gladeFile.get_widget("lblMediaNumber").set_use_markup(True)
274
343
self.updateCountView(ret)
276
345
from messageBox import MessageBox
277
MessageBox().ShowError(msg.MESSAGE_0005 % (filename,self.frmCreateCD))
346
MessageBox().ShowError(msg.MESSAGE_0005 %filename,self.frmCreateCD)
279
348
self.cursorManager.setBusy(self.frmCreateCD,False)
358
def on_btnCreateGo_clicked(self,*args):
427
def on_btnCreateGo_clicked(self,widget, *args):
360
429
self.entryIsoFilename = self.gladeFile.get_widget("entryIsoFilename").get_text()
362
431
if self.entryIsoFilename !="":
363
432
if not self.util.isValidFileName(self.entryIsoFilename):
364
433
mReturn = MessageBox().ShowError((msg.MESSAGE_0024 % ( self.entryIsoFilename)),self.frmCreateCD)
367
437
self.cmdCreateGo.set_sensitive(False)
368
438
self.cmdCancel.set_sensitive(False)
370
self.wProgress = ProgressWindow.AptOnCDProgressDialog(self.frmCreateCD)
371
self.wProgress.Title("APTonCD")
372
self.wProgress.TaskTitle(msg.MESSAGE_0013)
373
self.wProgress.Task(msg.MESSAGE_0002)
374
self.wProgress.Description(msg.MESSAGE_0014)
440
toMainDir = self.gladeFile.get_widget("fileIsoTo").get_filename()
377
self.wProgress.destroy()
442
if self.util.checkAccess(toMainDir):
444
self.wProgress = ProgressWindow.AptOnCDProgressDialog(self.frmCreateCD)
445
self.wProgress.Title("APTonCD")
446
self.wProgress.TaskTitle(msg.MESSAGE_0013)
447
self.wProgress.Task(msg.MESSAGE_0002)
448
self.wProgress.Description(msg.MESSAGE_0014)
450
if not self.createAptOnCD():
453
MessageBox().ShowError(msg.MESSAGE_0015,self.frmCreateCD)
379
457
self.cmdCreateGo.set_sensitive(True)
380
458
self.cmdCancel.set_sensitive(True)
382
462
def createAptOnCD(self):
391
471
if not self.util.checkAccess(toMainDir):
392
472
MessageBox().ShowError(msg.MESSAGE_0015,self.frmCreateCD)
395
to = toMainDir + "/aptoncd/"
396
packages = to + "packages/"
397
metapackageDir = to + "metapackage/"
398
475
media = self.cboMediaCreate.get_active_text()
400
config.set("cache", "to", to)
401
config.set("cache", "packages", packages)
402
477
config.set("cache", "media", media)
404
479
config.write(config.CONFIG_FILE)
406
481
metaPackActive = self.ckbtnMetaPackage.get_active()
482
tmpdir = "/tmp/aptoncd-c/"
483
tmpmetapackageDir = tmpdir +"metapackage/"
484
tmppackages = tmpdir + "packages/"
408
self.util.mkdir(to,True)
409
self.util.mkdir(packages ,True)
486
self.util.mkdir(tmpdir,True)
411
488
if metaPackActive:
412
self.util.mkdir(metapackageDir + 'DEBIAN/',True)
489
self.util.mkdir(tmpmetapackageDir + 'DEBIAN/',True)
414
self.util.removePath(metapackageDir )
491
self.util.removePath(tmpmetapackageDir )
416
493
self.wProgress.show()
431
508
for cds in isoFileList.keys():
432
509
self.wProgress.Task(msg.MESSAGE_0002)
433
510
# --- some meta-package configs ---
434
controlFile = metapackageDir + 'DEBIAN/control'
511
controlFile = tmpmetapackageDir + 'DEBIAN/control'
435
512
self.util.delFile(controlFile)
437
514
mPack = metaPackage.MetaPackage(controlFile)
439
destination = packages+ media +"_" + cds.__str__() + "/"
516
destination = tmppackages+ media +"_" + cds.__str__() + "/"
440
517
pkgdest = destination + 'packages/'
442
self.util.mkdir(destination,True)
519
self.util.mkdir(destination,True)
443
520
self.util.mkdir(pkgdest,True)
445
522
for pkg in isoFileList[cds]:
462
539
if not mPack.write():
463
540
errorMsg = msg.MESSAGE_0018
465
result = os.system('dpkg-deb -b ' + metapackageDir.replace(' ','\ ') + ' ' + pkgdest.replace(' ','\ ') + mPack.get_mtFileName() + ' > /dev/null 2> /dev/null')
542
result = os.system('dpkg-deb -b ' + tmpmetapackageDir.replace(' ','\ ') + ' ' + pkgdest.replace(' ','\ ') + mPack.get_mtFileName() + ' > /dev/null 2> /dev/null')
466
543
self.util.delFile(controlFile)
468
545
# --- Scan the packages ---
473
550
self.wProgress.Task(msg.MESSAGE_0019)
474
while gtk.events_pending(): gtk.main_iteration()
477
os.chdir(destination)
551
while gtk.events_pending(): gtk.main_iteration()
554
os.chdir(destination)
478
555
PackagesFile = destination.replace(' ','\ ') + 'Packages'
479
os.system('apt-ftparchive packages packages/ > ' + PackagesFile)
481
utils.compress(PackagesFile, PackagesFile)
556
os.system('apt-ftparchive packages packages/ > ' + PackagesFile)
558
utils.compress(PackagesFile, PackagesFile)
483
560
fileObj = gzip.GzipFile(os.path.join(destination +'Packages.gz' ), 'wb');
484
561
fileObj.write(file(os.path.join(destination +'Packages' ), 'rb').read())
487
os.system('apt-ftparchive release ./ > ./Release')
492
from mediaInfo import mediaInfo
493
infoFile = destination + 'aptoncd.info'
494
info = mediaInfo(infoFile)
498
from mediaInfo import aptDiskInfo
499
diskinfodir = os.path.join(destination +'.disk')
500
self.util.mkdir(diskinfodir,True)
501
infoDiskFile = os.path.join(diskinfodir,'info')
502
infoDisk = aptDiskInfo(infoDiskFile,media + cds.__str__())
564
os.system('apt-ftparchive release ./ > ./Release')
569
infoFile = destination + 'aptoncd.info'
570
info = mediaInfo.mediaInfo(infoFile)
574
diskinfodir = os.path.join(destination +'.disk')
575
self.util.mkdir(diskinfodir,True)
576
infoDiskFile = os.path.join(diskinfodir,'info')
577
infoDisk = mediaInfo.aptDiskInfo(infoDiskFile,media + cds.__str__())
580
#write README.diskdefines
581
infoDiskDefinesFile = os.path.join(destination,'README.diskdefines')
582
infoDiskDefines = mediaInfo.aptDiskDefines(infoDiskDefinesFile,cds.__str__(),cds.__str__())
583
infoDiskDefines.write()
587
#write README.diskdefines
588
# infoDiskDefinesFile = os.path.join(destination,'README.diskdefines')
589
# print infoDiskDefinesFile
590
# infoDiskDefines = aptDiskDefines(infoDiskFile,cds.__str__(),cds.__str__())
591
# print infoDiskDefines
592
# infoDiskDefines.write()
505
594
# --- Make the .iso image ---
506
595
if self.wProgress.cancel_status:
511
today = datetime.date.today().strftime('%Y%m%d')
600
today = datetime.date.today().strftime('%Y%m%d')
513
603
if self.entryIsoFilename == "":
514
fileDestiny = 'aptoncd-' + today +"-" + media + cds.__str__() +'.iso'
604
fileNames = [nFile for nFile in os.listdir(toMainDir) if ( 'aptoncd-' + today +"-" + media + cds.__str__() in nFile )]
605
if len(fileNames) >0:
606
fileDestiny = 'aptoncd-' + today +"-" + media + cds.__str__() +'-'+str(len(fileNames)) +'.iso'
608
fileDestiny = 'aptoncd-' + today +"-" + media + cds.__str__() +'.iso'
516
fileDestiny = self.entryIsoFilename + "-" + media + cds.__str__() +'.iso'
610
fileNames = [nFile for nFile in os.listdir(toMainDir) if ( self.entryIsoFilename + "-" + media + cds.__str__() in nFile)]
611
if len(fileNames) >0:
612
fileDestiny = self.entryIsoFilename + "-" + media + cds.__str__() +'-' +str( len(fileNames)) +'.iso'
614
fileDestiny = self.entryIsoFilename + "-" + media + cds.__str__() +'.iso'
518
finalDestiny = folderDestiny + fileDestiny
616
finalDestiny = os.path.join(toMainDir, fileDestiny)
519
617
isos.append(finalDestiny)
521
619
self.wProgress.Task(msg.MESSAGE_0020)
528
626
self.wProgress.Task(msg.MESSAGE_0021)
530
628
#clean folders created previously
531
self.util.removePath(packages)
532
self.util.removePath(metapackageDir)
629
self.util.removePath(tmpdir)
535
631
self.wProgress.hide()
536
632
if len(errorMsg) > 0 :
537
mReturn = MessageBox().ShowInfo((msg.MESSAGE_0022 % ( finalDestiny,errorMsg)),self.frmCreateCD)
633
#mReturn = MessageBox().ShowInfo((msg.MESSAGE_0022 % ( finalDestiny,errorMsg)),self.frmCreateCD)
539
636
if MessageBox().ShowQuestion((msg.MESSAGE_0023 % finalDestiny),self.frmCreateCD):
540
637
for finalDestiny in isos:
541
os.system('/usr/bin/nautilus-cd-burner --source-iso=' + finalDestiny.replace(' ','\ ') + ' &')
638
os.system('/usr/bin/nautilus-cd-burner --source-iso=' + finalDestiny.replace(' ','\ ') + ' &')
640
self.frmCreateCD.destroy()
544
643
def CreateIsoList(self,size,packList = []):
550
650
for n in packList:
551
651
pkg = n[config.C_PKG]