# HG changeset patch # User Evan Schoenberg # Date 1174964911 0 # Node ID 5c88d2887cc1648f2d6a7217f4c3421bfeb7268a # Parent a0f24a614a9d9adc5f49cf812923b38aa1139568# Parent 1071320641b9d2c1525fc0063a78c5375dc3ae1a merge of '343dc2d52b5a1cb204359ecc11a1b4d98b984dd0' and 'f894448f712134780a75dba19622a78626a98231' diff -r a0f24a614a9d -r 5c88d2887cc1 AUTHORS --- a/AUTHORS Tue Mar 27 03:07:14 2007 +0000 +++ b/AUTHORS Tue Mar 27 03:08:31 2007 +0000 @@ -1,10 +1,10 @@ -gaim - the Pimpin' Penguin IM Clone that's Good for the Soul -============================================================ +Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +========================================================================== For a complete list of all contributors, see the COPYRIGHT file. -We've got an IRC room now too, #gaim on irc.freenode.net (#wingaim for -Windows users). Come check us out. +We've got an IRC room now too, #pidgin on irc.freenode.net +(#winpidgin for Windows users). Come check us out. Current Developers: ------------------ diff -r a0f24a614a9d -r 5c88d2887cc1 COPYRIGHT --- a/COPYRIGHT Tue Mar 27 03:07:14 2007 +0000 +++ b/COPYRIGHT Tue Mar 27 03:08:31 2007 +0000 @@ -1,8 +1,8 @@ -Gaim +Purple, Pidgin and Finch Copyright (C) 1998-2007 by the following: -If you have contributed to Gaim, you deserve to be on this list. -Contact us (see: AUTHORS) and we'll add you. +If you have contributed to this project then you deserve to be on this +list. Contact us (see: AUTHORS) and we'll add you. Saleem Abdulrasool Dave Ahlswede diff -r a0f24a614a9d -r 5c88d2887cc1 ChangeLog --- a/ChangeLog Tue Mar 27 03:07:14 2007 +0000 +++ b/ChangeLog Tue Mar 27 03:08:31 2007 +0000 @@ -1,9 +1,4 @@ -2007-01-24 gettextize - - * Makefile.am (ACLOCAL_AMFLAGS): New variable. - (EXTRA_DIST): Add config.rpath, m4/ChangeLog. - -Gaim: The Pimpin' Penguin IM Client that's good for the soul! +Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul version 2.0.0: Build Changes: diff -r a0f24a614a9d -r 5c88d2887cc1 ChangeLog.API --- a/ChangeLog.API Tue Mar 27 03:07:14 2007 +0000 +++ b/ChangeLog.API Tue Mar 27 03:08:31 2007 +0000 @@ -1,4 +1,4 @@ -Gaim: The Pimpin' Penguin IM Client that's good for the soul! +Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul version 2.0.0: Changed: diff -r a0f24a614a9d -r 5c88d2887cc1 Doxyfile.in --- a/Doxyfile.in Tue Mar 27 03:07:14 2007 +0000 +++ b/Doxyfile.in Tue Mar 27 03:08:31 2007 +0000 @@ -431,9 +431,9 @@ # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = libgaim \ - gtk \ - console \ +INPUT = libpurple \ + finch \ + pidgin \ doc # If the value of the INPUT tag contains directories, you can use the @@ -586,9 +586,9 @@ # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. -IGNORE_PREFIX = Gaim \ - _Gaim \ - gaim +IGNORE_PREFIX = Purple \ + _Purple \ + purple #--------------------------------------------------------------------------- # configuration options related to the HTML output diff -r a0f24a614a9d -r 5c88d2887cc1 NEWS --- a/NEWS Tue Mar 27 03:07:14 2007 +0000 +++ b/NEWS Tue Mar 27 03:08:31 2007 +0000 @@ -1,4 +1,4 @@ --=[ Gaim ]=- The Pimpin' Penguin IM Client That's Good For The Soul! +Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul 2.0.0beta6 (1/17/2006): Sean: Barring any seriously major new issues, we expect this to be diff -r a0f24a614a9d -r 5c88d2887cc1 PLUGIN_HOWTO --- a/PLUGIN_HOWTO Tue Mar 27 03:07:14 2007 +0000 +++ b/PLUGIN_HOWTO Tue Mar 27 03:08:31 2007 +0000 @@ -1,20 +1,7 @@ -For information on writing a plugin for Gaim, go -http://gaim.sourceforge.net/api/ and see the HOWTOs in the -"Related Pages" section. +For information on writing a plugin for Purple, Pidgin or Finch, go +http://pidgin.im/api/ and see the HOWTOs in the "Related Pages" +section. You can also generate this documentation locally by installing -doxygen and graphviz dot, then running "make docs" in the Gaim +doxygen and graphviz dot, then running "make docs" in the source tree. The documentation will be in the docs/html directory. - -This next paragraph is old and possibly out of date: -Compilation of the plugins is fairly straight-forward; there is a -Makefile in this directory that has a rule for making the .so file -from a .c file. No modification of the Makefile should be necessary, -unless if you simply want to type 'make' to have it made; otherwise, -'make filename.so' will take filename.c and make the .so plugin from -it. If you need to link in with extra libraries, you can set the -environment variable PLUGIN_LIBS to be the libraries you want to link -with. - -It should be possible to compile plugins outside of the Gaim source -tree, which is a much cleaner solution. diff -r a0f24a614a9d -r 5c88d2887cc1 README --- a/README Tue Mar 27 03:07:14 2007 +0000 +++ b/README Tue Mar 27 03:08:31 2007 +0000 @@ -1,28 +1,33 @@ -gaim +Purple, Pidgin and Finch ======================== -Rob Flynn IM: RobFlynn (current maintainer) -Syd Logan - Super Hacker and Resident Designated Driver -Jim Duchek IM: Zilding (former maintainer) -Eric Warmenhoven (retired) -Mark Spencer +See AUTHORS and COPYRIGHT for the list of contributors. + +libpurple is a library intended to be used by programmers seeking +to write an IM client that connects to many IM networks. It supports +AIM, ICQ, Jabber, MSN and Yahoo!, among others. -Gaim is an IM client that supports many protocols, including AIM, ICQ, -MSN, IRC, and Jabber. Gaim is NOT endorsed by, nor affiliated with, -AOL nor any other company in ANY way. +Pidgin is an graphical IM client written in C which uses the GTK+ +toolkit. +Finch is a text-based IM client written in C which uses the ncurses +toolkit. + +These programs are not endorsed by, nor affiliated with, AOL nor any +other company in any way. BUILD ===== Read the 'INSTALL' file for more detailed directions. -Gaim uses the standard ./configure ; make. You need to use gmake, BSD -make probably won't work. Remember, run ./configure --help to see what -build options are available. +These programs use the standard ./configure ; make. You need to use +gmake, BSD make probably won't work. Remember, run ./configure --help +to see what build options are available. -In order to compile Gaim, you need to have GTK+ 2.0 installed (as +In order to compile Pidgin you need to have GTK+ 2.0 installed (as well as the development files!). The configure script will fail if you -don't. You can get it from http://www.gtk.org/. +don't. If you don't have GTK+ 2.0 installed, you should install it +using your distribution's package management tools. For sound support, you also need gstreamer 0.10 or higher. For spellchecking support, you need libgtkspell (http://gtkspell.sf.net/). @@ -34,9 +39,9 @@ You should run 'make install' as root to make sure plugins and other files get installed into locations they want to be in. Once you've done that, -you only need to run 'gaim'. +you only need to run 'pidgin' or 'finch'. -Protocol plugins (prpls) are now automatically loaded. Simply go to the +Protocol plugins (PRPLs) are now automatically loaded. Simply go to the account editor, add a new account, and all supported protocols will be there. Be sure to use OSCAR (AIM/ICQ) and not the old TOC or ICQ plugins. @@ -46,12 +51,12 @@ PLUGINS ======= -If you do not wish to enable the plugin support within Gaim, run the +If you do not wish to enable the plugin support within Purple, run the ./configure script with the --disable-plugins option and recompile your source code. This will prevent the ability to load plugins. -'make install' puts the plugins in $PREFIX/lib/gaim (PREFIX being what -you specified when you ./configure'd - it defaults to /usr/local). Gaim +'make install' puts the plugins in $PREFIX/lib/purple (PREFIX being what +you specified when you ./configure'd - it defaults to /usr/local). Purple looks for the plugins in that directory by default, but they do not have to be there to use them. Also, plugins have a .so extension by default, though they do not have to. @@ -69,11 +74,7 @@ make sure to put double-quotes around the "%s", otherwise bad things may happen. -If you come across a bug, please report it to http://gaim.sf.net/bug.php. - -See README.SVN for information on the bleeding edge SVN version of Gaim. -You probably shouldn't use it, as it may eat your children, as well as -your settings. +If you come across a bug, please report it to http://pidgin.im/. PROTOCOL INFORMATION @@ -101,11 +102,11 @@ Oscar is the default protocol. It is recommended that you use Oscar for both AIM and ICQ, as TOC isn't very featureful and the old ICQ protocol no -longer works. +longer works. For AIM, Oscar can get people's away messages. It can request and accept -Direct Connections, and has limited support for file transfer. IM Image -does not currently work. It can send and receive buddy icons if you have +Direct Connections, and has limited support for file transfer. IM Image +does not currently work. It can send and receive buddy icons if you have GdkPixbuf. For ICQ, it supports nearly everything that the old ICQ plugin supported, @@ -120,7 +121,7 @@ Yahoo is currently using the new YMSG protocol that newer official Yahoo clients are using. This protocol is much better than the old one, and tends to be somewhat more reliable. However, the Yahoo service is still -flaky at best. +flaky at best. IRC (Ethan) @@ -134,27 +135,18 @@ IRC, /help will give you a list of them. -MSN (Christian) +MSN === With MSN you can join a conversation with several people, but you can't invite people from the IM window yet. -ICQ (Mark) -=== - -The ICQ plugin is deprecated and will probably be removed soon. The -protocol only marginally works. You should use Oscar for ICQ. You'll -need a different client to register an ICQ account if you don't have -one yet. - - Jabber (Nathan) ====== Transports aren't currently supported at all, though if you have a -transport already subscribed Gaim will use it (you can't add or remove +transport already subscribed Purple will use it (you can't add or remove transports though). In order to use a server other than jabber.org, set your username to include the server, e.g. warmenhoven@mycompany.com. This is the actual format of the Jabber ID anyway; Jabber is email with online @@ -162,23 +154,13 @@ appropriate box in the account editor for your Jabber account. -Napster (Mark) -======= - -Heh. Ok, so I (Rob) am on crack! Gaim can sign on/off of Napster, -add/remove people to your hotlist (buddylist) as well as chat privately -and in chat rooms. You can search for files and browse a list of other -user's files. You can currently download files as long as the person -you're retrieving files from is not firewalled. - - Zephyr (Sean) ====== Let me start off by saying how much I really despise Zephyr. They do a lot of things that make me realize why this never caught on. For those of you who are unfortunate enough to feel compelling need to use this, -gaim now has a Zephyr plugin. It can currently sign on/off, handles +Purple now has a Zephyr plugin. It can currently sign on/off, handles presence/buddy lists (it even imports your .anyone file!), and can send/receive personal messages. A lot of stuff is missing, this is just a real rough first stab at it. diff -r a0f24a614a9d -r 5c88d2887cc1 config.h.mingw --- a/config.h.mingw Tue Mar 27 03:07:14 2007 +0000 +++ b/config.h.mingw Tue Mar 27 03:08:31 2007 +0000 @@ -26,10 +26,10 @@ #define ENABLE_NLS 1 /* Define to make assertions fatal (useful for debugging). */ -/* #undef GAIM_FATAL_ASSERTS */ +/* #undef PURPLE_FATAL_ASSERTS */ /* Define if plugins are enabled. */ -#define GAIM_PLUGINS 1 +#define PURPLE_PLUGINS 1 /* Define to 1 if you have `alloca', as a function or macro. */ #define HAVE_ALLOCA 1 @@ -523,7 +523,7 @@ #define PACKAGE "pidgin" /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "gaim-devel@lists.sourceforge.net" +#define PACKAGE_BUGREPORT "devel@pidgin.im" /* Define to the full name of this package. */ #define PACKAGE_NAME "pidgin" diff -r a0f24a614a9d -r 5c88d2887cc1 doc/PERL-HOWTO.dox --- a/doc/PERL-HOWTO.dox Tue Mar 27 03:07:14 2007 +0000 +++ b/doc/PERL-HOWTO.dox Tue Mar 27 03:08:31 2007 +0000 @@ -333,7 +333,7 @@ } @endcode -Now we can provide an UI for manipulating these preferences in our @prefs_info +Now we can provide an UI for manipulating these preferences in our @c prefs_info function. @code diff -r a0f24a614a9d -r 5c88d2887cc1 finch/gntblist.c --- a/finch/gntblist.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/gntblist.c Tue Mar 27 03:08:31 2007 +0000 @@ -642,8 +642,8 @@ item = gnt_menuitem_new(action->label); if (action->callback) - gnt_menuitem_set_callback(GNT_MENUITEM(item), context_menu_callback, action); - gnt_menu_add_item(menu, GNT_MENUITEM(item)); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), context_menu_callback, action); + gnt_menu_add_item(menu, GNT_MENU_ITEM(item)); if (action->children) { GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP); @@ -745,7 +745,7 @@ { PurpleMenuAction *action = data; purple_blist_node_set_bool(action->data, "gnt-autojoin", - gnt_menuitem_check_get_checked(GNT_MENUITEM_CHECK(item))); + gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item))); } static void @@ -753,7 +753,7 @@ { PurpleMenuAction *action = purple_menu_action_new(_("Auto-join"), NULL, chat, NULL); GntMenuItem *check = gnt_menuitem_check_new(action->label); - gnt_menuitem_check_set_checked(GNT_MENUITEM_CHECK(check), + gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(check), purple_blist_node_get_bool((PurpleBlistNode*)chat, "gnt-autojoin")); gnt_menu_add_item(menu, check); gnt_menuitem_set_callback(check, autojoin_toggled, action); @@ -2072,25 +2072,25 @@ item = gnt_menuitem_new(_("Send IM...")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENUITEM(item), send_im_select, NULL); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL); item = gnt_menuitem_check_new(_("Toggle offline buddies")); - gnt_menuitem_check_set_checked(GNT_MENUITEM_CHECK(item), + gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), purple_prefs_get_bool(PREF_ROOT "/showoffline")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENUITEM(item), show_offline_cb, NULL); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), show_offline_cb, NULL); item = gnt_menuitem_new(_("Sort by status")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "status"); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "status"); item = gnt_menuitem_new(_("Sort alphabetically")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "text"); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "text"); item = gnt_menuitem_new(_("Sort by log size")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENUITEM(item), sort_blist_change_cb, "log"); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log"); reconstruct_accounts_menu(); gnt_menu_add_item(GNT_MENU(menu), ggblist->accounts); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/gntft.c --- a/finch/gntft.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/gntft.c Tue Mar 27 03:08:31 2007 +0000 @@ -158,18 +158,12 @@ stop_button_cb(GntButton *button) { PurpleXfer *selected_xfer = gnt_tree_get_selection_data(GNT_TREE(xfer_dialog->tree)); - if (selected_xfer && selected_xfer->status == PURPLE_XFER_STATUS_STARTED) + if (selected_xfer && selected_xfer->status != PURPLE_XFER_STATUS_CANCEL_LOCAL && + selected_xfer->status != PURPLE_XFER_STATUS_CANCEL_REMOTE && + selected_xfer->status != PURPLE_XFER_STATUS_DONE) purple_xfer_cancel_local(selected_xfer); } -#if 0 -static void -tree_selection_changed_cb(GntTree *tree, GntTreeRow *old, GntTreeRow *current, gpointer n) -{ - xfer_dialog->selected_xfer = (PurpleXfer *)gnt_tree_get_selection_data(tree); -} -#endif - /************************************************************************** * Dialog Building Functions **************************************************************************/ @@ -209,8 +203,7 @@ gnt_tree_set_col_width(GNT_TREE(tree), COLUMN_STATUS, 10); gnt_tree_set_show_title(GNT_TREE(tree), TRUE); gnt_box_add_widget(GNT_BOX(window), tree); - /*g_signal_connect(G_OBJECT(tree), "selection-changed",*/ - /*G_CALLBACK(tree_selection_changed_cb), NULL);*/ + checkbox = gnt_check_box_new( _("Close this window when all transfers finish")); gnt_check_box_set_checked(GNT_CHECK_BOX(checkbox), !xfer_dialog->keep_open); @@ -430,6 +423,7 @@ g_free(remaining_str); if (purple_xfer_is_completed(xfer)) { gnt_tree_change_text(GNT_TREE(xfer_dialog->tree), xfer, COLUMN_STATUS, _("Finished")); + gnt_tree_change_text(GNT_TREE(xfer_dialog->tree), xfer, COLUMN_REMAINING, _("Finished")); } else { gnt_tree_change_text(GNT_TREE(xfer_dialog->tree), xfer, COLUMN_STATUS, _("Transferring")); } diff -r a0f24a614a9d -r 5c88d2887cc1 finch/gntrequest.c --- a/finch/gntrequest.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/gntrequest.c Tue Mar 27 03:08:31 2007 +0000 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -39,7 +40,7 @@ typedef struct { void *user_data; - GntWidget *entry, *dialog; + GntWidget *dialog; GCallback *cbs; } PurpleGntFileRequest; @@ -549,8 +550,10 @@ file_ok_cb(GntWidget *wid, gpointer fq) { PurpleGntFileRequest *data = fq; + char *file = gnt_file_sel_get_selected_file(GNT_FILE_SEL(data->dialog)); if (data->cbs[0] != NULL) - ((PurpleRequestFileCb)data->cbs[0])(data->user_data, gnt_entry_get_text(GNT_ENTRY(data->entry))); + ((PurpleRequestFileCb)data->cbs[0])(data->user_data, file); + g_free(file); purple_request_close(PURPLE_REQUEST_FILE, data->dialog); } @@ -568,8 +571,8 @@ GCallback ok_cb, GCallback cancel_cb, void *user_data) { - GntWidget *window = gnt_vbox_new(FALSE); - GntWidget *entry, *hbox, *button; + GntWidget *window = gnt_file_sel_new(); + GntFileSel *sel = GNT_FILE_SEL(window); PurpleGntFileRequest *data = g_new0(PurpleGntFileRequest, 1); data->user_data = user_data; @@ -577,31 +580,14 @@ data->cbs[0] = ok_cb; data->cbs[1] = cancel_cb; data->dialog = window; - data->entry = entry = gnt_entry_new(g_strconcat(purple_home_dir(), G_DIR_SEPARATOR_S, filename, NULL)); - gnt_widget_set_size(entry, 30, 1); - gnt_box_set_toplevel(GNT_BOX(window), TRUE); gnt_box_set_title(GNT_BOX(window), title ? title : (savedialog ? _("Save File...") : _("Open File..."))); -#if 0 - /* After the string freeze */ - gnt_box_add_widget(GNT_BOX(window), gnt_label_new(_("Please enter a full path for a file"))); -#endif - gnt_box_add_widget(GNT_BOX(window), entry); - - hbox = gnt_hbox_new(TRUE); - gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); - - button = gnt_button_new(_("Cancel")); - g_signal_connect(G_OBJECT(button), "activate", - G_CALLBACK(file_cancel_cb), data); - gnt_box_add_widget(GNT_BOX(hbox), button); - - button = gnt_button_new(_("OK")); - g_signal_connect(G_OBJECT(button), "activate", - G_CALLBACK(file_ok_cb), data); - gnt_box_add_widget(GNT_BOX(hbox), button); - - gnt_box_add_widget(GNT_BOX(window), hbox); - + gnt_file_sel_set_current_location(sel, purple_home_dir()); /* XXX: */ + if (savedialog) + gnt_file_sel_set_suggested_filename(sel, filename); + g_signal_connect(G_OBJECT(sel->cancel), "activate", + G_CALLBACK(file_cancel_cb), data); + g_signal_connect(G_OBJECT(sel->select), "activate", + G_CALLBACK(file_ok_cb), data); g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(file_request_destroy), data); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnt-skel.h --- a/finch/libgnt/gnt-skel.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnt-skel.h Tue Mar 27 03:08:31 2007 +0000 @@ -17,16 +17,16 @@ #define GNT_SKEL_SET_FLAGS(obj, flags) (GNT_SKEL_FLAGS(obj) |= flags) #define GNT_SKEL_UNSET_FLAGS(obj, flags) (GNT_SKEL_FLAGS(obj) &= ~(flags)) -typedef struct _GnSkel GntSkel; -typedef struct _GnSkelPriv GntSkelPriv; -typedef struct _GnSkelClass GntSkelClass; +typedef struct _GntSkel GntSkel; +typedef struct _GntSkelPriv GntSkelPriv; +typedef struct _GntSkelClass GntSkelClass; -struct _GnSkel +struct _GntSkel { GntWidget parent; }; -struct _GnSkelClass +struct _GntSkelClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnt.h --- a/finch/libgnt/gnt.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnt.h Tue Mar 27 03:08:31 2007 +0000 @@ -16,8 +16,6 @@ void gnt_screen_update(GntWidget *widget); -void gnt_screen_take_focus(GntWidget *widget); - void gnt_screen_resize_widget(GntWidget *widget, int width, int height); void gnt_screen_move_widget(GntWidget *widget, int x, int y); @@ -38,4 +36,4 @@ gchar *gnt_get_clipboard_string(void); -void gnt_set_clipboard_string(gchar *); +void gnt_set_clipboard_string(gchar *string); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntbindable.h --- a/finch/libgnt/gntbindable.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntbindable.h Tue Mar 27 03:08:31 2007 +0000 @@ -15,15 +15,15 @@ #define GNTDEBUG g_printerr("%s\n", __FUNCTION__) -typedef struct _GnBindable GntBindable; -typedef struct _GnBindableClass GntBindableClass; +typedef struct _GntBindable GntBindable; +typedef struct _GntBindableClass GntBindableClass; -struct _GnBindable +struct _GntBindable { GObject inherit; }; -struct _GnBindableClass +struct _GntBindableClass { GObjectClass parent; @@ -52,10 +52,10 @@ typedef gboolean (*GntBindableActionCallback) (GntBindable *bindable, GList *params); typedef gboolean (*GntBindableActionCallbackNoParam)(GntBindable *bindable); -typedef struct _GnBindableAction GntBindableAction; -typedef struct _GnBindableActionParam GntBindableActionParam; +typedef struct _GntBindableAction GntBindableAction; +typedef struct _GntBindableActionParam GntBindableActionParam; -struct _GnBindableAction +struct _GntBindableAction { char *name; /* The name of the action */ union { @@ -64,7 +64,7 @@ } u; }; -struct _GnBindableActionParam +struct _GntBindableActionParam { GntBindableAction *action; GList *list; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntbox.h --- a/finch/libgnt/gntbox.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntbox.h Tue Mar 27 03:08:31 2007 +0000 @@ -11,8 +11,8 @@ #define GNT_IS_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_BOX)) #define GNT_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_BOX, GntBoxClass)) -typedef struct _GnBox GntBox; -typedef struct _GnBoxClass GntBoxClass; +typedef struct _GntBox GntBox; +typedef struct _GntBoxClass GntBoxClass; typedef enum { @@ -27,7 +27,7 @@ GNT_ALIGN_BOTTOM } GntAlignment; -struct _GnBox +struct _GntBox { GntWidget parent; @@ -49,7 +49,7 @@ void (*gnt_reserved4)(void); }; -struct _GnBoxClass +struct _GntBoxClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntbutton.h --- a/finch/libgnt/gntbutton.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntbutton.h Tue Mar 27 03:08:31 2007 +0000 @@ -13,16 +13,16 @@ #define GNT_IS_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_BUTTON)) #define GNT_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_BUTTON, GntButtonClass)) -typedef struct _GnButton GntButton; -typedef struct _GnButtonPriv GntButtonPriv; -typedef struct _GnButtonClass GntButtonClass; +typedef struct _GntButton GntButton; +typedef struct _GntButtonPriv GntButtonPriv; +typedef struct _GntButtonClass GntButtonClass; -struct _GnButtonPriv +struct _GntButtonPriv { char *text; }; -struct _GnButton +struct _GntButton { GntWidget parent; @@ -34,7 +34,7 @@ void (*gnt_reserved4)(void); }; -struct _GnButtonClass +struct _GntButtonClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntcheckbox.h --- a/finch/libgnt/gntcheckbox.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntcheckbox.h Tue Mar 27 03:08:31 2007 +0000 @@ -17,17 +17,17 @@ #define GNT_CHECK_BOX_SET_FLAGS(obj, flags) (GNT_CHECK_BOX_FLAGS(obj) |= flags) #define GNT_CHECK_BOX_UNSET_FLAGS(obj, flags) (GNT_CHECK_BOX_FLAGS(obj) &= ~(flags)) -typedef struct _GnCheckBox GntCheckBox; -typedef struct _GnCheckBoxPriv GntCheckBoxPriv; -typedef struct _GnCheckBoxClass GntCheckBoxClass; +typedef struct _GntCheckBox GntCheckBox; +typedef struct _GntCheckBoxPriv GntCheckBoxPriv; +typedef struct _GntCheckBoxClass GntCheckBoxClass; -struct _GnCheckBox +struct _GntCheckBox { GntButton parent; gboolean checked; }; -struct _GnCheckBoxClass +struct _GntCheckBoxClass { GntButtonClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntclipboard.h --- a/finch/libgnt/gntclipboard.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntclipboard.h Tue Mar 27 03:08:31 2007 +0000 @@ -14,16 +14,16 @@ #define GNTDEBUG g_printerr("%s\n", __FUNCTION__) -typedef struct _GnClipboard GntClipboard; -typedef struct _GnClipboardClass GntClipboardClass; +typedef struct _GntClipboard GntClipboard; +typedef struct _GntClipboardClass GntClipboardClass; -struct _GnClipboard +struct _GntClipboard { GObject inherit; gchar *string; }; -struct _GnClipboardClass +struct _GntClipboardClass { GObjectClass parent; @@ -37,9 +37,9 @@ GType gnt_clipboard_get_gtype(void); -gchar *gnt_clipboard_get_string(GntClipboard *); +gchar *gnt_clipboard_get_string(GntClipboard *clip); -void gnt_clipboard_set_string(GntClipboard *, gchar *); +void gnt_clipboard_set_string(GntClipboard *clip, gchar *string); G_END_DECLS diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntcombobox.h --- a/finch/libgnt/gntcombobox.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntcombobox.h Tue Mar 27 03:08:31 2007 +0000 @@ -17,11 +17,11 @@ #define GNT_COMBO_BOX_SET_FLAGS(obj, flags) (GNT_COMBO_BOX_FLAGS(obj) |= flags) #define GNT_COMBO_BOX_UNSET_FLAGS(obj, flags) (GNT_COMBO_BOX_FLAGS(obj) &= ~(flags)) -typedef struct _GnComboBox GntComboBox; -typedef struct _GnComboBoxPriv GntComboBoxPriv; -typedef struct _GnComboBoxClass GntComboBoxClass; +typedef struct _GntComboBox GntComboBox; +typedef struct _GntComboBoxPriv GntComboBoxPriv; +typedef struct _GntComboBoxClass GntComboBoxClass; -struct _GnComboBox +struct _GntComboBox { GntWidget parent; @@ -30,7 +30,7 @@ void *selected; /* Currently selected key */ }; -struct _GnComboBoxClass +struct _GntComboBoxClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntentry.h --- a/finch/libgnt/gntentry.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntentry.h Tue Mar 27 03:08:31 2007 +0000 @@ -19,9 +19,9 @@ #define ENTRY_CHAR '_' /* The character to use to fill in the blank places */ -typedef struct _GnEntry GntEntry; -typedef struct _GnEntryPriv GntEntryPriv; -typedef struct _GnEntryClass GntEntryClass; +typedef struct _GntEntry GntEntry; +typedef struct _GntEntryPriv GntEntryPriv; +typedef struct _GntEntryClass GntEntryClass; typedef enum { @@ -34,7 +34,7 @@ #define GNT_ENTRY_FLAG_ALL (GNT_ENTRY_FLAG_ALPHA | GNT_ENTRY_FLAG_INT) -struct _GnEntry +struct _GntEntry { GntWidget parent; @@ -60,7 +60,7 @@ GntWidget *ddown; /* The dropdown with the suggested list */ }; -struct _GnEntryClass +struct _GntEntryClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntfilesel.c --- a/finch/libgnt/gntfilesel.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntfilesel.c Tue Mar 27 03:08:31 2007 +0000 @@ -28,6 +28,11 @@ { GntFileSel *sel = GNT_FILE_SEL(widget); g_free(sel->current); + g_free(sel->suggest); + if (sel->tags) { + g_list_foreach(sel->tags, (GFunc)g_free, NULL); + g_list_free(sel->tags); + } } static char * @@ -66,13 +71,23 @@ { char *old; const char *tmp; - tmp = (const char*)gnt_tree_get_selection_data(sel->dirsonly ? GNT_TREE(sel->dirs) : GNT_TREE(sel->files)); + tmp = sel->suggest ? sel->suggest : + (const char*)gnt_tree_get_selection_data(sel->dirsonly ? GNT_TREE(sel->dirs) : GNT_TREE(sel->files)); old = g_strdup_printf("%s%s%s", sel->current, sel->current[1] ? G_DIR_SEPARATOR_S : "", tmp ? tmp : ""); gnt_entry_set_text(GNT_ENTRY(sel->location), old); g_free(old); } static gboolean +is_tagged(GntFileSel *sel, const char *f) +{ + char *ret = g_strdup_printf("%s%s%s", sel->current, sel->current[1] ? G_DIR_SEPARATOR_S : "", f); + gboolean find = g_list_find_custom(sel->tags, ret, (GCompareFunc)g_utf8_collate) != NULL; + g_free(ret); + return find; +} + +static gboolean location_changed(GntFileSel *sel, GError **err) { GDir *dir; @@ -109,15 +124,19 @@ if (stat(fp, &st)) { g_printerr("Error stating location %s\n", fp); } else { - if (S_ISDIR(st.st_mode)) + if (S_ISDIR(st.st_mode)) { gnt_tree_add_row_after(GNT_TREE(sel->dirs), g_strdup(str), gnt_tree_create_row(GNT_TREE(sel->dirs), str), NULL, NULL); - else if (!sel->dirsonly) { + if (sel->multiselect && sel->dirsonly && is_tagged(sel, str)) + gnt_tree_set_row_flags(GNT_TREE(sel->dirs), (gpointer)str, GNT_TEXT_FLAG_BOLD); + } else if (!sel->dirsonly) { char size[128]; snprintf(size, sizeof(size), "%ld", (long)st.st_size); gnt_tree_add_row_after(GNT_TREE(sel->files), g_strdup(str), gnt_tree_create_row(GNT_TREE(sel->files), str, size, ""), NULL, NULL); + if (sel->multiselect && is_tagged(sel, str)) + gnt_tree_set_row_flags(GNT_TREE(sel->files), (gpointer)str, GNT_TEXT_FLAG_BOLD); } } g_free(fp); @@ -131,7 +150,6 @@ dir_key_pressed(GntTree *tree, const char *key, GntFileSel *sel) { if (strcmp(key, "\r") == 0) { - /* XXX: if we are moving up the tree, make sure the current node is selected after the redraw */ char *str = g_strdup(gnt_tree_get_selection_data(tree)); char *path = g_build_filename(sel->current, str, NULL); char *dir = g_path_get_basename(sel->current); @@ -214,6 +232,8 @@ static void file_sel_changed(GntWidget *widget, gpointer old, gpointer current, GntFileSel *sel) { + g_free(sel->suggest); + sel->suggest = NULL; update_location(sel); } @@ -225,7 +245,7 @@ vbox = gnt_vbox_new(FALSE); gnt_box_set_pad(GNT_BOX(vbox), 0); - gnt_box_set_alignment(GNT_BOX(vbox), GNT_ALIGN_LEFT); + gnt_box_set_alignment(GNT_BOX(vbox), GNT_ALIGN_MID); /* The dir. and files list */ hbox = gnt_hbox_new(FALSE); @@ -253,9 +273,64 @@ update_location(sel); } +static gboolean +toggle_tag_selection(GntBindable *bind, GList *null) +{ + GntFileSel *sel = GNT_FILE_SEL(bind); + char *str; + GList *find; + char *file; + GntWidget *tree; + + if (!sel->multiselect) + return FALSE; + tree = sel->dirsonly ? sel->dirs : sel->files; + if (!gnt_widget_has_focus(tree)) + return FALSE; + + file = gnt_tree_get_selection_data(sel->dirsonly ? GNT_TREE(sel->dirs) : GNT_TREE(sel->files)); + + str = gnt_file_sel_get_selected_file(sel); + if ((find = g_list_find_custom(sel->tags, str, (GCompareFunc)g_utf8_collate)) != NULL) { + g_free(find->data); + sel->tags = g_list_delete_link(sel->tags, find); + gnt_tree_set_row_flags(GNT_TREE(tree), file, GNT_TEXT_FLAG_NORMAL); + g_free(str); + } else { + sel->tags = g_list_prepend(sel->tags, str); + gnt_tree_set_row_flags(GNT_TREE(tree), file, GNT_TEXT_FLAG_BOLD); + } + + return TRUE; +} + +static gboolean +clear_tags(GntBindable *bind, GList *null) +{ + GntFileSel *sel = GNT_FILE_SEL(bind); + GntWidget *tree; + GList *iter; + + if (!sel->multiselect) + return FALSE; + tree = sel->dirsonly ? sel->dirs : sel->files; + if (!gnt_widget_has_focus(tree)) + return FALSE; + + g_list_foreach(sel->tags, (GFunc)g_free, NULL); + g_list_free(sel->tags); + sel->tags = NULL; + + for (iter = GNT_TREE(tree)->list; iter; iter = iter->next) + gnt_tree_set_row_flags(GNT_TREE(tree), iter->data, GNT_TEXT_FLAG_NORMAL); + + return TRUE; +} + static void gnt_file_sel_class_init(GntFileSelClass *klass) { + GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); GntWidgetClass *kl = GNT_WIDGET_CLASS(klass); parent_class = GNT_WINDOW_CLASS(klass); kl->destroy = gnt_file_sel_destroy; @@ -270,6 +345,9 @@ NULL, NULL, gnt_closure_marshal_VOID__STRING_STRING, G_TYPE_NONE, 0); + + gnt_bindable_class_register_action(bindable, "toggle-tag", toggle_tag_selection, "t", NULL); + gnt_bindable_class_register_action(bindable, "clear-tags", clear_tags, "c", NULL); gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), GNT_BINDABLE_CLASS(klass)); GNTDEBUG; @@ -375,3 +453,53 @@ return sel->dirsonly; } +void gnt_file_sel_set_suggested_filename(GntFileSel *sel, const char *suggest) +{ + sel->suggest = g_strdup(suggest); +} + +char *gnt_file_sel_get_selected_file(GntFileSel *sel) +{ + char *ret; + if (sel->dirsonly) { + ret = g_strdup(g_path_get_dirname(gnt_entry_get_text(GNT_ENTRY(sel->location)))); + } else { + ret = g_strdup(gnt_entry_get_text(GNT_ENTRY(sel->location))); + } + return ret; +} + +void gnt_file_sel_set_must_exist(GntFileSel *sel, gboolean must) +{ + /*XXX: What do I do with this? */ + sel->must_exist = must; +} + +gboolean gnt_file_sel_get_must_exist(GntFileSel *sel) +{ + return sel->must_exist; +} + +void gnt_file_sel_set_multi_select(GntFileSel *sel, gboolean set) +{ + sel->multiselect = set; +} + +GList *gnt_file_sel_get_selected_multi_files(GntFileSel *sel) +{ + GList *list = NULL, *iter; + char *str = gnt_file_sel_get_selected_file(sel); + + for (iter = sel->tags; iter; iter = iter->next) { + list = g_list_prepend(list, g_strdup(iter->data)); + if (g_utf8_collate(str, iter->data)) { + g_free(str); + str = NULL; + } + } + if (str) + list = g_list_prepend(list, str); + list = g_list_reverse(list); + return list; +} + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntfilesel.h --- a/finch/libgnt/gntfilesel.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntfilesel.h Tue Mar 27 03:08:31 2007 +0000 @@ -17,11 +17,11 @@ #define GNT_FILE_SEL_SET_FLAGS(obj, flags) (GNT_FILE_SEL_FLAGS(obj) |= flags) #define GNT_FILE_SEL_UNSET_FLAGS(obj, flags) (GNT_FILE_SEL_FLAGS(obj) &= ~(flags)) -typedef struct _GnFileSel GntFileSel; -typedef struct _GnFileSelPriv GntFileSelPriv; -typedef struct _GnFileSelClass GntFileSelClass; +typedef struct _GntFileSel GntFileSel; +typedef struct _GntFileSelPriv GntFileSelPriv; +typedef struct _GntFileSelClass GntFileSelClass; -struct _GnFileSel +struct _GntFileSel { GntWindow parent; @@ -33,12 +33,15 @@ GntWidget *cancel; /* cancel button */ char *current; /* Full path of the current location */ + char *suggest; /* Suggested filename */ /* XXX: someone should make these useful */ gboolean must_exist; /* Make sure the selected file (the name entered in 'location') exists */ gboolean dirsonly; /* Show only directories */ + gboolean multiselect; + GList *tags; /* List of tagged files when multiselect is set */ }; -struct _GnFileSelClass +struct _GntFileSelClass { GntWindowClass parent; @@ -57,12 +60,23 @@ gboolean gnt_file_sel_set_current_location(GntFileSel *sel, const char *path); -const char *gnt_file_sel_get_current_location(GntFileSel *sel); - void gnt_file_sel_set_dirs_only(GntFileSel *sel, gboolean dirs); gboolean gnt_file_sel_get_dirs_only(GntFileSel *sel); +void gnt_file_sel_set_must_exist(GntFileSel *sel, gboolean must); + +gboolean gnt_file_sel_get_must_exist(GntFileSel *sel); + +char *gnt_file_sel_get_selected_file(GntFileSel *sel); /* The returned value should be free'd */ + +GList *gnt_file_sel_get_selected_multi_files(GntFileSel *sel); + +void gnt_file_sel_set_multi_select(GntFileSel *sel, gboolean set); + +void gnt_file_sel_set_suggested_filename(GntFileSel *sel, const char *suggest); + G_END_DECLS #endif /* GNT_FILE_SEL_H */ + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntlabel.h --- a/finch/libgnt/gntlabel.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntlabel.h Tue Mar 27 03:08:31 2007 +0000 @@ -12,10 +12,10 @@ #define GNT_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_LABEL)) #define GNT_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_LABEL, GntLabelClass)) -typedef struct _GnLabel GntLabel; -typedef struct _GnLabelClass GntLabelClass; +typedef struct _GntLabel GntLabel; +typedef struct _GntLabelClass GntLabelClass; -struct _GnLabel +struct _GntLabel { GntWidget parent; @@ -28,7 +28,7 @@ void (*gnt_reserved4)(void); }; -struct _GnLabelClass +struct _GntLabelClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntline.h --- a/finch/libgnt/gntline.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntline.h Tue Mar 27 03:08:31 2007 +0000 @@ -17,18 +17,18 @@ #define GNT_LINE_SET_FLAGS(obj, flags) (GNT_LINE_FLAGS(obj) |= flags) #define GNT_LINE_UNSET_FLAGS(obj, flags) (GNT_LINE_FLAGS(obj) &= ~(flags)) -typedef struct _GnLine GntLine; -typedef struct _GnLinePriv GntLinePriv; -typedef struct _GnLineClass GntLineClass; +typedef struct _GntLine GntLine; +typedef struct _GntLinePriv GntLinePriv; +typedef struct _GntLineClass GntLineClass; -struct _GnLine +struct _GntLine { GntWidget parent; gboolean vertical; }; -struct _GnLineClass +struct _GntLineClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenu.c --- a/finch/libgnt/gntmenu.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenu.c Tue Mar 27 03:08:31 2007 +0000 @@ -28,7 +28,7 @@ werase(widget->window); for (i = 0, iter = menu->list; iter; iter = iter->next, i++) { - GntMenuItem *item = GNT_MENUITEM(iter->data); + GntMenuItem *item = GNT_MENU_ITEM(iter->data); type = ' ' | COLOR_PAIR(GNT_COLOR_HIGHLIGHT); if (i == menu->selected) type |= A_REVERSE; @@ -61,10 +61,10 @@ static void menu_tree_add(GntMenu *menu, GntMenuItem *item, GntMenuItem *parent) { - if (GNT_IS_MENUITEM_CHECK(item)) { + if (GNT_IS_MENU_ITEM_CHECK(item)) { gnt_tree_add_choice(GNT_TREE(menu), item, gnt_tree_create_row(GNT_TREE(menu), item->text, " "), parent, NULL); - gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENUITEM_CHECK(item))); + gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item))); } else gnt_tree_add_row_last(GNT_TREE(menu), item, gnt_tree_create_row(GNT_TREE(menu), item->text, item->submenu ? ">" : " "), parent); @@ -73,7 +73,7 @@ GntMenu *sub = GNT_MENU(item->submenu); GList *iter; for (iter = sub->list; iter; iter = iter->next) { - GntMenuItem *it = GNT_MENUITEM(iter->data); + GntMenuItem *it = GNT_MENU_ITEM(iter->data); menu_tree_add(menu, it, item); } } @@ -91,7 +91,7 @@ GList *iter; gnt_tree_remove_all(GNT_TREE(widget)); for (iter = menu->list; iter; iter = iter->next) { - GntMenuItem *item = GNT_MENUITEM(iter->data); + GntMenuItem *item = GNT_MENU_ITEM(iter->data); menu_tree_add(menu, item, NULL); } org_map(widget); @@ -185,10 +185,10 @@ static void gnt_menu_toggled(GntTree *tree, gpointer key) { - GntMenuItem *item = GNT_MENUITEM(key); + GntMenuItem *item = GNT_MENU_ITEM(key); GntMenu *menu = GNT_MENU(tree); - gboolean check = gnt_menuitem_check_get_checked(GNT_MENUITEM_CHECK(item)); - gnt_menuitem_check_set_checked(GNT_MENUITEM_CHECK(item), !check); + gboolean check = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)); + gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !check); if (item->callback) item->callback(item, item->callbackdata); while (menu) { @@ -210,7 +210,7 @@ } if (item) { - if (GNT_IS_MENUITEM_CHECK(item)) + if (GNT_IS_MENU_ITEM_CHECK(item)) gnt_menu_toggled(GNT_TREE(widget), item); else menuitem_activate(menu, item); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenu.h --- a/finch/libgnt/gntmenu.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenu.h Tue Mar 27 03:08:31 2007 +0000 @@ -16,9 +16,9 @@ #define GNT_MENU_SET_FLAGS(obj, flags) (GNT_MENU_FLAGS(obj) |= flags) #define GNT_MENU_UNSET_FLAGS(obj, flags) (GNT_MENU_FLAGS(obj) &= ~(flags)) -typedef struct _GnMenu GntMenu; -typedef struct _GnMenuPriv GntMenuPriv; -typedef struct _GnMenuClass GntMenuClass; +typedef struct _GntMenu GntMenu; +typedef struct _GntMenuPriv GntMenuPriv; +typedef struct _GntMenuClass GntMenuClass; #include "gntmenuitem.h" @@ -33,7 +33,7 @@ GNT_MENU_POPUP, /* A popup menu */ } GntMenuType; -struct _GnMenu +struct _GntMenu { GntTree parent; GntMenuType type; @@ -47,7 +47,7 @@ GntMenu *parentmenu; }; -struct _GnMenuClass +struct _GntMenuClass { GntTreeClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenuitem.c --- a/finch/libgnt/gntmenuitem.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenuitem.c Tue Mar 27 03:08:31 2007 +0000 @@ -6,7 +6,7 @@ static void gnt_menuitem_destroy(GObject *obj) { - GntMenuItem *item = GNT_MENUITEM(obj); + GntMenuItem *item = GNT_MENU_ITEM(obj); g_free(item->text); item->text = NULL; if (item->submenu) @@ -61,8 +61,8 @@ GntMenuItem *gnt_menuitem_new(const char *text) { - GObject *item = g_object_new(GNT_TYPE_MENUITEM, NULL); - GntMenuItem *menuitem = GNT_MENUITEM(item); + GObject *item = g_object_new(GNT_TYPE_MENU_ITEM, NULL); + GntMenuItem *menuitem = GNT_MENU_ITEM(item); menuitem->text = g_strdup(text); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenuitem.h --- a/finch/libgnt/gntmenuitem.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenuitem.h Tue Mar 27 03:08:31 2007 +0000 @@ -4,24 +4,24 @@ #include #include -#define GNT_TYPE_MENUITEM (gnt_menuitem_get_gtype()) -#define GNT_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_MENUITEM, GntMenuItem)) -#define GNT_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_MENUITEM, GntMenuItemClass)) -#define GNT_IS_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_MENUITEM)) -#define GNT_IS_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_MENUITEM)) -#define GNT_MENUITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_MENUITEM, GntMenuItemClass)) +#define GNT_TYPE_MENU_ITEM (gnt_menuitem_get_gtype()) +#define GNT_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_MENU_ITEM, GntMenuItem)) +#define GNT_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_MENU_ITEM, GntMenuItemClass)) +#define GNT_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_MENU_ITEM)) +#define GNT_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_MENU_ITEM)) +#define GNT_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_MENU_ITEM, GntMenuItemClass)) -#define GNT_MENUITEM_FLAGS(obj) (GNT_MENUITEM(obj)->priv.flags) -#define GNT_MENUITEM_SET_FLAGS(obj, flags) (GNT_MENUITEM_FLAGS(obj) |= flags) -#define GNT_MENUITEM_UNSET_FLAGS(obj, flags) (GNT_MENUITEM_FLAGS(obj) &= ~(flags)) +#define GNT_MENU_ITEM_FLAGS(obj) (GNT_MENU_ITEM(obj)->priv.flags) +#define GNT_MENU_ITEM_SET_FLAGS(obj, flags) (GNT_MENU_ITEM_FLAGS(obj) |= flags) +#define GNT_MENU_ITEM_UNSET_FLAGS(obj, flags) (GNT_MENU_ITEM_FLAGS(obj) &= ~(flags)) -typedef struct _GnMenuItem GntMenuItem; -typedef struct _GnMenuItemPriv GntMenuItemPriv; -typedef struct _GnMenuItemClass GntMenuItemClass; +typedef struct _GntMenuItem GntMenuItem; +typedef struct _GntMenuItemPriv GntMenuItemPriv; +typedef struct _GntMenuItemClass GntMenuItemClass; #include "gntmenu.h" -struct _GnMenuItemPriv +struct _GntMenuItemPriv { /* These will be used to determine the position of the submenu */ int x; @@ -30,7 +30,7 @@ typedef void (*GntMenuItemCallback)(GntMenuItem *item, gpointer data); -struct _GnMenuItem +struct _GntMenuItem { GObject parent; GntMenuItemPriv priv; @@ -46,7 +46,7 @@ GntMenu *submenu; }; -struct _GnMenuItemClass +struct _GntMenuItemClass { GObjectClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenuitemcheck.c --- a/finch/libgnt/gntmenuitemcheck.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenuitemcheck.c Tue Mar 27 03:08:31 2007 +0000 @@ -5,7 +5,7 @@ static void gnt_menuitem_check_class_init(GntMenuItemCheckClass *klass) { - parent_class = GNT_MENUITEM_CLASS(klass); + parent_class = GNT_MENU_ITEM_CLASS(klass); GNTDEBUG; } @@ -39,7 +39,7 @@ NULL /* value_table */ }; - type = g_type_register_static(GNT_TYPE_MENUITEM, + type = g_type_register_static(GNT_TYPE_MENU_ITEM, "GntMenuItemCheck", &info, 0); } @@ -49,8 +49,8 @@ GntMenuItem *gnt_menuitem_check_new(const char *text) { - GntMenuItem *item = g_object_new(GNT_TYPE_MENUITEM_CHECK, NULL); - GntMenuItem *menuitem = GNT_MENUITEM(item); + GntMenuItem *item = g_object_new(GNT_TYPE_MENU_ITEM_CHECK, NULL); + GntMenuItem *menuitem = GNT_MENU_ITEM(item); menuitem->text = g_strdup(text); return item; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntmenuitemcheck.h --- a/finch/libgnt/gntmenuitemcheck.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntmenuitemcheck.h Tue Mar 27 03:08:31 2007 +0000 @@ -1,33 +1,33 @@ -#ifndef GNT_MENUITEM_CHECK_H -#define GNT_MENUITEM_CHECK_H +#ifndef GNT_MENU_ITEM_CHECK_H +#define GNT_MENU_ITEM_CHECK_H #include "gnt.h" #include "gntcolors.h" #include "gntkeys.h" #include "gntmenuitem.h" -#define GNT_TYPE_MENUITEM_CHECK (gnt_menuitem_check_get_gtype()) -#define GNT_MENUITEM_CHECK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_MENUITEM_CHECK, GntMenuItemCheck)) -#define GNT_MENUITEM_CHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_MENUITEM_CHECK, GntMenuItemCheckClass)) -#define GNT_IS_MENUITEM_CHECK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_MENUITEM_CHECK)) -#define GNT_IS_MENUITEM_CHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_MENUITEM_CHECK)) -#define GNT_MENUITEM_CHECK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_MENUITEM_CHECK, GntMenuItemCheckClass)) +#define GNT_TYPE_MENU_ITEM_CHECK (gnt_menuitem_check_get_gtype()) +#define GNT_MENU_ITEM_CHECK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_MENU_ITEM_CHECK, GntMenuItemCheck)) +#define GNT_MENU_ITEM_CHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_MENU_ITEM_CHECK, GntMenuItemCheckClass)) +#define GNT_IS_MENU_ITEM_CHECK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_MENU_ITEM_CHECK)) +#define GNT_IS_MENU_ITEM_CHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_MENU_ITEM_CHECK)) +#define GNT_MENU_ITEM_CHECK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_MENU_ITEM_CHECK, GntMenuItemCheckClass)) -#define GNT_MENUITEM_CHECK_FLAGS(obj) (GNT_MENUITEM_CHECK(obj)->priv.flags) -#define GNT_MENUITEM_CHECK_SET_FLAGS(obj, flags) (GNT_MENUITEM_CHECK_FLAGS(obj) |= flags) -#define GNT_MENUITEM_CHECK_UNSET_FLAGS(obj, flags) (GNT_MENUITEM_CHECK_FLAGS(obj) &= ~(flags)) +#define GNT_MENU_ITEM_CHECK_FLAGS(obj) (GNT_MENU_ITEM_CHECK(obj)->priv.flags) +#define GNT_MENU_ITEM_CHECK_SET_FLAGS(obj, flags) (GNT_MENU_ITEM_CHECK_FLAGS(obj) |= flags) +#define GNT_MENU_ITEM_CHECK_UNSET_FLAGS(obj, flags) (GNT_MENU_ITEM_CHECK_FLAGS(obj) &= ~(flags)) -typedef struct _GnMenuItemCheck GntMenuItemCheck; -typedef struct _GnMenuItemCheckPriv GntMenuItemCheckPriv; -typedef struct _GnMenuItemCheckClass GntMenuItemCheckClass; +typedef struct _GntMenuItemCheck GntMenuItemCheck; +typedef struct _GntMenuItemCheckPriv GntMenuItemCheckPriv; +typedef struct _GntMenuItemCheckClass GntMenuItemCheckClass; -struct _GnMenuItemCheck +struct _GntMenuItemCheck { GntMenuItem parent; gboolean checked; }; -struct _GnMenuItemCheckClass +struct _GntMenuItemCheckClass { GntMenuItemClass parent; @@ -49,4 +49,4 @@ G_END_DECLS -#endif /* GNT_MENUITEM_CHECK_H */ +#endif /* GNT_MENU_ITEM_CHECK_H */ diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnttextview.c --- a/finch/libgnt/gnttextview.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnttextview.c Tue Mar 27 03:08:31 2007 +0000 @@ -44,6 +44,7 @@ GList *lines; int rows, scrcol; + wbkgd(widget->window, COLOR_PAIR(GNT_COLOR_NORMAL)); werase(widget->window); for (i = 0, lines = view->list; i < widget->priv.height && lines; i++, lines = lines->next) @@ -434,7 +435,7 @@ GntWidget *gnt_text_view_new() { - GntWidget *widget = g_object_new(GNT_TYPE_TEXTVIEW, NULL); + GntWidget *widget = g_object_new(GNT_TYPE_TEXT_VIEW, NULL); GntTextView *view = GNT_TEXT_VIEW(widget); GntTextLine *line = g_new0(GntTextLine, 1); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnttextview.h --- a/finch/libgnt/gnttextview.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnttextview.h Tue Mar 27 03:08:31 2007 +0000 @@ -6,22 +6,22 @@ #include "gntcolors.h" #include "gntkeys.h" -#define GNT_TYPE_TEXTVIEW (gnt_text_view_get_gtype()) -#define GNT_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_TEXTVIEW, GntTextView)) -#define GNT_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_TEXTVIEW, GntTextViewClass)) -#define GNT_IS_TEXTVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_TEXTVIEW)) -#define GNT_IS_TEXTVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_TEXTVIEW)) -#define GNT_TEXT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_TEXTVIEW, GntTextViewClass)) +#define GNT_TYPE_TEXT_VIEW (gnt_text_view_get_gtype()) +#define GNT_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_TEXT_VIEW, GntTextView)) +#define GNT_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_TEXT_VIEW, GntTextViewClass)) +#define GNT_IS_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_TEXT_VIEW)) +#define GNT_IS_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_TEXT_VIEW)) +#define GNT_TEXT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_TEXT_VIEW, GntTextViewClass)) #define GNT_TEXT_VIEW_FLAGS(obj) (GNT_TEXT_VIEW(obj)->priv.flags) #define GNT_TEXT_VIEW_SET_FLAGS(obj, flags) (GNT_TEXT_VIEW_FLAGS(obj) |= flags) #define GNT_TEXT_VIEW_UNSET_FLAGS(obj, flags) (GNT_TEXT_VIEW_FLAGS(obj) &= ~(flags)) -typedef struct _GnTextView GntTextView; -typedef struct _GnTextViewPriv GntTextViewPriv; -typedef struct _GnTextViewClass GntTextViewClass; +typedef struct _GntTextView GntTextView; +typedef struct _GntTextViewPriv GntTextViewPriv; +typedef struct _GntTextViewClass GntTextViewClass; -struct _GnTextView +struct _GntTextView { GntWidget parent; @@ -41,7 +41,7 @@ GNT_TEXT_FLAG_HIGHLIGHT = 1 << 4, } GntTextFormatFlags; -struct _GnTextViewClass +struct _GntTextViewClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnttree.c --- a/finch/libgnt/gnttree.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnttree.c Tue Mar 27 03:08:31 2007 +0000 @@ -20,7 +20,7 @@ /* XXX: Make this one into a GObject? * ... Probably not */ -struct _GnTreeRow +struct _GntTreeRow { void *key; void *data; /* XXX: unused */ @@ -40,7 +40,7 @@ GntTree *tree; }; -struct _GnTreeCol +struct _GntTreeCol { char *text; int span; /* How many columns does it span? */ diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gnttree.h --- a/finch/libgnt/gnttree.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gnttree.h Tue Mar 27 03:08:31 2007 +0000 @@ -18,14 +18,14 @@ #define GNT_TREE_SET_FLAGS(obj, flags) (GNT_TREE_FLAGS(obj) |= flags) #define GNT_TREE_UNSET_FLAGS(obj, flags) (GNT_TREE_FLAGS(obj) &= ~(flags)) -typedef struct _GnTree GntTree; -typedef struct _GnTreePriv GntTreePriv; -typedef struct _GnTreeClass GntTreeClass; +typedef struct _GntTree GntTree; +typedef struct _GntTreePriv GntTreePriv; +typedef struct _GntTreeClass GntTreeClass; -typedef struct _GnTreeRow GntTreeRow; -typedef struct _GnTreeCol GntTreeCol; +typedef struct _GntTreeRow GntTreeRow; +typedef struct _GntTreeCol GntTreeCol; -struct _GnTree +struct _GntTree { GntWidget parent; @@ -58,7 +58,7 @@ GCompareFunc compare; }; -struct _GnTreeClass +struct _GntTreeClass { GntWidgetClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntwidget.c --- a/finch/libgnt/gntwidget.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntwidget.c Tue Mar 27 03:08:31 2007 +0000 @@ -521,7 +521,7 @@ widget->priv.width = width; widget->priv.height = height; - if (width >= getmaxx(widget->window) || height >= getmaxy(widget->window)) { + if (width + shadow >= getmaxx(widget->window) || height + shadow >= getmaxy(widget->window)) { delwin(widget->window); widget->window = newpad(height + 20, width + 20); } diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntwidget.h --- a/finch/libgnt/gntwidget.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntwidget.h Tue Mar 27 03:08:31 2007 +0000 @@ -19,11 +19,11 @@ #define GNT_WIDGET_UNSET_FLAGS(obj, flags) (GNT_WIDGET_FLAGS(obj) &= ~(flags)) #define GNT_WIDGET_IS_FLAG_SET(obj, flags) (GNT_WIDGET_FLAGS(obj) & (flags)) -typedef struct _GnWidget GntWidget; -typedef struct _GnWidgetPriv GntWidgetPriv; -typedef struct _GnWidgetClass GntWidgetClass; +typedef struct _GntWidget GntWidget; +typedef struct _GntWidgetPriv GntWidgetPriv; +typedef struct _GntWidgetClass GntWidgetClass; -typedef enum _GnWidgetFlags +typedef enum _GntWidgetFlags { GNT_WIDGET_DESTROYING = 1 << 0, GNT_WIDGET_CAN_TAKE_FOCUS = 1 << 1, @@ -42,7 +42,7 @@ } GntWidgetFlags; /* XXX: This will probably move elsewhere */ -typedef enum _GnMouseEvent +typedef enum _GntMouseEvent { GNT_LEFT_MOUSE_DOWN = 1, GNT_RIGHT_MOUSE_DOWN, @@ -53,12 +53,12 @@ } GntMouseEvent; /* XXX: I'll have to ask grim what he's using this for in guifications. */ -typedef enum _GnParamFlags +typedef enum _GntParamFlags { GNT_PARAM_SERIALIZABLE = 1 << G_PARAM_USER_SHIFT } GntParamFlags; -struct _GnWidgetPriv +struct _GntWidgetPriv { int x, y; int width, height; @@ -68,7 +68,7 @@ int minw, minh; /* Minimum size for the widget */ }; -struct _GnWidget +struct _GntWidget { GntBindable inherit; @@ -83,7 +83,7 @@ void (*gnt_reserved4)(void); }; -struct _GnWidgetClass +struct _GntWidgetClass { GntBindableClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntwindow.h --- a/finch/libgnt/gntwindow.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntwindow.h Tue Mar 27 03:08:31 2007 +0000 @@ -18,17 +18,17 @@ #define GNT_WINDOW_SET_FLAGS(obj, flags) (GNT_WINDOW_FLAGS(obj) |= flags) #define GNT_WINDOW_UNSET_FLAGS(obj, flags) (GNT_WINDOW_FLAGS(obj) &= ~(flags)) -typedef struct _GnWindow GntWindow; -typedef struct _GnWindowPriv GntWindowPriv; -typedef struct _GnWindowClass GntWindowClass; +typedef struct _GntWindow GntWindow; +typedef struct _GntWindowPriv GntWindowPriv; +typedef struct _GntWindowClass GntWindowClass; -struct _GnWindow +struct _GntWindow { GntBox parent; GntMenu *menu; }; -struct _GnWindowClass +struct _GntWindowClass { GntBoxClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/gntwm.h --- a/finch/libgnt/gntwm.h Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/gntwm.h Tue Mar 27 03:08:31 2007 +0000 @@ -27,9 +27,9 @@ PANEL *panel; } GntNode; -typedef struct _GntWM GntWM; +typedef struct _GnttWM GntWM; -typedef struct _GnPosition +typedef struct _GntPosition { int x; int y; @@ -38,13 +38,13 @@ /** * An application can register actions which will show up in a 'start-menu' like popup */ -typedef struct _GnAction +typedef struct _GntAction { const char *label; void (*callback)(); } GntAction; -struct _GntWM +struct _GnttWM { GntBindable inherit; @@ -89,9 +89,9 @@ void *res4; }; -typedef struct _GnWMClass GntWMClass; +typedef struct _GntWMClass GntWMClass; -struct _GnWMClass +struct _GntWMClass { GntBindableClass parent; diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/Files.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/Files.txt Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,6 @@ +gendef.sh +gnt.override +Makefile +test.py +dbus-gnt +gntmodule.c diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/Makefile.make --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/Makefile.make Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,14 @@ +CC = gcc +CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -I/usr/include/python2.4/ -I.. -g -O0 +LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0 gnt` + +gnt.so: gnt.o gntmodule.o + $(CC) $(LDFLAGS) -shared $^ -o $@ + +gnt.c: gnt.def gnt.override + pygtk-codegen-2.0 --prefix gnt \ + --override gnt.override \ + gnt.def > $@ + +clean: + @rm *.so *.o gnt.c diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/README.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/README.txt Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,4 @@ +Run these in sequence: + +./gendef.sh +make -f Makefile.make gnt.so diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/dbus-gnt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/dbus-gnt Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,103 @@ +#!/usr/bin/env python + +# This script requires Python 2.4 and pygnt bindings +# +# Note that all function names are resolved dynamically, no +# purple-specific library is needed. + +import dbus +import dbus.glib +import dbus.decorators +import gobject +import os +import gnt + +from time import strftime + +convwins = {} + +def buddysignedon(): + pass + +def conv_closed(conv): + key = get_dict_key(conv) + stuff = convwins[key] + stuff[0].destroy() + convwins[key] = None + +def wrote_msg(account, who, msg, conv, flags): + stuff = show_conversation(conv) + tv = stuff[1] + tv.append_text_with_flags("\n", 0) + tv.append_text_with_flags(strftime("(%X) "), 8) + tv.append_text_with_flags(who + ": ", 1) + tv.append_text_with_flags(msg, 0) + tv.scroll(0) + +gnt.gnt_init() + +bus = dbus.SessionBus() +obj = bus.get_object("net.sf.purple.PurpleService", "/net/sf/purple/PurpleObject") +purple = dbus.Interface(obj, "net.sf.purple.PurpleInterface") + +bus.add_signal_receiver(buddysignedon, + dbus_interface = "net.sf.purple.PurpleInterface", + signal_name = "BuddySignedOn") + +bus.add_signal_receiver(wrote_msg, + dbus_interface = "net.sf.purple.PurpleInterface", + signal_name = "WroteImMsg") + +bus.add_signal_receiver(wrote_msg, + dbus_interface = "net.sf.purple.PurpleInterface", + signal_name = "WroteChatMsg") + +bus.add_signal_receiver(conv_closed, + dbus_interface = "net.sf.purple.PurpleInterface", + signal_name = "DeletingConversation") + +def get_dict_key(conv): + val = purple.PurpleConversationGetName(conv) + return val + +def send_im_cb(entry, key, conv): + if key[0] == '\r': + # XXX: do something about the / commands + type = purple.PurpleConversationGetType(conv) + if type == 1: + imdata = purple.PurpleConversationGetImData(conv) + purple.PurpleConvImSend(imdata, entry.get_text()) + else: + chatdata = purple.PurpleConversationGetChatData(conv) + purple.PurpleConvChatSend(chatdata, entry.get_text()) + entry.clear() + +def show_conversation(conv): + key = get_dict_key(conv) + if key in convwins: + return convwins[key] + win = gnt.Window() + vbox = gnt.Box(0, 1) + win.add_widget(vbox) + win.set_title(purple.PurpleConversationGetName(conv)) + win.set_pad(0) + vbox.set_pad(0) + tv = gnt.TextView() + entry = gnt.Entry("") + vbox.add_widget(tv) + entry.set_size(40, 1) + vbox.add_widget(entry) + entry.connect("key_pressed", send_im_cb, conv) + tv.clear() + win.show() + convwins[key] = [win, tv, entry] + return convwins[key] + +convs = purple.PurpleGetConversations() +for conv in convs: + show_conversation(conv) + +gnt.gnt_main() + +gnt.gnt_quit() + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/gendef.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/gendef.sh Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,51 @@ +#!/bin/sh +FILES=" + gntwidget.h + gntbindable.h + gntbox.h + gntbutton.h + gntcheckbox.h + gntclipboard.h + gntcolors.h + gntcombobox.h + gntentry.h + gntfilesel.h + gntkeys.h + gntlabel.h + gntline.h + gntmarshal.h + gntmenu.h + gntmenuitem.h + gntmenuitemcheck.h + gntstyle.h + gnttextview.h + gnttree.h + gntutils.h + gntwindow.h + gntwm.h + gnt.h" + +# Generate the def file +rm gnt.def +for file in $FILES +do + python /usr/share/pygtk/2.0/codegen/h2def.py ../$file >> gnt.def +done + +# Remove the definitions about the enums +ENUMS=" +GNT_TYPE_ALIGNMENT +GNT_TYPE_COLOR_TYPE +GNT_TYPE_MENU_TYPE +GNT_TYPE_STYLE +GNT_TYPE_KEY_PRESS_MODE +GNT_TYPE_ENTRY_FLAG +GNT_TYPE_TEXT_FORMAT_FLAGS +" + +for enum in $ENUMS +do + sed -ie s/^.*gtype-id\ \"$enum\".*$//g gnt.def +done + + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/gnt.override --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/gnt.override Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,34 @@ +%% +headers +#include +#include "pygobject.h" +#include "gnt.h" +#include "gntbindable.h" +#include "gntwidget.h" +#include "gntbox.h" +#include "gntbutton.h" +#include "gntcheckbox.h" +#include "gntcolors.h" +#include "gntcombobox.h" +#include "gntentry.h" +#include "gntfilesel.h" +#include "gntkeys.h" +#include "gntlabel.h" +#include "gntline.h" +#include "gntmenu.h" +#include "gntmenuitem.h" +#include "gntmenuitemcheck.h" +#include "gntstyle.h" +#include "gnttextview.h" +#include "gnttree.h" +#include "gntutils.h" +#include "gntwindow.h" +#include "gntwm.h" +%% +modulename gnt +%% +import gobject.GObject as PyGObject_Type +%% +ignore-glob + *_get_gtype +%% diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/gntmodule.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/gntmodule.c Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,22 @@ +#include + +void gnt_register_classes (PyObject *d); +extern PyMethodDef gnt_functions[]; + +DL_EXPORT(void) +initgnt(void) +{ + PyObject *m, *d; + + init_pygobject (); + + m = Py_InitModule ("gnt", gnt_functions); + d = PyModule_GetDict (m); + + gnt_register_classes (d); + + if (PyErr_Occurred ()) { + Py_FatalError ("can't initialise module sad"); + } +} + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/pygnt/test.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/finch/libgnt/pygnt/test.py Tue Mar 27 03:08:31 2007 +0000 @@ -0,0 +1,26 @@ +#!/usr/bin/python +import gnt + +def button_activate(button, entry): + entry.set_text("clicked!!!") + +gnt.gnt_init() + +win = gnt.Window() + +entry = gnt.Entry("") + +win.add_widget(entry) +win.set_title("Entry") + +button = gnt.Button("Click!") +win.add_widget(button) + +button.connect("activate", button_activate, entry) + +win.show() + +gnt.gnt_main() + +gnt.gnt_quit() + diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/test/file.c --- a/finch/libgnt/test/file.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/test/file.c Tue Mar 27 03:08:31 2007 +0000 @@ -9,6 +9,7 @@ GntWidget *w = gnt_file_sel_new(); gnt_file_sel_set_current_location(GNT_FILE_SEL(w), "/home/"); gnt_file_sel_set_dirs_only(GNT_FILE_SEL(w), TRUE); + gnt_file_sel_set_multi_select(GNT_FILE_SEL(w), TRUE); gnt_widget_show(w); gnt_main(); diff -r a0f24a614a9d -r 5c88d2887cc1 finch/libgnt/test/menu.c --- a/finch/libgnt/test/menu.c Tue Mar 27 03:07:14 2007 +0000 +++ b/finch/libgnt/test/menu.c Tue Mar 27 03:08:31 2007 +0000 @@ -22,29 +22,29 @@ GntWidget *menu = gnt_menu_new(GNT_MENU_TOPLEVEL); GObject *item = gnt_menuitem_new("File"); - gnt_menu_add_item(GNT_MENU(menu), GNT_MENUITEM(item)); + gnt_menu_add_item(GNT_MENU(menu), GNT_MENU_ITEM(item)); item = gnt_menuitem_new("Edit"); - gnt_menu_add_item(GNT_MENU(menu), GNT_MENUITEM(item)); + gnt_menu_add_item(GNT_MENU(menu), GNT_MENU_ITEM(item)); item = gnt_menuitem_new("Help"); - gnt_menu_add_item(GNT_MENU(menu), GNT_MENUITEM(item)); + gnt_menu_add_item(GNT_MENU(menu), GNT_MENU_ITEM(item)); GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP); - gnt_menuitem_set_submenu(GNT_MENUITEM(item), GNT_MENU(sub)); + gnt_menuitem_set_submenu(GNT_MENU_ITEM(item), GNT_MENU(sub)); item = gnt_menuitem_new("Online Help"); - gnt_menu_add_item(GNT_MENU(sub), GNT_MENUITEM(item)); + gnt_menu_add_item(GNT_MENU(sub), GNT_MENU_ITEM(item)); item = gnt_menuitem_new("About"); - gnt_menu_add_item(GNT_MENU(sub), GNT_MENUITEM(item)); + gnt_menu_add_item(GNT_MENU(sub), GNT_MENU_ITEM(item)); sub = gnt_menu_new(GNT_MENU_POPUP); - gnt_menuitem_set_submenu(GNT_MENUITEM(item), GNT_MENU(sub)); + gnt_menuitem_set_submenu(GNT_MENU_ITEM(item), GNT_MENU(sub)); item = gnt_menuitem_new("Online Help"); - gnt_menu_add_item(GNT_MENU(sub), GNT_MENUITEM(item)); - gnt_menuitem_set_callback(GNT_MENUITEM(item), dothis, NULL); + gnt_menu_add_item(GNT_MENU(sub), GNT_MENU_ITEM(item)); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), dothis, NULL); gnt_screen_menu_show(menu); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/account.h --- a/libpurple/account.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/account.h Tue Mar 27 03:08:31 2007 +0000 @@ -211,14 +211,14 @@ /** * Close account requests registered for the given PurpleAccount * - * @param handle The account for which requests should be closed + * @param account The account for which requests should be closed */ void purple_account_request_close_with_account(PurpleAccount *account); /** * Close the account request for the given ui handle * - * @param handle The ui specific handle for which requests should be closed + * @param ui_handle The ui specific handle for which requests should be closed */ void purple_account_request_close(void *ui_handle); @@ -281,7 +281,7 @@ * Sets the account's buddy icon path. * * @param account The account. - * @param info The buddy icon non-cached path. + * @param path The buddy icon non-cached path. */ void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/buddyicon.h --- a/libpurple/buddyicon.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/buddyicon.h Tue Mar 27 03:08:31 2007 +0000 @@ -182,8 +182,8 @@ * Returns the buddy icon's path. * * @param icon The buddy icon. - * - * @preturn The buddy icon's non-cached path. + * + * @return The buddy icon's non-cached path. */ const gchar *purple_buddy_icon_get_path(PurpleBuddyIcon *icon); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/eventloop.h --- a/libpurple/eventloop.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/eventloop.h Tue Mar 27 03:08:31 2007 +0000 @@ -138,7 +138,7 @@ * implement the input_get_error UI op. * * @param fd The input file descriptor. - * @param errno A pointer to an int which on return will have the error, or 0 if no error. + * @param error A pointer to an int which on return will have the error, or 0 if no error. * * @return 0 if there is no error; -1 if there is an error, in which case errno will be set. */ diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/notify.h --- a/libpurple/notify.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/notify.h Tue Mar 27 03:08:31 2007 +0000 @@ -581,7 +581,7 @@ * Set the type of a PurpleNotifyUserInfoEntry * * @param user_info_entry The PurpleNotifyUserInfoEntry - * @param The PurpleNotifyUserInfoEntryType + * @param type The PurpleNotifyUserInfoEntryType */ void purple_notify_user_info_entry_set_type(PurpleNotifyUserInfoEntry *user_info_entry, PurpleNotifyUserInfoEntryType type); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/protocols/bonjour/bonjour.c Tue Mar 27 03:08:31 2007 +0000 @@ -460,7 +460,7 @@ else if (((fullname = getlogin()) != NULL) && (fullname[0] != '\0')) ; else - fullname = _("John Noname"); + fullname = _("Purple Person"); /* Make sure fullname is valid UTF-8. If not, try to convert it. */ if (!g_utf8_validate(fullname, -1, NULL)) { @@ -548,7 +548,8 @@ /* Try to figure out a good host name to use */ /* TODO: Avoid 'localhost,' if possible */ if (gethostname(hostname, 255) != 0) { - purple_debug_warning("bonjour", "Error %d when getting host name. Using \"localhost.\"\n", errno); + purple_debug_warning("bonjour", "Error when getting host name: %s. Using \"localhost.\"\n", + strerror(errno)); strcpy(hostname, "localhost"); } default_hostname = g_strdup(hostname); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/protocols/bonjour/issues.txt --- a/libpurple/protocols/bonjour/issues.txt Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/protocols/bonjour/issues.txt Tue Mar 27 03:08:31 2007 +0000 @@ -2,17 +2,8 @@ ============= Known issues =============== ========================================== -(1) Messages are limited in length (5000 char) <-- FIXED -(2) Messages formated by Gaim didn't work <-- FIXED -(3) iChat sends the size in points, Gaim wants a 1..7 range <-- FIXED Gaim2iChat (iChat2Gaim left) -(4) When the other end closes the socket without sending the end of stream, Gaim crashes and coredump <-- FIXED -(5) I18n -(6) Status changes don't work -(7) When the conversation is closed in Gaim with the X button, we don't send the end of stream <-- FIXED -(8) The server socket is not reusable, after an error, you cannot connect for a while <-- FIXED -(9) Avatars -(10) File transfers -(11) Typing notifications -(12) Gaim HTML syntax is not shown properly <-- FIXED -(13) Strange messages creates coredump <-- FIXED -(14) Check if it works on win32 +* Status changes don't work +* Avatars +* File transfers +* Typing notifications +* Check if it works on win32 diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/protocols/silc/README --- a/libpurple/protocols/silc/README Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/protocols/silc/README Tue Mar 27 03:08:31 2007 +0000 @@ -1,12 +1,12 @@ -SILC Gaim Plugin -================ +SILC Purple Plugin +================== -This is Gaim protocol plugin of the protocol called Secure Internet Live -Conferencing (SILC). The implementation will use the SILC Toolkit, +This is the Purple protocol plugin of the protocol called Secure Internet +Live Conferencing (SILC). The implementation will use the SILC Toolkit, freely available from the http://silcnet.org/ site, for the actual SILC protocol implementation. -To include the SILC into Gaim, one needs to first compile and install +To include SILC into Purple, one needs to first compile and install the SILC Toolkit. It is done as follows: ./configure --enable-shared @@ -17,7 +17,7 @@ is not given to ./configure, the binaries are installed into the /usr/local/silc directory. -Once the Toolkit is installed one needs to tell for the Gaim ./configure +Once the Toolkit is installed one needs to tell Purple's ./configure script where the SILC Toolkit is located. It is done as simply as: ./configure @@ -27,5 +27,5 @@ ./configure --with-silc-libs=/path/to/silc/lib --with-silc-includes=/path/to/silc/include -If the Toolkit cannot be located the SILC will not be compiled into the -Gaim. +If the SILC Toolkit cannot be found then the SILC protocol plugin will +not be compiled. diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/protocols/silc/TODO --- a/libpurple/protocols/silc/TODO Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/protocols/silc/TODO Tue Mar 27 03:08:31 2007 +0000 @@ -2,7 +2,7 @@ ===================== Sending images - - Sending images to channel too, if Gaim allows it. + - Sending images to channel too, if libpurple allows it. Preferences - Add joined channels to buddy list automatically (during diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/savedstatuses.h --- a/libpurple/savedstatuses.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/savedstatuses.h Tue Mar 27 03:08:31 2007 +0000 @@ -213,9 +213,9 @@ /** * Set whether accounts in Purple are idle-away or not. * - * @param TRUE if accounts should be switched to use the - * idle-away saved status. FALSE if they should - * be switched to use the default status. + * @param idleaway TRUE if accounts should be switched to use the + * idle-away saved status. FALSE if they should + * be switched to use the default status. */ void purple_savedstatus_set_idleaway(gboolean idleaway); diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/server.h --- a/libpurple/server.h Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/server.h Tue Mar 27 03:08:31 2007 +0000 @@ -38,7 +38,7 @@ * * TODO: Could probably move this into the conversation API. * - * @param typing One of PURPLE_TYPING, PURPLE_TYPED, or PURPLE_NOT_TYPING. + * @param state One of PURPLE_TYPING, PURPLE_TYPED, or PURPLE_NOT_TYPING. * @return A quiet-period, specified in seconds, where Purple will not * send any additional typing notification messages. Most * protocols should return 0, which means that no additional @@ -94,13 +94,13 @@ * @param data The hash function should be g_str_hash() and the equal * function should be g_str_equal(). */ -void serv_join_chat(PurpleConnection *, GHashTable *); +void serv_join_chat(PurpleConnection *, GHashTable *data); /** * @param data The hash function should be g_str_hash() and the equal * function should be g_str_equal(). */ -void serv_reject_chat(PurpleConnection *, GHashTable *); +void serv_reject_chat(PurpleConnection *, GHashTable *data); /** * @param data The hash function should be g_str_hash() and the equal diff -r a0f24a614a9d -r 5c88d2887cc1 libpurple/win32/libpurplerc.rc.in --- a/libpurple/win32/libpurplerc.rc.in Tue Mar 27 03:07:14 2007 +0000 +++ b/libpurple/win32/libpurplerc.rc.in Tue Mar 27 03:08:31 2007 +0000 @@ -16,12 +16,12 @@ BEGIN VALUE "CompanyName", "The Pidgin developer community" VALUE "FileDescription", "LibPurple Library" - VALUE "FileVersion", "@PIDGIN_VERSION@" + VALUE "FileVersion", "@PURPLE_VERSION@" VALUE "InternalName", "libpurple" VALUE "LegalCopyright", "Copyright (C) 1998-2007 The Pidgin developer community (See the COPYRIGHT file in the source distribution)." VALUE "OriginalFilename", "libpurple.dll" VALUE "ProductName", "LibPurple" - VALUE "ProductVersion", "@PIDGIN_VERSION@" + VALUE "ProductVersion", "@PURPLE_VERSION@" END END BLOCK "VarFileInfo" diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin.spec.in --- a/pidgin.spec.in Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin.spec.in Tue Mar 27 03:08:31 2007 +0000 @@ -270,7 +270,7 @@ if [ "$1" -gt 1 -a -n "`which gconftool-2 2>/dev/null`" ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule \ - %{_sysconfdir}/gconf/schemas/gaim.schemas >/dev/null || : + %{_sysconfdir}/gconf/schemas/purple.schemas >/dev/null || : killall -HUP gconfd-2 || : fi @@ -278,7 +278,7 @@ if [ -n "`which gconftool-2 2>/dev/null`" ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule \ - %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || : + %{_sysconfdir}/gconf/schemas/purple.schemas > /dev/null || : killall -HUP gconfd-2 || : fi /sbin/ldconfig @@ -287,7 +287,7 @@ if [ "$1" -eq 0 -a -n "`which gconftool-2 2>/dev/null`" ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule \ - %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || : + %{_sysconfdir}/gconf/schemas/purple.schemas > /dev/null || : killall -HUP gconfd-2 || : fi @@ -319,7 +319,7 @@ %{_datadir}/sounds/pidgin/* %{_datadir}/applications/* %{_libdir}/libpurple.so.* -%{_sysconfdir}/gconf/schemas/gaim.schemas +%{_sysconfdir}/gconf/schemas/purple.schemas %if 0%{?_with_dbus:1} %{_bindir}/purple-client-example diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/gtkaccount.c Tue Mar 27 03:08:31 2007 +0000 @@ -231,7 +231,7 @@ /* Show a placeholder icon */ gchar *filename; filename = g_build_filename(DATADIR, "pixmaps", - "purple", "insert-image.png", NULL); + "pidgin", "insert-image.png", NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); } @@ -629,7 +629,7 @@ set_dialog_icon(dialog, g_strdup(purple_account_get_ui_string(dialog->account, PIDGIN_UI, "non-global-buddyicon-cached-path", NULL)), - g_strdup(purple_account_get_ui_string(dialog->account, + g_strdup(purple_account_get_ui_string(dialog->account, PIDGIN_UI, "non-global-buddyicon-path", NULL))); } else { set_dialog_icon(dialog, NULL, NULL); @@ -2142,12 +2142,12 @@ /* Translators: Please maintain the use of -> or <- to represent the menu heirarchy */ pretty = pidgin_make_pretty_arrows(_( "Welcome to " PIDGIN_NAME "!\n\n" - + "You have no IM accounts configured. To start connecting with " PIDGIN_NAME " " "press the Add button below and configure your first " "account. If you want " PIDGIN_NAME " to connect to multiple IM accounts, " "press Add again to configure them all.\n\n" - + "You can come back to this window to add, edit, or remove " "accounts from Accounts->Add/Edit in the Buddy " "List window")); @@ -2439,7 +2439,7 @@ buffer = make_info(account, gc, remote_user, id, alias, msg); alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION, - _("Add buddy to your list?"), buffer, data, + _("Add buddy to your list?"), buffer, data, _("Add"), G_CALLBACK(add_user_cb), _("Cancel"), G_CALLBACK(free_add_user_data), NULL); pidgin_blist_add_alert(alert); @@ -2515,27 +2515,27 @@ aa->account = account; alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION, _("Authorize buddy?"), buffer, aa, - _("Authorize"), authorize_and_add_cb, - _("Deny"), deny_no_add_cb, + _("Authorize"), authorize_and_add_cb, + _("Deny"), deny_no_add_cb, NULL); } else { alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION, _("Authorize buddy?"), buffer, user_data, - _("Authorize"), auth_cb, - _("Deny"), deny_cb, + _("Authorize"), auth_cb, + _("Deny"), deny_cb, NULL); } pidgin_blist_add_alert(alert); g_free(buffer); - + return NULL; } static void pidgin_accounts_request_close(void *ui_handle) { - + } static PurpleAccountUiOps ui_ops = diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/gtkstatusbox.c Tue Mar 27 03:08:31 2007 +0000 @@ -279,7 +279,7 @@ if (!g_ascii_strncasecmp(name, "file://", 7)) { GError *converr = NULL; gchar *tmp, *rtmp; - + if(!(tmp = g_filename_from_uri(name, NULL, &converr))) { purple_debug(PURPLE_DEBUG_ERROR, "buddyicon", "%s\n", (converr ? converr->message : @@ -559,7 +559,7 @@ PurpleAccount *acct = (status_box->token_status_account) ? status_box->token_status_account : status_box->account; icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); - + style = gtk_widget_get_style(GTK_WIDGET(status_box)); snprintf(aa_color, sizeof(aa_color), "#%02x%02x%02x", style->text_aa[GTK_STATE_NORMAL].red >> 8, @@ -584,7 +584,7 @@ if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path)) return; gtk_tree_path_free(path); - + gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TYPE_COLUMN, &type, DATA_COLUMN, &data, @@ -688,7 +688,7 @@ } } #endif - + } if (status_box->account != NULL) { @@ -824,7 +824,7 @@ break; } g_free(name); - + } else if ((type == PIDGIN_STATUS_BOX_TYPE_POPULAR) && (GPOINTER_TO_INT(data) == purple_savedstatus_get_creation_time(saved_status))) { @@ -1186,7 +1186,7 @@ cache_pixbufs(PidginStatusBox *status_box) { GtkIconSize icon_size; - + g_object_set(G_OBJECT(status_box->icon_rend), "xpad", 3, NULL); icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); @@ -1311,14 +1311,14 @@ #endif GtkRequisition popup_req; GtkPolicyType hpolicy, vpolicy; - + gdk_window_get_origin (GTK_WIDGET(status_box)->window, x, y); *x += GTK_WIDGET(status_box)->allocation.x; *y += GTK_WIDGET(status_box)->allocation.y; - + *width = GTK_WIDGET(status_box)->allocation.width; - + hpolicy = vpolicy = GTK_POLICY_NEVER; gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (status_box->scrolled_window), hpolicy, vpolicy); @@ -1336,7 +1336,7 @@ #if GTK_CHECK_VERSION(2,2,0) screen = gtk_widget_get_screen (GTK_WIDGET (status_box)); - monitor_num = gdk_screen_get_monitor_at_window (screen, + monitor_num = gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (status_box)->window); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); @@ -1344,7 +1344,7 @@ *x = monitor.x; else if (*x + *width > monitor.x + monitor.width) *x = monitor.x + monitor.width - *width; - + if (*y + GTK_WIDGET(status_box)->allocation.height + *height <= monitor.y + monitor.height) *y += GTK_WIDGET(status_box)->allocation.height; else if (*y - *height >= monitor.y) @@ -1354,7 +1354,7 @@ *y += GTK_WIDGET(status_box)->allocation.height; *height = monitor.y + monitor.height - *y; } - else + else { *height = *y - monitor.y; *y = monitor.y; @@ -1363,7 +1363,7 @@ if (popup_req.height > *height) { vpolicy = GTK_POLICY_ALWAYS; - + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (status_box->scrolled_window), hpolicy, vpolicy); } @@ -1406,8 +1406,8 @@ { int width, height, x, y; pidgin_status_box_list_position (box, &x, &y, &width, &height); - - gtk_widget_set_size_request (box->popup_window, width, height); + + gtk_widget_set_size_request (box->popup_window, width, height); gtk_window_move (GTK_WINDOW (box->popup_window), x, y); gtk_widget_show(box->popup_window); gtk_widget_grab_focus (box->tree_view); @@ -1442,7 +1442,7 @@ toggled_cb(GtkWidget *widget, PidginStatusBox *box) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { - if (!box->popup_in_progress) + if (!box->popup_in_progress) pidgin_status_box_popup (box); } else { pidgin_status_box_popdown(box); @@ -1531,38 +1531,38 @@ { if (status_box->active_row) gtk_tree_row_reference_free(status_box->active_row); - + status_box->active_row = gtk_tree_row_reference_new(GTK_TREE_MODEL(status_box->dropdown_store), path); - + pidgin_status_box_popdown (status_box); pidgin_status_box_changed(status_box); } -static gboolean -treeview_button_release_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *status_box) +static gboolean +treeview_button_release_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *status_box) { GtkTreePath *path = NULL; int ret; GtkWidget *ewidget = gtk_get_event_widget ((GdkEvent *)event); - + if (ewidget != status_box->tree_view) { - if (ewidget == status_box->toggle_button && + if (ewidget == status_box->toggle_button && status_box->popup_in_progress && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (status_box->toggle_button))) { pidgin_status_box_popdown (status_box); return TRUE; } - + /* released outside treeview */ - if (ewidget != status_box->toggle_button) + if (ewidget != status_box->toggle_button) { pidgin_status_box_popdown (status_box); return TRUE; } - + return FALSE; } - + ret = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (status_box->tree_view), event->x, event->y, &path, @@ -1570,7 +1570,7 @@ if (!ret) return TRUE; /* clicked outside window? */ - + treeview_activate_current_selection(status_box, path); gtk_tree_path_free (path); @@ -1620,7 +1620,7 @@ status_box->cell_view = gtk_cell_view_new(); status_box->vsep = gtk_vseparator_new(); status_box->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); - + status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); ; @@ -1696,7 +1696,7 @@ gtk_tree_view_set_search_column(GTK_TREE_VIEW(status_box->tree_view), TEXT_COLUMN); gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(status_box->tree_view), pidgin_tree_view_search_equal_func, NULL, NULL); - + #if GTK_CHECK_VERSION(2, 6, 0) g_object_set(text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); #endif @@ -1907,7 +1907,7 @@ gtk_paint_box(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, status_box->icon_box, "button", status_box->icon_box->allocation.x-1, status_box->icon_box->allocation.y-1, 34, 34); - } + } return FALSE; } @@ -2064,7 +2064,7 @@ /* Show a placeholder icon */ gchar *filename; filename = g_build_filename(DATADIR, "pixmaps", - "purple", "insert-image.png", NULL); + "pidgin", "insert-image.png", NULL); status_box->buddy_icon = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); } @@ -2138,7 +2138,7 @@ char *message; PurpleSavedStatus *saved_status = NULL; gboolean changed = TRUE; - + path = gtk_tree_row_reference_get_path(status_box->active_row); if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path)) return; @@ -2188,7 +2188,7 @@ const char *id = NULL; GtkTreePath *path = gtk_tree_row_reference_get_path(status_box->active_row); active = gtk_tree_path_get_indices(path)[0]; - + gtk_tree_path_free(path); status = purple_account_get_active_status(status_box->token_status_account); @@ -2386,13 +2386,13 @@ GList *accounts = NULL, *node; int active; - + if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path)) return; active = gtk_tree_path_get_indices(path)[0]; gtk_tree_path_free(path); g_object_set_data(G_OBJECT(status_box), "active", GINT_TO_POINTER(active)); - + gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TYPE_COLUMN, &type, DATA_COLUMN, &data, diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/gtkutils.h --- a/pidgin/gtkutils.h Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/gtkutils.h Tue Mar 27 03:08:31 2007 +0000 @@ -393,7 +393,7 @@ * @param primitive The status primitive * @param w The widget to render this * @param size The icon size to render at - * @retrun A GdkPixbuf, created from stock + * @return A GdkPixbuf, created from stock */ GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive primitive, GtkWidget *w, const char *size); diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/pidginstock.h --- a/pidgin/pidginstock.h Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/pidginstock.h Tue Mar 27 03:08:31 2007 +0000 @@ -1,5 +1,5 @@ /** - * @file gtkstock.h GTK+ Stock resources + * @file pidginstock.h GTK+ Stock resources * @ingroup gtkui * * pidgin diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/pixmaps/Makefile.am --- a/pidgin/pixmaps/Makefile.am Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/pixmaps/Makefile.am Tue Mar 27 03:08:31 2007 +0000 @@ -64,3 +64,6 @@ distpixmapdir = $(datadir)/pixmaps distpixmap_DATA = pidgin.png pidgin.svg + + + diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/pixmaps/Makefile.mingw --- a/pidgin/pixmaps/Makefile.mingw Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/pixmaps/Makefile.mingw Tue Mar 27 03:08:31 2007 +0000 @@ -18,24 +18,24 @@ $(MAKE) -C $$subdir -f $(GAIM_WIN32_MAKEFILE) install || exit 1 ;\ done; \ fi; - if test '$(gaimbuttonpix_DATA)'; then \ - mkdir -p $(gaimbuttonpixdir); \ - cp $(gaimbuttonpix_DATA) $(gaimbuttonpixdir); \ + if test '$(pidginbuttonpix_DATA)'; then \ + mkdir -p $(pidginbuttonpixdir); \ + cp $(pidginbuttonpix_DATA) $(pidginbuttonpixdir); \ fi; - if test '$(gaimdialogpix_DATA)'; then \ - mkdir -p $(gaimdialogpixdir); \ - cp $(gaimdialogpix_DATA) $(gaimdialogpixdir); \ + if test '$(pidgindialogpix_DATA)'; then \ + mkdir -p $(pidgindialogpixdir); \ + cp $(pidgindialogpix_DATA) $(pidgindialogpixdir); \ fi; - if test '$(gaimiconpix_DATA)'; then \ - mkdir -p $(gaimiconpixdir); \ - cp $(gaimiconpix_DATA) $(gaimiconpixdir); \ + if test '$(pidginiconpix_DATA)'; then \ + mkdir -p $(pidginiconpixdir); \ + cp $(pidginiconpix_DATA) $(pidginiconpixdir); \ fi; - if test '$(gaimdistpix_DATA)'; then \ - mkdir -p $(gaimdistpixdir); \ - cp $(gaimdistpix_DATA) $(gaimdistpixdir); \ + if test '$(pidgindistpix_DATA)'; then \ + mkdir -p $(pidgindistpixdir); \ + cp $(pidgindistpix_DATA) $(pidgindistpixdir); \ fi; - if test '$(distpixmap_DATA)'; then \ - mkdir -p $(distpixmapdir); \ - cp $(distpixmap_DATA) $(distpixmapdir); \ - fi; +# if test '$(distpixmap_DATA)'; then \ +# mkdir -p $(distpixmapdir); \ +# cp $(distpixmap_DATA) $(distpixmapdir); \ +# fi; diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/win32/nsis/pidgin-installer.nsi --- a/pidgin/win32/nsis/pidgin-installer.nsi Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/win32/nsis/pidgin-installer.nsi Tue Mar 27 03:08:31 2007 +0000 @@ -698,7 +698,7 @@ Delete "$INSTDIR\plugins\buddynote.dll" Delete "$INSTDIR\plugins\convcolors.dll" Delete "$INSTDIR\plugins\extplacement.dll" - Delete "$INSTDIR\plugins\gaimrc.dll" + Delete "$INSTDIR\plugins\pidginrc.dll" Delete "$INSTDIR\plugins\history.dll" Delete "$INSTDIR\plugins\iconaway.dll" Delete "$INSTDIR\plugins\idle.dll" @@ -735,12 +735,12 @@ Delete "$INSTDIR\plugins\win2ktrans.dll" Delete "$INSTDIR\plugins\winprefs.dll" RMDir "$INSTDIR\plugins" - Delete "$INSTDIR\sounds\gaim\alert.wav" - Delete "$INSTDIR\sounds\gaim\login.wav" - Delete "$INSTDIR\sounds\gaim\logout.wav" - Delete "$INSTDIR\sounds\gaim\receive.wav" - Delete "$INSTDIR\sounds\gaim\send.wav" - RMDir "$INSTDIR\sounds\gaim" + Delete "$INSTDIR\sounds\pidgin\alert.wav" + Delete "$INSTDIR\sounds\pidgin\login.wav" + Delete "$INSTDIR\sounds\pidgin\logout.wav" + Delete "$INSTDIR\sounds\pidgin\receive.wav" + Delete "$INSTDIR\sounds\pidgin\send.wav" + RMDir "$INSTDIR\sounds\pidgin" RMDir "$INSTDIR\sounds" Delete "$INSTDIR\freebl3.dll" Delete "$INSTDIR\idletrack.dll" diff -r a0f24a614a9d -r 5c88d2887cc1 pidgin/win32/pidgin_exe_rc.rc.in --- a/pidgin/win32/pidgin_exe_rc.rc.in Tue Mar 27 03:07:14 2007 +0000 +++ b/pidgin/win32/pidgin_exe_rc.rc.in Tue Mar 27 03:08:31 2007 +0000 @@ -33,4 +33,4 @@ END END -PURPLE_ICON ICON PIXMAPDIR "pidgin.ico" +PIDGIN_ICON ICON PIXMAPDIR "pidgin.ico"