diff options
Diffstat (limited to 'extra/usbview')
-rw-r--r-- | extra/usbview/PKGBUILD | 37 | ||||
-rw-r--r-- | extra/usbview/usbview-1.1-gtk3-port.patch | 802 | ||||
-rw-r--r-- | extra/usbview/usbview-1.1-missing-usbfs.patch | 11 | ||||
-rw-r--r-- | extra/usbview/usbview.install | 11 |
4 files changed, 852 insertions, 9 deletions
diff --git a/extra/usbview/PKGBUILD b/extra/usbview/PKGBUILD index 093b7007d..e131c153f 100644 --- a/extra/usbview/PKGBUILD +++ b/extra/usbview/PKGBUILD @@ -1,25 +1,38 @@ -# $Id: PKGBUILD 143990 2011-12-01 15:29:15Z giovanni $ +# $Id: PKGBUILD 169432 2012-10-21 07:40:08Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Jason Chu <jason@archlinux.org> pkgname=usbview pkgver=1.1 -pkgrel=3 -pkgdesc="USB Viewer" +pkgrel=4 +pkgdesc="Display the topology of devices on the USB bus" arch=('i686' 'x86_64') url="http://www.kroah.com/linux-usb/" license=('GPL') -depends=('gtk2') -makedepends=('pkg-config') -source=("http://www.kroah.com/linux-usb/${pkgname}-${pkgver}.tar.gz") -md5sums=('8bf5e66351156356f3ad07454123affa') +depends=('gtk3' 'desktop-file-utils') +makedepends=('pkg-config' 'gendesk') +install=${pkgname}.install +source=("http://www.kroah.com/linux-usb/${pkgname}-${pkgver}.tar.gz" + 'usbview-1.1-gtk3-port.patch' + 'usbview-1.1-missing-usbfs.patch') +md5sums=('8bf5e66351156356f3ad07454123affa' + '578ed1099228f205b728ee2d46ed6f56' + '02e4313887423d0057a7f4f15b7f37d4') build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}" + gendesk -n + sed -i "s:Application;:Application;System:g" "${srcdir}"/${pkgname}.desktop + + cd "${pkgname}-${pkgver}" + + patch -Np1 -i "${srcdir}/usbview-1.1-gtk3-port.patch" + patch -Np1 -i "${srcdir}/usbview-1.1-missing-usbfs.patch" + autoreconf ./configure --prefix=/usr \ --sysconfdir=/etc \ - --localstatedir=/var + --localstatedir=/var make } @@ -29,4 +42,10 @@ package() { make prefix="${pkgdir}/usr" \ sysconfdir="${pkgdir}/etc" \ localstatedir="${pkgdir}/var" install + + install -Dm0644 "${srcdir}"/${pkgname}.desktop \ + "${pkgdir}"/usr/share/applications/${pkgname}.desktop + + install -Dm0644 "${srcdir}"/${pkgname}-${pkgver}/usb_icon.xpm \ + "${pkgdir}"/usr/share/pixmaps/${pkgname}.xpm } diff --git a/extra/usbview/usbview-1.1-gtk3-port.patch b/extra/usbview/usbview-1.1-gtk3-port.patch new file mode 100644 index 000000000..9462dcf43 --- /dev/null +++ b/extra/usbview/usbview-1.1-gtk3-port.patch @@ -0,0 +1,802 @@ +--- a/Makefile.am 2009-03-11 03:25:46.000000000 +0100 ++++ b/Makefile.am 2012-06-14 20:33:10.641639573 +0200 +@@ -16,10 +16,8 @@ + interface.c \ + callbacks.c \ + usbtree.c usbtree.h \ +- showmessage.c \ + usbparse.c usbparse.h \ + configure-dialog.c \ +- about-dialog.c \ + usbview_logo.xpm \ + usbview_logo.xcf \ + usb_icon.xpm \ +--- a/callbacks.c 2008-06-25 23:03:13.000000000 +0200 ++++ b/callbacks.c 2012-06-14 21:06:05.000523489 +0200 +@@ -23,13 +23,13 @@ + #endif + + #include <gtk/gtk.h> +- + #include "usbtree.h" ++#include "usbview_logo.xpm" /* logo */ + + + void on_buttonClose_clicked (GtkButton *button, gpointer user_data) + { +- gtk_exit(0); ++ gtk_main_quit(); + } + + +@@ -55,7 +55,21 @@ + + void on_buttonAbout_clicked (GtkButton *button, gpointer user_data) + { +- about_dialog (); ++ GdkPixbuf *logo; ++ gchar *authors[] = { "Greg Kroah-Hartman <greg@kroah.com>", NULL }; ++ ++ logo = gdk_pixbuf_new_from_xpm_data ((const char **)usbview_logo_xpm); ++ gtk_show_about_dialog (GTK_WINDOW (windowMain), ++ "logo", logo, ++ "program-name", "usbview", ++ "version", VERSION, ++ "comments", "Display information on USB devices", ++ "website-label", "http://www.kroah.com/linux-usb/", ++ "website", "http://www.kroah.com/linux-usb/", ++ "copyright", "Copyright © 1999-2012", ++ "authors", authors, ++ NULL); ++ g_object_unref (logo); + } + + +--- a/configure-dialog.c 2009-03-11 02:40:28.000000000 +0100 ++++ b/configure-dialog.c 2012-06-14 21:06:05.000523489 +0200 +@@ -24,264 +24,78 @@ + #endif + + #include <gtk/gtk.h> +-#include <stdio.h> +-#include <stdlib.h> + #include <string.h> +-#include <ctype.h> +- + #include "usbtree.h" + #include "usbparse.h" + +- +- +- + static GtkWidget *fileEntry; +-static GtkWidget *filew; +-static char *sFilename; +- +-/* +- * Get the selected filename and print it to the console +- */ +-static void file_ok_sel (GtkWidget *w, GtkFileSelection *fs) +-{ +- const char *sTempFile; +- +- /* --- Get the name --- */ +- sTempFile = gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)); +- +- /* --- Allocate space and save it. --- */ +- sFilename = malloc (sizeof (char) * (strlen (sTempFile) + 1)); +- strcpy (sFilename, sTempFile); +- +- /* --- Destroy the file selection --- */ +- gtk_widget_destroy (filew); +-} +- +- +-static void file_cancel_sel (GtkWidget *w, GtkFileSelection *fs) +-{ +- /* --- Destroy the file selection --- */ +- gtk_widget_destroy (filew); +-} +- +- +-/* +- * DestroyDialog +- * +- * Destroy the dialog (obvious, eh?) but also remove the +- * grab and close the modal. +- */ +-static int DestroyDialog (GtkWidget *widget, gpointer *data) +-{ +- gtk_grab_remove (widget); +- gtk_main_quit (); +- return(FALSE); +-} +- +- +-/* +- * GetFilename +- */ +-static char *GetFilename (char *sTitle, char *initialFilename) +-{ +- sFilename = NULL; +- +- /* --- Create a new file selection widget --- */ +- filew = gtk_file_selection_new (sTitle); +- +- /* --- If it's destroyed --- */ +- gtk_signal_connect (GTK_OBJECT (filew), "destroy", (GtkSignalFunc) DestroyDialog, &filew); +- +- /* --- Connect the ok_button to file_ok_sel function --- */ +- gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button), "clicked", (GtkSignalFunc) file_ok_sel, filew ); +- +- /* --- Connect the cancel_button to destroy the widget --- */ +- gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button), "clicked", (GtkSignalFunc) file_cancel_sel, filew); +- +- /* --- Lets set the filename --- */ +- gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), initialFilename); +- +- /* --- Turn off the file operation buttons --- */ +- gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION(filew)); +- +- /* --- Of course, we show it --- */ +- gtk_widget_show (filew); +- +- /* --- Make sure we keep the focus --- */ +- gtk_grab_add (filew); +- +- gtk_main (); +- +- return(sFilename); +-} +- +- +-static void ClearShowMessage (GtkWidget *widget, gpointer data) +-{ +- gtk_grab_remove (widget); +-} +- +-static void CancelConfigureDialog (GtkWidget *widget, gpointer data) +-{ +- GtkWidget *dialogWidget = (GtkWidget *) data; +- +- gtk_grab_remove (dialogWidget); +- +- /* --- Close the widget --- */ +- gtk_widget_destroy (dialogWidget); +-} +- +-static void OkConfigureDialog (GtkWidget *widget, gpointer data) +-{ +- GtkWidget *dialogWidget = (GtkWidget *) data; +- gchar *editString; +- +- editString = gtk_editable_get_chars (GTK_EDITABLE (fileEntry), 0, -1); +- +- gtk_grab_remove (dialogWidget); +- +- /* --- Close the widget --- */ +- gtk_widget_destroy (dialogWidget); +- +- strcpy (devicesFile, editString); +- g_free (editString); +- LoadUSBTree(0); +-} +- + + static void fileSelectButtonClick (GtkWidget *widget, gpointer data) + { +- gchar *newFilename; ++ GtkWidget *dialog; ++ gchar *filename; + +- newFilename = GetFilename ("locate usbdevfs devices file", devicesFile); +- +- if (newFilename != NULL) { +- gtk_entry_set_text (GTK_ENTRY (fileEntry), newFilename); +- gtk_widget_show (fileEntry); +- g_free (newFilename); ++ dialog = gtk_file_chooser_dialog_new ( ++ "locate usbdevfs devices file", ++ GTK_WINDOW (windowMain), ++ GTK_FILE_CHOOSER_ACTION_OPEN, ++ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, ++ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, ++ NULL); ++ ++ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) ++ { ++ filename = gtk_file_chooser_get_filename( ++ GTK_FILE_CHOOSER (dialog)); ++ gtk_entry_set_text (GTK_ENTRY (fileEntry), filename); ++ g_free (filename); + } ++ ++ gtk_widget_destroy (dialog); + } + +- + void configure_dialog (void) + { +- GtkWidget *configDialog; +- GtkWidget *dialog_vbox2; ++ GtkWidget *dialog, *content_area; + GtkWidget *hbox1; + GtkWidget *label1; +- GtkWidget *label41; +- GtkWidget *label42; +- GtkWidget *label43; +- GtkWidget *vbox1; +- GtkWidget *dialog_action_area2; +- GtkWidget *hbuttonbox2; +- GtkWidget *okButton; +- GtkWidget *cancelButton; + GtkWidget *fileSelectButton; ++ gchar *editString; ++ gint result; + +- configDialog = gtk_dialog_new (); +- gtk_object_set_data (GTK_OBJECT (configDialog), "configDialog", configDialog); +- gtk_window_set_title (GTK_WINDOW (configDialog), "USB View Configuration"); +- gtk_window_set_policy (GTK_WINDOW (configDialog), TRUE, TRUE, FALSE); +- +- dialog_vbox2 = GTK_DIALOG (configDialog)->vbox; +- gtk_object_set_data (GTK_OBJECT (configDialog), "dialog_vbox2", dialog_vbox2); +- gtk_widget_show (dialog_vbox2); +- +- vbox1 = gtk_vbox_new (FALSE, 0); +- gtk_widget_ref (vbox1); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "vbox1", vbox1, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (vbox1); +- gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox1, TRUE, TRUE, 0); +- +- label41 = gtk_label_new (""); +- gtk_widget_ref (label41); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "label41", label41, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (label41); +- gtk_box_pack_start (GTK_BOX (vbox1), label41, FALSE, FALSE, 0); +- +- hbox1 = gtk_hbox_new (FALSE, 0); +- gtk_widget_ref (hbox1); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "hbox1", hbox1, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (hbox1); +-// gtk_box_pack_start (GTK_BOX (dialog_vbox2), hbox1, TRUE, TRUE, 0); +- gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); +- +- label42 = gtk_label_new (""); +- gtk_widget_ref (label42); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "label42", label42, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (label42); +- gtk_box_pack_start (GTK_BOX (vbox1), label42, FALSE, FALSE, 0); +- +- +- label1 = gtk_label_new (" Location of usbdevfs devices file"); +- gtk_widget_ref (label1); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "label1", label1, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (label1); ++ dialog = gtk_dialog_new_with_buttons ( ++ "USB View Configuration", ++ GTK_WINDOW (windowMain), ++ GTK_DIALOG_DESTROY_WITH_PARENT, ++ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, ++ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, ++ NULL); ++ ++ content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); ++ ++ hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); ++ gtk_container_add (GTK_CONTAINER (content_area), hbox1); ++ ++ label1 = gtk_label_new ("Location of usbdevfs devices file"); + gtk_box_pack_start (GTK_BOX (hbox1), label1, FALSE, FALSE, 5); + + fileEntry = gtk_entry_new (); +- gtk_widget_ref (fileEntry); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "fileEntry", fileEntry, (GtkDestroyNotify) gtk_widget_unref); + gtk_entry_set_text (GTK_ENTRY (fileEntry), devicesFile); +- gtk_widget_show (fileEntry); + gtk_box_pack_start (GTK_BOX (hbox1), fileEntry, TRUE, TRUE, 0); + +- dialog_action_area2 = GTK_DIALOG (configDialog)->action_area; +- gtk_object_set_data (GTK_OBJECT (configDialog), "dialog_action_area2", dialog_action_area2); +- gtk_widget_show (dialog_action_area2); +- gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area2), 1); +- +- hbuttonbox2 = gtk_hbutton_box_new (); +- gtk_widget_ref (hbuttonbox2); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "hbuttonbox2", hbuttonbox2, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (hbuttonbox2); +- gtk_box_pack_start (GTK_BOX (dialog_action_area2), hbuttonbox2, TRUE, TRUE, 11); +- +- okButton = gtk_button_new_with_label (" OK "); +- gtk_widget_ref (okButton); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "okButton", okButton, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (okButton); +- gtk_container_add (GTK_CONTAINER (hbuttonbox2), okButton); +- GTK_WIDGET_SET_FLAGS (okButton, GTK_CAN_DEFAULT); +- +- cancelButton = gtk_button_new_with_label (" Cancel "); +- gtk_widget_ref (cancelButton); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "cancelButton", cancelButton, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (cancelButton); +- gtk_container_add (GTK_CONTAINER (hbuttonbox2), cancelButton); +- GTK_WIDGET_SET_FLAGS (cancelButton, GTK_CAN_DEFAULT); +- + fileSelectButton = gtk_button_new_with_label ("..."); +- gtk_widget_ref (fileSelectButton); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "fileSelectButton", fileSelectButton, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (fileSelectButton); +- ++ g_signal_connect (G_OBJECT (fileSelectButton), "clicked", ++ G_CALLBACK (fileSelectButtonClick), NULL); + gtk_box_pack_start (GTK_BOX (hbox1), fileSelectButton, TRUE, FALSE, 1); + +- label43 = gtk_label_new (" "); +- gtk_widget_ref (label43); +- gtk_object_set_data_full (GTK_OBJECT (configDialog), "label43", label43, (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (label43); +- gtk_box_pack_start (GTK_BOX (hbox1), label43, FALSE, FALSE, 0); +- +- gtk_signal_connect (GTK_OBJECT (okButton), "clicked", GTK_SIGNAL_FUNC (OkConfigureDialog), configDialog); +- gtk_signal_connect (GTK_OBJECT (cancelButton), "clicked", GTK_SIGNAL_FUNC (CancelConfigureDialog), configDialog); +- gtk_signal_connect (GTK_OBJECT (fileSelectButton), "clicked", GTK_SIGNAL_FUNC (fileSelectButtonClick), configDialog); +- +- /* --- Default the "Ok" button --- */ +- GTK_WIDGET_SET_FLAGS (okButton, GTK_CAN_DEFAULT); +- gtk_widget_grab_default (okButton); +- +- gtk_signal_connect (GTK_OBJECT (configDialog), "destroy", GTK_SIGNAL_FUNC (ClearShowMessage), NULL); +- +- /* --- Show the dialog --- */ +- gtk_widget_show (configDialog); +- +- /* --- Only this window can have actions done. --- */ +- gtk_grab_add (configDialog); +- +- return; ++ gtk_widget_show_all (dialog); ++ result = gtk_dialog_run(GTK_DIALOG (dialog)); ++ if (result == GTK_RESPONSE_ACCEPT) { ++ editString = gtk_editable_get_chars ( ++ GTK_EDITABLE (fileEntry), 0, -1); ++ strcpy (devicesFile, editString); ++ g_free (editString); ++ LoadUSBTree (0); ++ } ++ gtk_widget_destroy (dialog); + } +- +- +--- a/configure.in 2007-10-23 02:03:36.000000000 +0200 ++++ b/configure.in 2012-06-14 20:25:16.629667442 +0200 +@@ -1,7 +1,7 @@ + dnl Process this file with autoconf to produce a configure script. + + AC_INIT(configure.in) +-AM_INIT_AUTOMAKE(usbview, 1.0) ++AM_INIT_AUTOMAKE(usbview, 1.1) + AM_CONFIG_HEADER(config.h) + + # required versions of other packages +@@ -12,33 +12,10 @@ + AM_PROG_CC_STDC + AC_HEADER_STDC + +-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.0.5) ++PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.0) + AC_SUBST(GTK_FLAGS) + AC_SUBST(GTK_LIBS) + +- +-dnl Set PACKAGE_LOCALE_DIR in config.h. +-if test "x${prefix}" = "xNONE"; then +- AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale") +-else +- AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale") +-fi +- +-dnl Set PACKAGE_DATA_DIR in config.h. +-if test "x${datadir}" = 'x${prefix}/share'; then +- if test "x${prefix}" = "xNONE"; then +- AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/share/${PACKAGE}") +- else +- AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}") +- fi +-else +- AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}/${PACKAGE}") +-fi +- +-dnl Set PACKAGE_SOURCE_DIR in config.h. +-packagesrcdir=`cd $srcdir && pwd` +-AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}") +- + dnl Use -Wall if we have gcc. + changequote(,)dnl + if test "x$GCC" = "xyes"; then +--- a/interface.c 2009-03-11 03:11:47.000000000 +0100 ++++ b/interface.c 2012-06-14 21:06:05.000523489 +0200 +@@ -32,15 +32,16 @@ + #include "usb_icon.xpm" + + GtkWidget *treeUSB; ++GtkTreeStore *treeStore; + GtkTextBuffer *textDescriptionBuffer; + GtkWidget *textDescriptionView; ++GtkWidget *windowMain; + + int timer; + + GtkWidget* + create_windowMain () + { +- GtkWidget *windowMain; + GtkWidget *vbox1; + GtkWidget *hpaned1; + GtkWidget *scrolledwindow1; +@@ -50,68 +51,61 @@ + GtkWidget *buttonClose; + GtkWidget *buttonAbout; + GdkPixbuf *icon; ++ GtkCellRenderer *treeRenderer; ++ GtkTreeViewColumn *treeColumn; + + windowMain = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_widget_set_name (windowMain, "windowMain"); +- gtk_object_set_data (GTK_OBJECT (windowMain), "windowMain", windowMain); + gtk_window_set_title (GTK_WINDOW (windowMain), "USB Viewer"); +- gtk_window_set_default_size (GTK_WINDOW (windowMain), 500, 300); ++ gtk_window_set_default_size (GTK_WINDOW (windowMain), 600, 300); + + icon = gdk_pixbuf_new_from_xpm_data((const char **)usb_icon_xpm); + gtk_window_set_icon(GTK_WINDOW(windowMain), icon); + +- vbox1 = gtk_vbox_new (FALSE, 0); ++ vbox1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_widget_set_name (vbox1, "vbox1"); +- gtk_widget_ref (vbox1); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "vbox1", vbox1, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (windowMain), vbox1); + +- hpaned1 = gtk_hpaned_new (); ++ hpaned1 = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); + gtk_widget_set_name (hpaned1, "hpaned1"); +- gtk_widget_ref (hpaned1); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "hpaned1", hpaned1, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hpaned1); + gtk_box_pack_start (GTK_BOX (vbox1), hpaned1, TRUE, TRUE, 0); +- gtk_paned_set_position (GTK_PANED (hpaned1), 200); + +- treeUSB = gtk_ctree_new_with_titles (1, 0, NULL); ++ treeStore = gtk_tree_store_new (N_COLUMNS, ++ G_TYPE_STRING, /* NAME_COLUMN */ ++ G_TYPE_INT, /* DEVICE_ADDR_COLUMN */ ++ G_TYPE_STRING /* COLOR_COLUMN */); ++ treeUSB = gtk_tree_view_new_with_model (GTK_TREE_MODEL (treeStore)); ++ treeRenderer = gtk_cell_renderer_text_new (); ++ treeColumn = gtk_tree_view_column_new_with_attributes ( ++ "USB devices", ++ treeRenderer, ++ "text", NAME_COLUMN, ++ "foreground", COLOR_COLUMN, ++ NULL); ++ gtk_tree_view_append_column (GTK_TREE_VIEW (treeUSB), treeColumn); + gtk_widget_set_name (treeUSB, "treeUSB"); +- gtk_widget_ref (treeUSB); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "treeUSB", treeUSB, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (treeUSB); +- gtk_container_add (GTK_CONTAINER (hpaned1), treeUSB); +- gtk_widget_set_usize (treeUSB, 200, -2); ++ gtk_paned_pack1 (GTK_PANED (hpaned1), treeUSB, FALSE, FALSE); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_set_name (scrolledwindow1, "scrolledwindow1"); +- gtk_widget_ref (scrolledwindow1); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "scrolledwindow1", scrolledwindow1, +- (GtkDestroyNotify) gtk_widget_unref); +- gtk_widget_show (scrolledwindow1); +- gtk_container_add (GTK_CONTAINER (hpaned1), scrolledwindow1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); ++ gtk_widget_show (scrolledwindow1); ++ gtk_paned_pack2 (GTK_PANED (hpaned1), scrolledwindow1, TRUE, FALSE); + + textDescriptionBuffer = gtk_text_buffer_new(NULL); + //textDescription = gtk_text_new (NULL, NULL); + textDescriptionView = gtk_text_view_new_with_buffer(textDescriptionBuffer); + gtk_widget_set_name (textDescriptionView, "textDescription"); +- gtk_widget_ref (textDescriptionView); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "textDescription", textDescriptionView, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_text_view_set_editable(GTK_TEXT_VIEW(textDescriptionView), FALSE); + gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textDescriptionView), FALSE); + gtk_widget_show (textDescriptionView); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), textDescriptionView); + +- hbuttonbox1 = gtk_hbutton_box_new (); ++ hbuttonbox1 = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); + gtk_widget_set_name (hbuttonbox1, "hbuttonbox1"); +- gtk_widget_ref (hbuttonbox1); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "hbuttonbox1", hbuttonbox1, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, FALSE, 5); + //gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox1), 10); +@@ -120,58 +115,46 @@ + + buttonRefresh = gtk_button_new_from_stock(GTK_STOCK_REFRESH); + gtk_widget_set_name (buttonRefresh, "buttonRefresh"); +- gtk_widget_ref (buttonRefresh); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "buttonRefresh", buttonRefresh, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonRefresh); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), buttonRefresh); + gtk_container_set_border_width (GTK_CONTAINER (buttonRefresh), 4); +- GTK_WIDGET_SET_FLAGS (buttonRefresh, GTK_CAN_DEFAULT); ++ gtk_widget_set_can_default (buttonRefresh, TRUE); + + buttonConfigure = gtk_button_new_with_label ("Configure..."); + gtk_widget_set_name (buttonConfigure, "buttonConfigure"); +- gtk_widget_ref (buttonConfigure); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "buttonConfigure", buttonConfigure, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonConfigure); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), buttonConfigure); + gtk_container_set_border_width (GTK_CONTAINER (buttonConfigure), 4); +- GTK_WIDGET_SET_FLAGS (buttonConfigure, GTK_CAN_DEFAULT); ++ gtk_widget_set_can_default (buttonConfigure, TRUE); + + buttonAbout = gtk_button_new_from_stock(GTK_STOCK_ABOUT); + gtk_widget_set_name (buttonAbout, "buttonAbout"); +- gtk_widget_ref (buttonAbout); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "buttonAbout", buttonAbout, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonAbout); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), buttonAbout); + gtk_container_set_border_width (GTK_CONTAINER (buttonAbout), 4); +- GTK_WIDGET_SET_FLAGS (buttonAbout, GTK_CAN_DEFAULT); ++ gtk_widget_set_can_default (buttonAbout, TRUE); + + buttonClose = gtk_button_new_from_stock(GTK_STOCK_QUIT); + gtk_widget_set_name (buttonClose, "buttonClose"); +- gtk_widget_ref (buttonClose); +- gtk_object_set_data_full (GTK_OBJECT (windowMain), "buttonClose", buttonClose, +- (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (buttonClose); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), buttonClose); + gtk_container_set_border_width (GTK_CONTAINER (buttonClose), 4); +- GTK_WIDGET_SET_FLAGS (buttonClose, GTK_CAN_DEFAULT); ++ gtk_widget_set_can_default (buttonClose, TRUE); + +- gtk_signal_connect (GTK_OBJECT (windowMain), "delete_event", +- GTK_SIGNAL_FUNC (on_window1_delete_event), ++ g_signal_connect (G_OBJECT (windowMain), "delete_event", ++ G_CALLBACK (on_window1_delete_event), + NULL); +- gtk_signal_connect (GTK_OBJECT (buttonRefresh), "clicked", +- GTK_SIGNAL_FUNC (on_buttonRefresh_clicked), ++ g_signal_connect (G_OBJECT (buttonRefresh), "clicked", ++ G_CALLBACK (on_buttonRefresh_clicked), + NULL); +- gtk_signal_connect (GTK_OBJECT (buttonConfigure), "clicked", +- GTK_SIGNAL_FUNC (on_buttonConfigure_clicked), ++ g_signal_connect (G_OBJECT (buttonConfigure), "clicked", ++ G_CALLBACK (on_buttonConfigure_clicked), + NULL); +- gtk_signal_connect (GTK_OBJECT (buttonAbout), "clicked", +- GTK_SIGNAL_FUNC (on_buttonAbout_clicked), ++ g_signal_connect (G_OBJECT (buttonAbout), "clicked", ++ G_CALLBACK (on_buttonAbout_clicked), + NULL); +- gtk_signal_connect (GTK_OBJECT (buttonClose), "clicked", +- GTK_SIGNAL_FUNC (on_buttonClose_clicked), ++ g_signal_connect (G_OBJECT (buttonClose), "clicked", ++ G_CALLBACK (on_buttonClose_clicked), + NULL); + + /* create our timer */ +--- a/main.c 2008-06-25 23:03:27.000000000 +0200 ++++ b/main.c 2012-06-14 21:06:05.000523489 +0200 +@@ -30,7 +30,6 @@ + { + GtkWidget *window1; + +- gtk_set_locale (); + gtk_init (&argc, &argv); + + initialize_stuff(); +--- a/usbparse.h 2008-06-25 23:03:47.000000000 +0200 ++++ b/usbparse.h 2012-06-14 21:06:05.000523489 +0200 +@@ -166,7 +166,7 @@ + struct Device *child[MAX_CHILDREN]; + DeviceBandwidth *bandwidth; + GtkWidget *tree; +- GtkCTreeNode *leaf; ++ GtkTreeIter leaf; + } Device; + + +--- a/usbtree.c 2012-06-14 21:08:11.672516042 +0200 ++++ b/usbtree.c 2012-06-14 21:06:05.000523489 +0200 +@@ -45,7 +45,7 @@ + + /* blow away the tree if there is one */ + if (rootDevice != NULL) { +- gtk_ctree_remove_node (GTK_CTREE(treeUSB), GTK_CTREE_NODE(rootDevice->leaf)); ++ gtk_tree_store_clear (treeStore); + } + + /* clean out the text box */ +@@ -208,32 +208,37 @@ + } + + +-void SelectItem (GtkWidget *widget, GtkCTreeNode *node, gint column, gpointer userData) ++void SelectItem (GtkTreeSelection *selection, gpointer userData) + { +- int data; +- data = (int) gtk_ctree_node_get_row_data (GTK_CTREE (widget), node); +- +- PopulateListBox ((int)data); +- +- return; ++ GtkTreeIter iter; ++ GtkTreeModel *model; ++ gint deviceAddr; ++ ++ if (gtk_tree_selection_get_selected (selection, &model, &iter)) { ++ gtk_tree_model_get (model, &iter, ++ DEVICE_ADDR_COLUMN, &deviceAddr, ++ -1); ++ PopulateListBox (deviceAddr); ++ } + } + + + static void DisplayDevice (Device *parent, Device *device) + { + int i; +- gchar *text[1]; + int configNum; + int interfaceNum; + gboolean driverAttached = TRUE; ++ gint deviceAddr; ++ const gchar *color = "black"; + + if (device == NULL) + return; + + /* build this node */ +- text[0] = device->name; +- device->leaf = gtk_ctree_insert_node (GTK_CTREE(treeUSB), parent->leaf, NULL, text, 1, NULL, NULL, NULL, NULL, FALSE, FALSE); +- gtk_ctree_node_set_row_data (GTK_CTREE(treeUSB), device->leaf, (gpointer)((device->deviceNumber<<8) | (device->busNumber))); ++ deviceAddr = (device->deviceNumber << 8) | device->busNumber; ++ gtk_tree_store_append (treeStore, &device->leaf, ++ (device->level != 0) ? &parent->leaf : NULL); + + /* determine if this device has drivers attached to all interfaces */ + for (configNum = 0; configNum < MAX_CONFIGS; ++configNum) { +@@ -252,15 +257,14 @@ + } + + /* change the color of this leaf if there are no drivers attached to it */ +- if (driverAttached == FALSE) { +- GdkColor red; +- +- red.red = 56000; +- red.green = 0; +- red.blue = 0; +- red.pixel = 0; +- gtk_ctree_node_set_foreground (GTK_CTREE(treeUSB), device->leaf, &red); +- } ++ if (driverAttached == FALSE) ++ color = "red"; ++ ++ gtk_tree_store_set (treeStore, &device->leaf, ++ NAME_COLUMN, device->name, ++ DEVICE_ADDR_COLUMN, deviceAddr, ++ COLOR_COLUMN, color, ++ -1); + + /* create all of the children's leafs */ + for (i = 0; i < MAX_CHILDREN; ++i) { +@@ -283,11 +287,16 @@ + + static void FileError (void) + { +- gchar *tempString = g_malloc0(strlen (verifyMessage) + strlen (devicesFile) + 50); +- sprintf (tempString, " Can not open the file %s \n\n%s", devicesFile, verifyMessage); +- ShowMessage ("USBView Error", tempString, FALSE); +- g_free (tempString); +- return; ++ GtkWidget *dialog; ++ ++ dialog = gtk_message_dialog_new ( ++ GTK_WINDOW (windowMain), ++ GTK_DIALOG_DESTROY_WITH_PARENT, ++ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, ++ "Can not open the file %s\n\n%s", ++ devicesFile, verifyMessage); ++ gtk_dialog_run (GTK_DIALOG (dialog)); ++ gtk_widget_destroy (dialog); + } + + +@@ -328,10 +337,6 @@ + int finished; + int i; + +- if (MessageShown() == TRUE) { +- return; +- } +- + /* if refresh is selected, then always do a refresh, otherwise look at the file first */ + if (!refresh) { + if (!FileHasChanged()) { +@@ -368,11 +373,5 @@ + usb_name_devices (); + +- /* set up our tree */ +- gtk_ctree_set_line_style (GTK_CTREE(treeUSB), GTK_CTREE_LINES_DOTTED); +- gtk_ctree_set_expander_style (GTK_CTREE(treeUSB), GTK_CTREE_EXPANDER_SQUARE); +- gtk_ctree_set_indent (GTK_CTREE(treeUSB),10); +- gtk_clist_column_titles_passive (GTK_CLIST(treeUSB)); +- + /* build our tree */ + for (i = 0; i < rootDevice->maxChildren; ++i) { + DisplayDevice (rootDevice, rootDevice->child[i]); +@@ -380,11 +386,14 @@ + + gtk_widget_show (treeUSB); + +- gtk_ctree_expand_recursive (GTK_CTREE(treeUSB), NULL); ++ gtk_tree_view_expand_all (GTK_TREE_VIEW (treeUSB)); + + /* hook up our callback function to this tree if we haven't yet */ + if (!signal_connected) { +- gtk_signal_connect (GTK_OBJECT (treeUSB), "tree-select-row", GTK_SIGNAL_FUNC (SelectItem), NULL); ++ GtkTreeSelection *select; ++ select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeUSB)); ++ g_signal_connect (G_OBJECT (select), "changed", ++ G_CALLBACK (SelectItem), NULL); + signal_connected = TRUE; + } + +--- a/usbtree.h 2008-06-25 23:03:52.000000000 +0200 ++++ b/usbtree.h 2012-06-14 21:06:05.000523489 +0200 +@@ -21,16 +21,24 @@ + #ifndef __USB_TREE_H + #define __USB_TREE_H + ++enum { ++ NAME_COLUMN, ++ DEVICE_ADDR_COLUMN, ++ COLOR_COLUMN, ++ N_COLUMNS ++}; ++ + extern gchar devicesFile[1000]; ++extern GtkTreeStore *treeStore; + extern GtkWidget *treeUSB; + extern GtkWidget *textDescriptionView; + extern GtkTextBuffer *textDescriptionBuffer; ++extern GtkWidget *windowMain; + + extern void LoadUSBTree (int refresh); + extern void initialize_stuff (void); + extern GtkWidget * create_windowMain (void); + extern void configure_dialog (void); +-extern void about_dialog (void); + + extern void on_buttonClose_clicked (GtkButton *button, gpointer user_data); + extern gboolean on_window1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); +@@ -39,8 +47,4 @@ + extern void on_buttonAbout_clicked (GtkButton *button, gpointer user_data); + extern gint on_timer_timeout (gpointer user_data); + +-extern void ShowMessage (gchar *title, gchar *message, gboolean centered); +-extern gboolean MessageShown (void); +- +- + #endif /* __USB_TREE_H */ diff --git a/extra/usbview/usbview-1.1-missing-usbfs.patch b/extra/usbview/usbview-1.1-missing-usbfs.patch new file mode 100644 index 000000000..7da2f0ca0 --- /dev/null +++ b/extra/usbview/usbview-1.1-missing-usbfs.patch @@ -0,0 +1,11 @@ +--- a/usbtree.c 2012-10-21 08:21:35.000000000 +0200 ++++ b/usbtree.c 2012-10-21 08:21:12.000000000 +0200 +@@ -397,7 +397,7 @@ + + void initialize_stuff (void) + { +- strcpy (devicesFile, "/proc/bus/usb/devices"); ++ strcpy (devicesFile, "/sys/kernel/debug/usb/devices"); + memset (&previousDevicesFile[0], 0x00, sizeof(previousDevicesFile)); + previousChange = 0; + diff --git a/extra/usbview/usbview.install b/extra/usbview/usbview.install new file mode 100644 index 000000000..e111ef946 --- /dev/null +++ b/extra/usbview/usbview.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} |