Ok, so this wasn’t too hard, but there was a little hiccup and so I thought I’d briefly note down the solution.
The first step is to find the actual driver because the iP4500 model not listed in the standard set of drivers (at least not in mine). Choosing one of the other PIXMA drivers (like the 4100) will only result in blanc pages.
1) Find the drivers on the Canon website (google search for it. I would post the link but the page is currently not working for me, it did so a minute ago though).
There are two files, one is a common driver (file name: cnijfilter-common-2.80-1.i386.rpm) and the other one is the model specific driver (file name: cnijfilter-ip4500series-2.80-1.i386.rpm). They need to be installed in order, so I suggest you also download the instructions, a file called: guideip4500series-pd-2.80-1.tar.tar
The instructions are very clear and come in flavours for Fedora 7, openSUSE 10.3 and Ubuntu 7.04 (all the same file).
2) After the installation I tried to print but without success. Looking at the printer properties (Control Center - Printer - <printer name> (right click) -> Properties) I found the error message /usr/lib64/cups/backend/cnij_usb failed. I did a google search, and the solution is the following (as found on Linuxuser LigLog).
Open a terminal and as root, type the following two commands:
ln /usr/lib/cups/backend/cnij_usb /usr/lib64/cups/backend/cnij_usb
ln /usr/lib/cups/filter/pstocanonij /usr/lib64/cups/filter/pstocanonij
Restart CUPS ( /etc/init.d/cups restart) and it should work.
Tags: Linux · Open Source
See my former post on “How to access two GTK+ widgets from a single callback function (using libglade)” for a different way of achieving the same thing. However, the method described below is the official way of doing things and thus to be preferred.
GtkWidgets are derived from GObjects. They can be cast back and forth using the G_OBJECT() and GTK_WIDGET() macros. Use g_object_set_data() to attach a gpointer and its key to a GObject of your choice (find the definition at library.gnome.org). The pointers can then be retrieved wherever the GObject that they have been attached to, is available. This is done using g_object_get_data(). Attaching two pointers to two different GtkWidgets to the main window widget, will enable you to call on them from any callback function you use.
Tags: GTK+
If you are using linux and running Firefox, go check out this website of a reasonably large commercial business and see whether it loads for you.
http://www.keithley.com/
I can only tell you that in loads fine in internet explorer running on windows, but that it does not load for me on Linux using Firefox. With millions of websites our there working well on both systems, this is quite an accomplishment. I don’t know what they have done, but they definitively got it wrong!
Tags: Uncategorized · Web Development
Working on a half-broken 64bit openSUSE 10.3 and can’t wait to switch back to the realm of 32bit. Just so much less hassle. Well, I am holding out for openSUSE 11 and a clean re-installation

Tags: Linux
I hope the code below may be useful to some people. I am new to GTK+ myself so I am not sure whether this is the best solution, but it is certainly on of the better ones. Other solutions would be to use globals or possibly structs.
What the function does:
It is a simple callback function that has been connected to the GladeXML file by the following line:
glade_xml_signal_connect(gxml, "on_execute_recording_button_clicked", G_CALLBACK(on_execute_recording_button_clicked));
where gxml is the main GladeXML file that was created using Glade-3. Look on Micah Carrick’s blog for information and tutorials on Glade.
Using glade_get_widget_tree() we can get hold of the GladeXML file inside the callback function without using globals. From there is it easy, we simply use the glade_xml_get_widget() function to create the widgets we want.
Here is the code:
/*
* Function aquires a handle on the GtkProgressBar and the GtkTreeView widget
* then calls a function that works on both widgets.
*
*/
void on_execute_recording_button_clicked (GtkButton *button, GtkWidget *window, gpointer gptr)
{
GladeXML *gxml;
GtkWidget *pbarWidget, *data_viewWidget;
GtkProgressBar *pbar;
GtkTreeView *data_view;
gxml = glade_get_widget_tree(GTK_WIDGET(button));
pbarWidget = glade_xml_get_widget (gxml, "record_progressbar");
pbar = GTK_PROGRESS_BAR(pbarWidget);
data_viewWidget = glade_xml_get_widget (gxml, "data_view");
data_view = GTK_TREE_VIEW(data_viewWidget);
get_data(pbar, data_view);
}
Tags: GTK+