[pygtk] Newbie question

0 views
Skip to first unread message

Geert Geurts

unread,
Apr 18, 2008, 4:04:55 AM4/18/08
to py...@daa.com.au
Hello,
I'm a newbie trying to get to know pygtk/gtk so my questions might seem
stupid...
Sorry for that.

I'm trying to write a CDrip application using glade/pygtk. I'm now able
to write a program making a gui where you can write the artist album
info, and the cd is being ripped when you click the button. But I want
it to also show a progress window but this second window is shown as
soon you start the application altough the second window is in a
seperate class and is not initialized before a button click.
How come this window is shown before initialisation and how can I
control this behaviour?

Greetings,
Geert

_______________________________________________
pygtk mailing list py...@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Vláďa

unread,
Apr 18, 2008, 4:24:09 AM4/18/08
to Geert Geurts, py...@daa.com.au
This sounds very strange. Please check your code or post here a simple
example.

I'm working on an application which is similar to your's (but works with
DVDs and video) and everything works fine.

Vlada

Geert Geurts napsal(a):

Geert Geurts

unread,
Apr 18, 2008, 5:05:11 AM4/18/08
to Vláďa, py...@daa.com.au
Thank god I knew I was doing something realy strange... ;)
The first window get buildup at self.gladefile =
"/home/geert/Projects/pleintheater_media-server/cd_inserted/cd_inserted.glade"
self.wTree = gtk.glade.XML(self.gladefile)
the second window gets buildup at the call to gtk.main()...
Below is my program, if you have any comments on the structure, please
let me know, I know it's wrong I just don't know WHAT is wrong... I'm a
newbie...

the program:
#!/usr/bin/env python

import os,sys
import string,re
import pdb
try:
import pygtk
pygtk.require("2.0")
except:
pass

try:
import gtk
import gtk.glade
except:
sys.exit(1)

GLADEFILE =
"/home/geert/Projects/pleintheater_media-server/cd_inserted/cd_inserted.glade"

class NewCD:
"""Dit is de gui class als er een nieuwe cd wordt geladen"""
def __init__(self):
pdb.set_trace()
#Set the Glade file
self.Artiest=''
self.CDNaam=''
self.Genre=''
self.gladefile =
"/home/geert/Projects/pleintheater_media-server/cd_inserted/cd_inserted.glade"
self.wTree = gtk.glade.XML(self.gladefile)

#Get the Main Window, and connect the events
self.window = self.wTree.get_widget("window1")
if (self.window):
self.window.connect("destroy", gtk.main_quit)
dic = { "on_AtriestEntry_changed" : self.ArtiestEntryChanged,
"on_CDNaamEntry_changed" : self.CDNaamEntryChanged,
"on_GenreEntry_changed" : self.GenreEntryChanged,
"on_RipButton_clicked" : self.RipButtonClicked}
self.wTree.signal_autoconnect(dic)


#Create handler functies
def ArtiestEntryChanged(self, widget):
self.Artiest=widget.get_text()
print "artiest=",self.Artiest

def CDNaamEntryChanged(self, widget):
self.CDNaam=widget.get_text()
print "CDNaam=", self.CDNaam

def GenreEntryChanged(self, widget):
self.Genre=widget.get_text()
print "genre=",self.Genre

def RipButtonClicked(self, widget):
if self.Artiest=='':
print "Artist NOT set!"
elif self.CDNaam=='':
print "CDNaam NOT set!"
elif self.Genre.isdigit()==False:
print "Genre NOT set!"
else:
print "alles ok dus rippen!"
self.RIPCD(self.Artiest,self.CDNaam,self.Genre)

def RIPCD(self,Artiest,CDNaam,Genre):
self.DIR='/tmp/'+self.Artiest+' - '+self.CDNaam
self.DESTDIR='/media/data/music/'
os.mkdir(self.DIR)
os.chdir(self.DIR)
os.system('cdparanoia -Bw')
files=os.listdir('./')
progress=Progress()
for file in files:
if file.rfind('.wav')!=-1:
nummer=re.findall('\d',file)
if len(nummer)==3:
nr=nummer[0]+nummer[1]+nummer[2]
elif len(nummer)==2:
nr=nummer[0]+nummer[1]
else:
nr=nummer[0]
os.system('lame --preset cd '+file+' '+nr+'.mp3')
os.remove(file)
os.system('eyeD3 -a '+self.Artiest+' -A '+self.CDNaam+' -G
'+self.Genre+' '+nr+'.mp3')

os.chdir('/tmp')
os.system('mv '+self.DIR+' '+self.DESTDIR)

class Progress:
def __init__(self):
self.wTree=gtk.glade.XML(GLADEFILE)
self.progresswindow = self.wTree.get_widget("window2")
if (self.progresswindow):
self.progresswindow.connect("destroy", gtk.main_quit)
dic = { "on_button1_clicked" : self.ButtonClicked}
self.wTree.signal_autoconnect(dic)
self.progress=self.wTree.get_widget("progressbar1")
self.button=self.wTree.get_widget("button1")

def ButtonClicked(self):
print "Button Clicked!"

if __name__ == "__main__":
hwg = NewCD()
gtk.main()


Thanks for looking!!!

Greetings,
Geert

Christopher Backhouse

unread,
Apr 18, 2008, 8:48:24 AM4/18/08
to Geert Geurts, py...@daa.com.au
When you call gtk.glade.XML it creates everything that is in the glade file.
Easiest thing to do is to mark your progress window hidden in the glade
file, and then to call show() on it when you need it.
Reply all
Reply to author
Forward
0 new messages