Sunday, June 17, 2012

Glade

This one for the Systems Programmers out there:

Years ago, Glade was a GUI editor for C users only, a lot like MFC/Java.  Well a few years back, it became Python friendly too, but who uses Python?  As of recently, I now use Python- that's who!  So, I began to wonder about Glade all over again, and my oh my how it's changed.

Back in the bad old days Glade made a make file, and a buncho support files for C and Gtk use.  It was what is best described as a mess.  You'd look at it and say; ok, it's somewhat useful.  Now however, Glade does all the same things in drawing a GUI interface from the basic widgets of Gtk, but now they are packed neatly into an XML file.  This XML file is then processed by your programming language, to setup your form design widgets.  And that's what so forkin neat about it.  Now your code can share dialog boxes, like the idea of common dialog boxes in Windows.  How cool is that?  So you could Prototype in Python, and then Compile Binary in C later, for better speed.  Woohoo!

But making your application from Glade work, is like the worsted described mystery in all Linux programming.  There are two complications here;  First, GtkBuilder vs. Libglade.  And Libglade is already obsolete, however it's what 90% of the tutorials on the Internet use.  Second, the PyGtk tells you there are OnButtonClicked events predefined, which really doesn't tell you how to use a menu item, or what these predefined names are... 

Like everything in the Gtk, you'd better have some crib-notes close by.  So understand that in the Gtk, unlike everywhere else, a menu is activated, as a button is clicked.  Everywhere else, a menu is nothing more than a button.  So the events are 'activate' and 'clicked', and finding those in the Signals controls is not very hard, but now we have to deal with the trick of Libglade vs GtkBuilder.  When Gtk said it was predefined, they meant IN GtkBuilder only!  Again, most of the tutorials are in Libglade, which is where it all comes off the rails.  Finding those predefined names isn't so hard, once your using GtkBuilder- they are the first event option in the list.

What really going to change though is the start up.  Here's a basic Python file, that has both (Libglade commented out).
#!/usr/bin/env python

import sys
try:
     import pygtk
      pygtk.require("2.0")
except:
      pass
try:
    import gtk
      import gtk.glade
except:
    print "Glade/Gtk failure!"
    sys.exit(1)

class RawTemplate:
    """
    The RAWTemplate class
    RAW stands for nothing, this is just a skeleton class to      create GTK
    applications quickly with common dialogs already in place ready to go.
    (THIS RAW has been altered for use with Glade)
   
    Program requires the following set:
     
    """
    #--------------------------------------------------
    def __init__(self):
        self.gladefile = "./booger.glade" 
        builder = gtk.Builder()
        builder.add_from_file(self.gladefile)
        self.window = builder.get_object("window1")

        # self.wTree = gtk.glade.XML(self.gladefile)
        # self.window = self.wTree.get_widget("window1")
        if (self.window):
            self.window.connect("destroy", gtk.main_quit)
        self.window.show_all()


if __name__ == "__main__":
    RawTemplate()
    gtk.main()


***Pardon the scrolling, if you copy/paste this into a text editor, it works fine.  I can't find the good old BLOCKQUOTE in this Blogger editor, so it's messing the python code up.

Anyway, this article was not intended as a tutorial, only as comment on the mystery statements made by all the tutorials out there.  Once most of you are brighter than me, you shouldn't have any problem with this.


Friday, June 8, 2012

Fork me, FALLING OFF THE GRID?


When I got a Ubuntu machine, the Upgrade Manager appeared with a check box, that upgraded the WHOLE operating system to the latest version. Something I was quite hesitant to do, once old versions of Linux use to take no prisoners, and repartition hard drives before installing (loosing all your data). Well, once I got BIG ASS EXTERNAL 2TB hard drive to make backups on, I got my nerve. I checked that box, and seamlessly it was done, and it became expected by the user. There was my fatal mistake, in trusting that check box to show time and again, for I haven't seen it again for at least 3 version releases.

NOW, Upgrade Manager is prompting me for the CD for the latest version to do installs. Which is not such a problem because I have downloaded the CD image, but the Upgrade Manager has chosen to “Ignore” it. Meaning- DO YOUR OWN UPGRADE BUCCEROO!

So with much fear and trembling, here we go again! I'm trapped into upgrades I really don't want to make, in order to own the newest and spiffiest versions of... I really don't know why I need to upgrade, other than to keep UPGRADE MANAGER working correctly? It's sad, but true!