<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: gtk code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 02:30:34 GMT</pubDate>
    <description>DZone Snippets: gtk code</description>
    <item>
      <title>Put mounted drives list into Glist</title>
      <link>http://snippets.dzone.com/posts/show/5350</link>
      <description>Function that gets list of mounted drives from '/etc/fstab' and '/etc/mtab' files and puts data in the GList object (from GLib library) that can be further used in GTK.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;glib.h&gt;&lt;br /&gt;#include &lt;mntent.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;GList * g_get_drives_list(GList * g) {&lt;br /&gt;	FILE *fstab = NULL;&lt;br /&gt;	struct mntent *part = NULL;&lt;br /&gt;	gchar *mntp = NULL;&lt;br /&gt;	&lt;br /&gt;	if ((fstab = setmntent( "/etc/fstab", "r" )) != NULL) {&lt;br /&gt;		while ((part = getmntent(fstab))  != NULL) {&lt;br /&gt;			if((strcmp(part-&gt;mnt_type, "proc")) != 0 &amp;&amp; (strcmp(part-&gt;mnt_type, "devpts")) != 0 &lt;br /&gt;																					&amp;&amp; (strcmp(part-&gt;mnt_type, "swap")) != 0) {&lt;br /&gt;				mntp = g_strdup(part-&gt;mnt_dir);&lt;br /&gt;				g=g_list_append(g, mntp);&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		endmntent(fstab);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	if ((fstab = setmntent( "/etc/mtab", "r")) != NULL) {&lt;br /&gt;		while ((part = getmntent(fstab)) != NULL) {&lt;br /&gt;			if (part-&gt;mnt_type != NULL) {&lt;br /&gt;				if((strcmp(part-&gt;mnt_type, "proc")) != 0 &amp;&amp; (strcmp(part-&gt;mnt_type, "devpts")) != 0&lt;br /&gt;						&amp;&amp; (strcmp(part-&gt;mnt_type, "swap")) != 0 &amp;&amp; (strcmp(part-&gt;mnt_type, "sysfs")) != 0&lt;br /&gt;						&amp;&amp; (strcmp(part-&gt;mnt_type, "tmpfs")) != 0 &amp;&amp; (strcmp(part-&gt;mnt_type, "fuseblk")) != 0&lt;br /&gt;						&amp;&amp; (strcmp(part-&gt;mnt_type, "securityfs")) != 0) {&lt;br /&gt;					if((g_list_find_custom(g, part-&gt;mnt_dir, (GCompareFunc)strcmp)) == 0) {&lt;br /&gt;						mntp=g_strdup(part-&gt;mnt_dir);&lt;br /&gt;						g=g_list_append(g, mntp);&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		endmntent(fstab);&lt;br /&gt;	}&lt;br /&gt;	return g;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 12 Apr 2008 13:22:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5350</guid>
      <author>Tvrtko (Tvrtko)</author>
    </item>
    <item>
      <title>A Glade 'Hello World' application</title>
      <link>http://snippets.dzone.com/posts/show/5251</link>
      <description>- getting started - (Using Ubuntu Linux 7.10)&lt;br /&gt;1) Installed glade-3,libglade2-ruby&lt;br /&gt;2) Executed glade-3&lt;br /&gt;&lt;br /&gt;- Within glade-3 -&lt;br /&gt;1) Selected from the glade-3 top menu View -&gt; Palette appearance -&gt; Text beside icons&lt;br /&gt;2) Created a window (Toplevels)&lt;br /&gt;3) Created a button on the window (Control and Display)&lt;br /&gt;3) With button selected, from the properties panel I selected the Signals tab and chose 'clicked', then for the Handler -&gt; on_button1_clicked and pressed enter.&lt;br /&gt;4) With window select, from the properties panel I select the Signals tab and chose GtkWidget-&gt;delete-event, then for the Handler I typed on_quit and pressed enter.&lt;br /&gt;&lt;br /&gt;- Generating and editing the code&lt;br /&gt;&lt;br /&gt;-- From the command line -&lt;br /&gt;1) Typed ruby-glade-create-template helloworld3.glade &gt; helloworld3.rb&lt;br /&gt;&lt;br /&gt;-- From the file helloworld3.rb - (see helloworld3.rb and how it relates to helloworld3.glade)&lt;br /&gt;1) Implemented the initialise window routine&lt;br /&gt;2) Implemented the button event handler&lt;br /&gt;&lt;br /&gt;- Running the application&lt;br /&gt;1) From the command line I typed ruby helloworld3.rb&lt;br /&gt;2) stretched the window to a comfortable dimension.&lt;br /&gt;3) clicked the button and observed the Window title change to 'Hello World!'&lt;br /&gt;&lt;br /&gt;file: helloworld3.glade&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;#&lt;br /&gt;# This file is generated by ruby-glade-create-template 1.1.4.&lt;br /&gt;#&lt;br /&gt;require 'libglade2'&lt;br /&gt;&lt;br /&gt;class Helloworld3Glade&lt;br /&gt;  include GetText&lt;br /&gt;&lt;br /&gt;  attr :glade&lt;br /&gt;  &lt;br /&gt;  def initialize(path_or_data, root = nil, domain = nil, localedir = nil, flag = GladeXML::FILE)&lt;br /&gt;    bindtextdomain(domain, localedir, nil, "UTF-8")&lt;br /&gt;    @glade = GladeXML.new(path_or_data, root, domain, localedir, flag) {|handler| method(handler)}&lt;br /&gt;    @window1 = @glade.get_widget("window1") # hand coded&lt;br /&gt;    @window1.show # hand coded      &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def on_button1_clicked(widget)&lt;br /&gt;    #puts "on_button1_clicked() is not implemented yet." # removed this code by hand&lt;br /&gt;    @window1.title = 'Hello World!' # hand coded  &lt;br /&gt;  end&lt;br /&gt;  def on_quit(widget, arg0)&lt;br /&gt;    #puts "on_quit() is not implemented yet." # removed this code by hand&lt;br /&gt;    Gtk.main_quit # hand coded&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# Main program&lt;br /&gt;if __FILE__ == $0&lt;br /&gt;  # Set values as your own application. &lt;br /&gt;  PROG_PATH = "helloworld3.glade"&lt;br /&gt;  PROG_NAME = "YOUR_APPLICATION_NAME"&lt;br /&gt;  Helloworld3Glade.new(PROG_PATH, nil, PROG_NAME)&lt;br /&gt;  Gtk.main&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;file: helloworld3.glade&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;&lt;br /&gt;&lt;!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"&gt;&lt;br /&gt;&lt;!--Generated with glade3 3.4.0 on Tue Mar 18 17:39:53 2008 --&gt;&lt;br /&gt;&lt;glade-interface&gt;&lt;br /&gt;  &lt;widget class="GtkWindow" id="window1"&gt;&lt;br /&gt;    &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;&lt;br /&gt;    &lt;signal name="delete_event" handler="on_quit"/&gt;&lt;br /&gt;    &lt;child&gt;&lt;br /&gt;      &lt;widget class="GtkButton" id="button1"&gt;&lt;br /&gt;        &lt;property name="visible"&gt;True&lt;/property&gt;&lt;br /&gt;        &lt;property name="can_focus"&gt;True&lt;/property&gt;&lt;br /&gt;        &lt;property name="receives_default"&gt;True&lt;/property&gt;&lt;br /&gt;        &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;&lt;br /&gt;        &lt;property name="label" translatable="yes"&gt;button&lt;/property&gt;&lt;br /&gt;        &lt;property name="response_id"&gt;0&lt;/property&gt;&lt;br /&gt;        &lt;signal name="clicked" handler="on_button1_clicked"/&gt;&lt;br /&gt;      &lt;/widget&gt;&lt;br /&gt;    &lt;/child&gt;&lt;br /&gt;  &lt;/widget&gt;&lt;br /&gt;&lt;/glade-interface&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Tue, 18 Mar 2008 19:29:06 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5251</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Python - Example Simple ImageView</title>
      <link>http://snippets.dzone.com/posts/show/3117</link>
      <description>&lt;code&gt;&lt;br /&gt;import pygtk; pygtk.require('2.0')&lt;br /&gt;import gtk&lt;br /&gt;&lt;br /&gt;class Image_Example(object):&lt;br /&gt;&lt;br /&gt;	def pressButton(self, widget, data=None):&lt;br /&gt;		print "Pressed"&lt;br /&gt;&lt;br /&gt;	def delete_event(self, widget, event, data=None):&lt;br /&gt;		print "delete event occured"&lt;br /&gt;&lt;br /&gt;		return False&lt;br /&gt;&lt;br /&gt;	def destroy(self, widget, data=None):&lt;br /&gt;		gtk.main_quit()&lt;br /&gt;&lt;br /&gt;	def __init__(self):&lt;br /&gt;		self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)&lt;br /&gt;		self.window.connect("delete_event", self.delete_event)&lt;br /&gt;		self.window.connect("destroy", self.destroy)&lt;br /&gt;		self.window.set_border_width(10)&lt;br /&gt;&lt;br /&gt;		self.button = gtk.Button()&lt;br /&gt;		self.button.connect("clicked", self.pressButton, None)&lt;br /&gt;		self.button.connect_object("clicked", gtk.Widget.destroy, self.window)&lt;br /&gt;&lt;br /&gt;		self.image = gtk.Image()&lt;br /&gt;		self.image.set_from_file("/tmp/f27.jpg")&lt;br /&gt;		self.image.show()&lt;br /&gt;&lt;br /&gt;		self.button.add(self.image)&lt;br /&gt;		self.window.add(self.button)&lt;br /&gt;		self.button.show()&lt;br /&gt;		self.window.show()&lt;br /&gt;&lt;br /&gt;	def main(self):&lt;br /&gt;		gtk.main()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;&lt;br /&gt;	Image_Example().main()&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 09 Dec 2006 03:49:01 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3117</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>C - Simple Example GTK</title>
      <link>http://snippets.dzone.com/posts/show/3085</link>
      <description>// gcc file.c -o file.o `pkg-config --libs --cflags gtk+-2.0`&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;gtk/gtk.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;void displayUI()&lt;br /&gt;{&lt;br /&gt;	GtkWidget* mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);&lt;br /&gt;&lt;br /&gt;	gtk_window_set_default_size(GTK_WINDOW(mainWindow), 400, 300);&lt;br /&gt;	gtk_window_set_title(GTK_WINDOW(mainWindow), "GTK Simple Example");&lt;br /&gt;	gtk_window_set_position(GTK_WINDOW(mainWindow), GTK_WIN_POS_CENTER_ALWAYS);&lt;br /&gt;&lt;br /&gt;	gtk_signal_connect(GTK_OBJECT(mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);&lt;br /&gt;&lt;br /&gt;	gtk_widget_show_all(mainWindow);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;	gtk_init(&amp;argc, &amp;argv);&lt;br /&gt;&lt;br /&gt;	displayUI();&lt;br /&gt;&lt;br /&gt;	gtk_main();&lt;br /&gt;&lt;br /&gt;	return EXIT_SUCCESS;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 05 Dec 2006 16:50:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3085</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>Python - change_color_entry</title>
      <link>http://snippets.dzone.com/posts/show/1714</link>
      <description>// Cambia il colore di sfondo di una gtk.Entry, ma il discorso vale anche&lt;br /&gt;// per la gtk.TextView...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import gtk&lt;br /&gt;&lt;br /&gt;def change_color_entry(entry, color):&lt;br /&gt;    entry.modify_base(gk.STATE_NORMAL, gtk.gdk.color_parse(color))&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 18 Mar 2006 16:10:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1714</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>GtkEditable insert handler which filters certain characters</title>
      <link>http://snippets.dzone.com/posts/show/1585</link>
      <description>This is an example of a signal handler for GtkEditable::insert-text which filters out certain characters as the user types.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;static void&lt;br /&gt;insert_filtered (GtkEditable *entry, gchar *new_text, gint new_text_length, gint *position, gpointer data)&lt;br /&gt;{&lt;br /&gt;        gchar *clean_text;&lt;br /&gt;        gint   i, j;&lt;br /&gt;&lt;br /&gt;        clean_text = g_strndup (new_text, new_text_length);&lt;br /&gt;        for (i = 0, j = 0; i &lt; new_text_length; i++) {&lt;br /&gt;                gchar c = new_text[i];&lt;br /&gt;                if (c == '\t' || c == '\n' || c == '\r' || c == '(' ||&lt;br /&gt;                    c == ')'  || c == '['  || c == ']'  || c == '&lt;' ||&lt;br /&gt;                    c == '&gt;'  || c == '+'  || c == '\'' || c == '"')&lt;br /&gt;                        continue;&lt;br /&gt;                clean_text[j] = c;&lt;br /&gt;                j++;&lt;br /&gt;        }&lt;br /&gt;        clean_text[j] = '\0';&lt;br /&gt;&lt;br /&gt;        /* Call the default handler directly and stop the emission */&lt;br /&gt;        g_signal_stop_emission_by_name (G_OBJECT (entry), "insert-text");&lt;br /&gt;        if (clean_text[0] != '\0') {&lt;br /&gt;                GtkEditableClass *klass;&lt;br /&gt;                klass = GTK_EDITABLE_GET_CLASS (entry);&lt;br /&gt;                klass-&gt;insert_text (entry, clean_text, j, position);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        g_free (clean_text);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example usage:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;...&lt;br /&gt;        GtkWidget *entry;&lt;br /&gt;&lt;br /&gt;        entry = gtk_entry_new ();&lt;br /&gt;        g_signal_connect (G_OBJECT (entry), "insert-text", G_CALLBACK (insert_filtered), NULL);&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 27 Feb 2006 13:19:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1585</guid>
      <author>davidtrowbridge (David Trowbridge)</author>
    </item>
    <item>
      <title>convert a PIL image to a GTK pixbuf</title>
      <link>http://snippets.dzone.com/posts/show/655</link>
      <description>free adaptation of http://slugathon.python-hosting.com/changeset/205&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import gtk&lt;br /&gt;import Image&lt;br /&gt;&lt;br /&gt;def image2pixbuf(im):  &lt;br /&gt;    file1 = StringIO.StringIO()  &lt;br /&gt;    im.save(file1, "ppm")  &lt;br /&gt;    contents = file1.getvalue()  &lt;br /&gt;    file1.close()  &lt;br /&gt;    loader = gtk.gdk.PixbufLoader("pnm")  &lt;br /&gt;    loader.write(contents, len(contents))  &lt;br /&gt;    pixbuf = loader.get_pixbuf()  &lt;br /&gt;    loader.close()  &lt;br /&gt;    return pixbuf  &lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 08 Sep 2005 01:59:05 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/655</guid>
      <author>manatlan (manatlan)</author>
    </item>
    <item>
      <title>convert a GTK pixbuf to a PIL image</title>
      <link>http://snippets.dzone.com/posts/show/641</link>
      <description>&lt;code&gt;&lt;br /&gt;import gtk&lt;br /&gt;import Image&lt;br /&gt;&lt;br /&gt;def pixbuf2Image(pb):&lt;br /&gt;   width,height = pb.get_width(),pb.get_height()&lt;br /&gt;   return Image.fromstring("RGB",(width,height),pb.get_pixels() )&lt;br /&gt;&lt;br /&gt;pb = gtk.gdk.pixbuf_new_from_file( "p20050424_160333.jpg" )&lt;br /&gt;im = pixbuf2Image(pb)&lt;br /&gt;im.save("welldone.jpg", "JPEG",quality=80)&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 07 Sep 2005 19:11:04 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/641</guid>
      <author>manatlan (manatlan)</author>
    </item>
    <item>
      <title>Using glade interface file in ruby-gnome2.</title>
      <link>http://snippets.dzone.com/posts/show/456</link>
      <description>&lt;code&gt;&lt;br /&gt;require 'gtk2'&lt;br /&gt;require 'libglade2'&lt;br /&gt;&lt;br /&gt;class SignalHandler&lt;br /&gt;  def method_missing(method, *args)&lt;br /&gt;    puts "#{method}: #{args}"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;sigmap = SignalHandler.new&lt;br /&gt;&lt;br /&gt;Gtk.init&lt;br /&gt;glade = GladeXML.new('hello.glade', nil, 'helloglade')&lt;br /&gt;window = glade['main_window']&lt;br /&gt;window.signal_connect("destroy") { Gtk.main_quit }&lt;br /&gt;glade.signal_autoconnect_full do |source, target, signal, handler, data|&lt;br /&gt;  source.signal_connect(signal) { sigmap.send(handler, data) }&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;window.show&lt;br /&gt;Gtk.main&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I did not know what file should I require. :(</description>
      <pubDate>Mon, 04 Jul 2005 10:42:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/456</guid>
      <author>nohmad (Gyoung-Yoon Noh)</author>
    </item>
  </channel>
</rss>
