root/trunk/src/CreateKit.py @ 2

Revision 2, 9.0 KB (checked in by pcabido, 5 years ago)

First commit

  • Property svn:executable set to *
Line 
1# -*- coding: utf-8 -*-
2#from metapackagehandler import mtpkgHandler
3#from repositoryhandler import repHandler
4import warnings
5warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
6
7import pygtk
8pygtk.require('2.0')
9import gtk
10import gtk.glade
11
12import os
13import sys
14import gobject
15import threading
16import random
17import time
18
19import apt
20import apt_pkg
21
22from util import util
23from util import aptutil
24from util import progress
25
26__title__ = "Criador de Kits"
27__version__ = "0.0.1"
28__authors__= ["Paulo Cabido <paulo.cabido@gmail.com>"]
29
30gtk.gdk.threads_init()
31apt_pkg.init()
32
33class CreateKitGTK(threading.Thread):
34   
35    def delete(self, widget, event, data=None):
36        gtk.main_quit()
37        return False
38   
39    def loadImage(self, image, path):
40        try:
41            image.set_from_file(path)
42        except:
43            pass
44   
45    #
46    # Package list
47    #
48    def progressbarTimeout(pbobj, val):
49        print pbobj
50        print val
51        if pbobj.activity_check.get_active():
52            pbobj.pulse()
53        else:
54            # Calculate the value of the progress bar using the
55            # value range set in the adjustment object
56            new_val = pbobj.get_fraction() + 0.01
57            if new_val > 1.0:
58                new_val = 0.0
59            # Set the new value
60            pbobj.set_fraction(new_val)
61   
62        # As this is a timeout function, return TRUE so that it
63        # continues to get called
64        return True
65
66    def setupPackageList(self, ignore=True):
67        self.window.set_sensitive(False)
68        self.treeStore = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
69        self.dialogProgress.show()
70        self.pbar.pulse()
71        self.pbar.set_fraction(0.0)
72        #t = gobject.timeout_add(100, self.progressbarTimeout, self.pbar)
73       
74        time.sleep(1)
75        self.stopthread = threading.Event()
76        cache = apt_pkg.GetCache(progress.TextProgress())
77        records = apt_pkg.GetPkgRecords(cache)
78        packages = cache.Packages
79        pkgList = []
80        #while not self.stopthread.isSet():
81
82        gtk.gdk.threads_enter()
83        for pkg in packages:
84            for pkgInfo in pkg.VersionList:
85                for packFile, index in pkgInfo.FileList:
86                    records.Lookup((packFile,index))
87                    if packFile.IndexType != 'Debian Package Index' and ignore:
88                        continue
89                    pkgList.append((None,(None, pkg.Name, pkgInfo.VerStr, records.ShortDesc)))
90                    #print (None, pkg.Name, pkgInfo.VerStr, records.ShortDesc, packFile.IndexType)             
91       
92        pkgList.sort()
93        for elm in pkgList:
94            self.treeStore.append(elm[0], (elm[1][0], elm[1][1], elm[1][2], elm[1][3]))
95       
96        time.sleep(1)
97       
98        self.rendererText = gtk.CellRendererText()
99       
100        self.rendererToggle = gtk.CellRendererToggle()
101        self.rendererToggle.set_property('activatable', True)
102        self.rendererToggle.connect( 'toggled', self.colToggledClicked, self.treeStore )
103       
104        self.colToggle = gtk.TreeViewColumn("", self.rendererToggle )
105        self.colToggle.add_attribute( self.rendererToggle, "active", 0)
106       
107        self.treeview.append_column(self.colToggle)
108       
109        self.treeview.append_column(gtk.TreeViewColumn("Pacote", self.rendererText, text=1))
110        self.treeview.append_column(gtk.TreeViewColumn("Versão", self.rendererText, text=2))
111        self.treeview.append_column(gtk.TreeViewColumn("Descrição", self.rendererText, text=3))
112       
113        self.treeview.set_model(self.treeStore)
114       
115        gtk.gdk.threads_leave()
116        self.dialogProgress.hide()
117        self.window.set_sensitive(True)
118        #self.stopthread.set()
119       
120    def colToggledClicked( self, cell, path, model ):
121        """
122        Sets the toggled state on the toggle button to true or false.
123        """
124       
125        model[path][0] = not model[path][0]
126        return
127
128    #
129    # aboutdialog
130    #
131   
132    def closeAbout(self, widget, data=None):
133        self.aboutDialog.hide()
134        return True
135   
136    def showAbout(self, widget, data=None):
137        """
138        Create the about dialog.
139        @param widget: Current widget
140        @type widget: gtk widget
141        """
142       
143        print widget
144        #self.aboutDialogIcon = gtk.gdk.pixbuf_new_from_file("pixmaps/kitsalinex.svg")
145        self.aboutDialog = self.wTree.get_widget("aboutdialogCriarkits")
146        self.aboutDialog.set_name(__title__)
147        self.aboutDialog.set_version(__version__)
148        #self.aboutDialog.set_comments("GTK frontend para Criar Kits.")
149        #self.aboutDialog.set_copyright("Copyright (C) Paulo Cabido 2008")
150        self.aboutDialog.set_authors(__authors__)
151        #self.aboutDialog.set_logo(self.aboutDialogIcon)
152       
153        self.aboutDialog.connect("destroy", self.closeAbout)
154        self.aboutDialog.connect("delete_event", self.closeAbout)
155        self.aboutDialog.connect("response", self.closeAbout)
156        self.aboutDialog.show()
157       
158    #
159    # __init__
160    #
161   
162    def __init__(self):
163        self.gladefile = "CreateKit.glade"
164        self.wTree = gtk.glade.XML(self.gladefile)
165       
166        #botoes do notebook
167        self.buttonNext = self.wTree.get_widget("buttonNext")
168        self.buttonNext2 = self.wTree.get_widget("buttonNext2")
169        self.buttonNext3 = self.wTree.get_widget("buttonNext3")
170        self.buttonNext4 = self.wTree.get_widget("buttonNext4")
171        self.buttonBack = self.wTree.get_widget("buttonBack")
172        self.buttonBack2 = self.wTree.get_widget("buttonBack2")
173        self.buttonBack3 = self.wTree.get_widget("buttonBack3")
174        self.buttonBack4 = self.wTree.get_widget("buttonBack4")
175       
176        self.buttonQuit = self.wTree.get_widget("buttonQuit")
177        self.buttonHelp = self.wTree.get_widget("buttonHelp")
178       
179        self.notebook = self.wTree.get_widget("notebook")
180        self.imageDadosGerais = self.wTree.get_widget("imageDadosGerais")
181        self.imageDesc = self.wTree.get_widget("imageDesc")
182        self.imagePackages = self.wTree.get_widget("imagePackages")
183        self.imagePostInst = self.wTree.get_widget("imagePostInst")
184        self.imageGenerate = self.wTree.get_widget("imageGenerate")
185        self.treeview = self.wTree.get_widget("treeviewPackages")
186       
187        self.cmbArch = self.wTree.get_widget("cmbArch")
188        self.cmbSection = self.wTree.get_widget("Section")
189        self.cmbPriority = self.wTree.get_widget("Priority")
190       
191        self.aboutMenu = self.wTree.get_widget("aboutMenu")
192        self.quitMenu = self.wTree.get_widget("quitMenu")   
193           
194        self.window_progress = self.wTree.get_widget("window_progress")
195        self.dialogProgress = self.wTree.get_widget("dialogProgress")
196        self.pbar = self.wTree.get_widget("pbarCache")
197       
198        self.window = self.wTree.get_widget("window_criarkit")
199        if (self.window):
200            self.window.set_title(__title__)
201            self.window.connect("destroy", gtk.main_quit)
202            self.window.connect("delete_event", self.delete)
203           
204            self.buttonQuit.connect("clicked", gtk.main_quit)
205           
206            #define as imagens dos tabs
207            self.loadImage(self.imageDadosGerais, "icons/package_development.png")
208            self.loadImage(self.imageDesc, "icons/emblem-documents.png")
209            self.loadImage(self.imagePackages, "icons/file-roller.png")
210            self.loadImage(self.imagePostInst, "icons/emblem-package.png")
211            self.loadImage(self.imageGenerate, "icons/application-x-deb.png")
212           
213            #notebook navigation
214            self.buttonNext.connect("clicked", lambda w: self.notebook.next_page())
215            self.buttonNext2.connect("clicked", lambda w: self.notebook.next_page())
216            self.buttonNext3.connect("clicked", lambda w: self.notebook.next_page())
217            self.buttonNext4.connect("clicked", lambda w: self.notebook.next_page())
218            self.buttonBack.connect("clicked", lambda w: self.notebook.prev_page())
219            self.buttonBack2.connect("clicked", lambda w: self.notebook.prev_page())
220            self.buttonBack3.connect("clicked", lambda w: self.notebook.prev_page())
221            self.buttonBack4.connect("clicked", lambda w: self.notebook.prev_page())
222            #o glade poe o expand False, e preciso mudar manualmente
223            for n in range(self.notebook.get_n_pages()):
224                self.notebook.set_tab_label_packing(self.notebook.get_nth_page(n), True, True, gtk.PACK_START)
225               
226            #menubar
227            self.quitMenu.connect('activate', gtk.main_quit)
228            self.aboutMenu.connect('activate', self.showAbout)
229           
230            #treeview
231            #self.setupPackageList()
232            threading.Thread(name="self.setupPackageList", target=self.setupPackageList).start()
233            #self.ProgTest()
234       
235def main():
236    gtk.main()
237    return 0
238
239if __name__ == "__main__":
240    hwg = CreateKitGTK()
241    main()
Note: See TracBrowser for help on using the browser.