I should mention that my office is using RHEL5 ... so pygtk and
associated are at the 2.10 version.


On Wed, Sep 7, 2011 at 10:07 AM, Tony Freeman <t0ny.fr33...@gmail.com> wrote:
> Hello Grant,
>
> Below is the entire bit of code I was working on at that time.  Pay
> attention to the spawn_async stuff. Good luck!
>
> -- Tony
>
>
>
> #!/usr/bin/python
>
> ####################################################
> ## THIS IS A GUI FRONT END TO THE adjust_grids.sh
> ## SCRIPT LOCATED IN /DATA/LOCAL/IFPS/
> ##
> ####################################################
>
> ####################################################
> ## SETUP THE ENVIRONMENT:
> ####################################################
>
> import pygtk
> import gtk
> import gtk.glade
> import gobject
> import os
>
> os.chdir("/awips/dev/localapps/adjust_grids/")
>
> ####################################################
> ### GLOBAL VARIABLES AND SITE CONFIGURATION:
> ####################################################
>
> import siteConfig
>
> xxxxxx  = siteConfig.xxxxxx
> guess   = siteConfig.guess
> program = siteConfig.program
>
> ### GLOBAL VARIABLES:
>
> keep_pulsing = True
>
> ####################################################
> ### PULL IN THE GUI:
> ####################################################
>
> wTree = gtk.glade.XML('adjust_grids.glade')
>
> ### MAIN WINDOW ITEMS (window1):
>
> calendar  = wTree.get_widget('calendar1')
> gridbox   = wTree.get_widget('combobox_grid')
> modelbox  = wTree.get_widget('combobox_model')
> hourbox   = wTree.get_widget('combobox_hour')
> statusbar = wTree.get_widget('label_status')
>
> ### PROGRESS WINDOW ITEMS (window2):
>
> window2 = wTree.get_widget('window2')
> dialog1 = wTree.get_widget('dialog1')
>
> progressbar = wTree.get_widget('progressbar1')
> progress_headline = wTree.get_widget('label_progress_headline')
> progress_info = wTree.get_widget('label_progress_info')
>
> textview = wTree.get_widget('textview1')
> textbuffer=textview.get_buffer()
>
> ####################################################
> ### FILL IN THE LIST BOXES:
> ####################################################
>
> for i in xxxxxx:
>        gridbox.append_text(i)
>
> for i in guess:
>        modelbox.append_text(i)
>
> gridbox.set_active(0)
> modelbox.set_active(0)
> hourbox.set_active(0)
>
> ####################################################
> ### DEFINE FUNCTIONS:
> ####################################################
>
> def write_status(comment):
>        statusbar.set_text(comment)
>        progress_info.set_text(comment)
>
> def cstdout_callback(fd, condition, channel):
>        global keep_pulsing
>        if condition == gobject.IO_HUP:
>                keep_pulsing=False
>        elif condition == gobject.IO_IN:
>                text = channel.readline()
>                iter = textbuffer.get_end_iter()
>                textbuffer.insert(iter, text)
>                textview.scroll_to_mark(textbuffer.get_insert(),0)
>        return keep_pulsing
>
> def update_progress_callback():
>        global keep_pulsing
>        if keep_pulsing:
>                progressbar.pulse()
>        else:
>                write_status("Done")
>                window2.hide()
>        return keep_pulsing
>
> def run_command(command):
>        global keep_pulsing
>        keep_pulsing=True
>        textbuffer.set_text("")
>        (cpid, cstdin, cstdout, cstderr) =
> gobject.spawn_async(command,flags=gobject.SPAWN_DO_NOT_REAP_CHILD,standard_output=True)
>        channel = os.fdopen(cstdout)
>        gobject.io_add_watch(cstdout, gobject.IO_HUP|gobject.IO_IN,
> cstdout_callback, channel)
>        gobject.timeout_add(150, update_progress_callback)
>        window2.show()
>
> def get_active_text(combobox):
>        model = combobox.get_model()
>        active = combobox.get_active()
>        if active < 0:
>                return None
>        return model[active][0]
>
> def build_timestamp():
>        year, month, day = calendar.get_date()
>        hour = get_active_text(hourbox)
>        month = "%02d" % month
>        day = "%02d" % day
>        timestamp = str(year) + str(month) + str(day) + "_" + str(hour)
>        return timestamp
>
> def on_dialog1_destroy(*args):
>        write_status("Backgrounded script")
>        dialog1.hide()
>
> def on_closebutton1_clicked(*args):
>        write_status("Backgrounded script")
>        dialog1.hide()
>
> def on_window1_destroy(*args):
>        write_status("Good-bye!")
>        gtk.main_quit()
>
> def on_window2_destroy(*args):
>        window2.hide()
>        dialog1.show()
>        write_status("Continuing in background")
>        return True
>
> def on_window2_delete_event(*args):
>        window2.hide()
>        dialog1.show()
>        write_status("Continuing in background")
>        return True
>
> def on_button_quit_clicked(*args):
>        write_status("See ya next time")
>        gtk.main_quit()
>
> def on_button_apply_clicked(*args):
>        scripttime = build_timestamp()
>        scriptmodel = get_active_text(modelbox)
>        scriptgrid = get_active_text(gridbox)
>        command = [program, scriptgrid, scriptmodel, scripttime]
>        write_status("Here we go ...")
>        run_command(command)
>
> ####################################################
> ### CONNECT SIGNALS TO OUR HANDLERS:
> ####################################################
>
> wTree.signal_autoconnect(locals())
>
> ####################################################
> ### START UP THE PROGRAM:
> ####################################################
>
> gtk.main()
>
>
> On Wed, Aug 3, 2011 at 7:44 AM, Grant McWilliams
> <grantmasterfl...@gmail.com> wrote:
>> Tony Freeman <t0ny.fr33man <at> gmail.com> writes:
>>
>> Can you post the whole code anyway for those of us trying to figure out the 
>> same
>> thing.
>>
>> _______________________________________________
>> pygtk mailing list   pygtk@daa.com.au
>> http://www.daa.com.au/mailman/listinfo/pygtk
>> Read the PyGTK FAQ: http://faq.pygtk.org/
>>
>
_______________________________________________
pygtk mailing list   pygtk@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to