99 lines
2.7 KiB
Plaintext
99 lines
2.7 KiB
Plaintext
|
#!/usr/bin/env python
|
||
|
|
||
|
# Modified file based upon John Finlay's PyGTK 2.0 Tutorial
|
||
|
# http://www.pygtk.org/pygtk2tutorial/sec-ProgressBars.html
|
||
|
|
||
|
import pygtk
|
||
|
pygtk.require('2.0')
|
||
|
import gtk, gobject
|
||
|
|
||
|
# Update the value of the progress bar so that we get
|
||
|
# some movement
|
||
|
def progress_timeout(pbobj):
|
||
|
# Calculate the value of the progress bar using the
|
||
|
# value range set in the adjustment object
|
||
|
new_val = pbobj.pbar.get_fraction() + 0.10
|
||
|
|
||
|
if new_val > 1.0:
|
||
|
return False
|
||
|
|
||
|
# Set the new value
|
||
|
pbobj.pbar.set_fraction(new_val)
|
||
|
|
||
|
# As this is a timeout function, return TRUE so that it
|
||
|
# continues to get called until we reach 1.0
|
||
|
return True
|
||
|
|
||
|
class ProgressBar:
|
||
|
# start the progress bar
|
||
|
def start_progress(self, widget, data=None):
|
||
|
# Add a timer callback to update the value of the progress bar
|
||
|
try:
|
||
|
gobject.source_remove(self.timer)
|
||
|
except:
|
||
|
pass
|
||
|
self.pbar.set_fraction(0.0)
|
||
|
self.timer = 0
|
||
|
self.timer = gobject.timeout_add (500, progress_timeout, self)
|
||
|
|
||
|
# Clean up allocated memory and remove the timer
|
||
|
def destroy_progress(self, widget, data=None):
|
||
|
try:
|
||
|
gobject.source_remove(self.timer)
|
||
|
except:
|
||
|
pass
|
||
|
self.timer = 0
|
||
|
gtk.main_quit()
|
||
|
|
||
|
def __init__(self):
|
||
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||
|
self.window.set_resizable(True)
|
||
|
|
||
|
self.window.connect("destroy", self.destroy_progress)
|
||
|
self.window.set_title("ProgressBar")
|
||
|
self.window.set_border_width(0)
|
||
|
|
||
|
vbox = gtk.VBox(False, 5)
|
||
|
vbox.set_border_width(10)
|
||
|
self.window.add(vbox)
|
||
|
vbox.show()
|
||
|
|
||
|
# Create a centering alignment object
|
||
|
align = gtk.Alignment(0.5, 0.5, 0, 0)
|
||
|
vbox.pack_start(align, False, False, 5)
|
||
|
align.show()
|
||
|
|
||
|
# Create the ProgressBar
|
||
|
self.pbar = gtk.ProgressBar()
|
||
|
self.pbar.set_text("some text")
|
||
|
self.pbar.set_fraction(0.0)
|
||
|
|
||
|
align.add(self.pbar)
|
||
|
self.pbar.show()
|
||
|
|
||
|
separator = gtk.HSeparator()
|
||
|
vbox.pack_start(separator, False, False, 0)
|
||
|
separator.show()
|
||
|
|
||
|
# Add a button to start the progress button
|
||
|
button = gtk.Button("start")
|
||
|
button.connect("clicked", self.start_progress)
|
||
|
vbox.pack_start(button, False, False, 0)
|
||
|
button.show()
|
||
|
|
||
|
# Add a button to exit the program
|
||
|
button = gtk.Button("close")
|
||
|
button.connect("clicked", self.destroy_progress)
|
||
|
vbox.pack_start(button, False, False, 0)
|
||
|
button.show()
|
||
|
|
||
|
self.window.show()
|
||
|
|
||
|
def main():
|
||
|
gtk.main()
|
||
|
return 0
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
ProgressBar()
|
||
|
main()
|