Revision fba53203d9fe0ebd98157bdc6c7faeb2b149908b
evands at pidgin.im
evands at pidgin.im
Mon Mar 26 23:09:03 EDT 2007
o -----------------------------------------------------------------
|\ Revision: fba53203d9fe0ebd98157bdc6c7faeb2b149908b
| | Ancestor: 343dc2d52b5a1cb204359ecc11a1b4d98b984dd0
| | Ancestor: f894448f712134780a75dba19622a78626a98231
| | Author: evands at pidgin.im
| | Date: 2007-03-27T03:08:31
| | Branch: im.pidgin.pidgin
| |
| | Added files:
| | finch/libgnt/pygnt/Files.txt
| | finch/libgnt/pygnt/Makefile.make
| | finch/libgnt/pygnt/README.txt finch/libgnt/pygnt/dbus-gnt
| | finch/libgnt/pygnt/gendef.sh finch/libgnt/pygnt/gnt.override
| | finch/libgnt/pygnt/gntmodule.c finch/libgnt/pygnt/test.py
| | Added directories:
| | finch/libgnt/pygnt
| | Modified files:
| | AUTHORS COPYRIGHT ChangeLog ChangeLog.API Doxyfile.in NEWS
| | PLUGIN_HOWTO README config.h.mingw doc/PERL-HOWTO.dox
| | finch/gntblist.c finch/gntft.c finch/gntrequest.c
| | finch/libgnt/gnt-skel.h finch/libgnt/gnt.h
| | finch/libgnt/gntbindable.h finch/libgnt/gntbox.h
| | finch/libgnt/gntbutton.h finch/libgnt/gntcheckbox.h
| | finch/libgnt/gntclipboard.h finch/libgnt/gntcombobox.h
| | finch/libgnt/gntentry.h finch/libgnt/gntfilesel.c
| | finch/libgnt/gntfilesel.h finch/libgnt/gntlabel.h
| | finch/libgnt/gntline.h finch/libgnt/gntmenu.c
| | finch/libgnt/gntmenu.h finch/libgnt/gntmenuitem.c
| | finch/libgnt/gntmenuitem.h finch/libgnt/gntmenuitemcheck.c
| | finch/libgnt/gntmenuitemcheck.h finch/libgnt/gnttextview.c
| | finch/libgnt/gnttextview.h finch/libgnt/gnttree.c
| | finch/libgnt/gnttree.h finch/libgnt/gntwidget.c
| | finch/libgnt/gntwidget.h finch/libgnt/gntwindow.h
| | finch/libgnt/gntwm.h finch/libgnt/test/file.c
| | finch/libgnt/test/menu.c libpurple/account.h
| | libpurple/buddyicon.h libpurple/conversation.h
| | libpurple/eventloop.h libpurple/notify.h
| | libpurple/protocols/bonjour/bonjour.c
| | libpurple/protocols/bonjour/issues.txt
| | libpurple/protocols/msn/switchboard.c
| | libpurple/protocols/silc/README
| | libpurple/protocols/silc/TODO
| | libpurple/protocols/yahoo/yahoo.c libpurple/savedstatuses.h
| | libpurple/server.h libpurple/win32/libpurplerc.rc.in
| | pidgin/gtkaccount.c pidgin/gtkstatusbox.c pidgin/gtkutils.h
| | pidgin/pidginstock.h pidgin/pixmaps/Makefile.am
| | pidgin/pixmaps/Makefile.mingw
| | pidgin/win32/nsis/pidgin-installer.nsi
| | pidgin/win32/pidgin_exe_rc.rc.in pidgin.spec.in
| | Modified attrs:
| | finch/libgnt/pygnt/dbus-gnt finch/libgnt/pygnt/gendef.sh
| | finch/libgnt/pygnt/test.py
| |
| | ChangeLog:
| |
| | merge of '343dc2d52b5a1cb204359ecc11a1b4d98b984dd0'
| | and 'f894448f712134780a75dba19622a78626a98231'
| |
| | ============================================================
| | --- finch/libgnt/pygnt/Files.txt 5838d1dec407797b417733d6a230bddd677dc341
| | +++ finch/libgnt/pygnt/Files.txt 5838d1dec407797b417733d6a230bddd677dc341
| | @@ -0,0 +1,6 @@
| | +gendef.sh
| | +gnt.override
| | +Makefile
| | +test.py
| | +dbus-gnt
| | +gntmodule.c
| | ============================================================
| | --- finch/libgnt/pygnt/Makefile.make ab5b071076fe88c353e1b60e668a253997be10ac
| | +++ finch/libgnt/pygnt/Makefile.make ab5b071076fe88c353e1b60e668a253997be10ac
| | @@ -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
| | ============================================================
| | --- finch/libgnt/pygnt/README.txt 769a5bdfa3dfc273d8e126248667804a8336dc82
| | +++ finch/libgnt/pygnt/README.txt 769a5bdfa3dfc273d8e126248667804a8336dc82
| | @@ -0,0 +1,4 @@
| | +Run these in sequence:
| | +
| | +./gendef.sh
| | +make -f Makefile.make gnt.so
| | ============================================================
| | --- finch/libgnt/pygnt/dbus-gnt 6debd44131ca876b10b8ae8f3a9b908f3c94b4e1
| | +++ finch/libgnt/pygnt/dbus-gnt 6debd44131ca876b10b8ae8f3a9b908f3c94b4e1
| | @@ -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()
| | +
| | ============================================================
| | --- finch/libgnt/pygnt/gendef.sh 348731ecdffc02087ad6aa3b457ce43595d3b1ff
| | +++ finch/libgnt/pygnt/gendef.sh 348731ecdffc02087ad6aa3b457ce43595d3b1ff
| | @@ -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
| | +
| | +
| | ============================================================
| | --- finch/libgnt/pygnt/gnt.override 04e09064b3f3c76cc54ef1fa1df308c39453d16f
| | +++ finch/libgnt/pygnt/gnt.override 04e09064b3f3c76cc54ef1fa1df308c39453d16f
| | @@ -0,0 +1,34 @@
| | +%%
| | +headers
| | +#include <Python.h>
| | +#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
| | +%%
| | ============================================================
| | --- finch/libgnt/pygnt/gntmodule.c 7bcb542fecc7da290e774de5d17f4340a1d628d3
| | +++ finch/libgnt/pygnt/gntmodule.c 7bcb542fecc7da290e774de5d17f4340a1d628d3
| | @@ -0,0 +1,22 @@
| | +#include <pygobject.h>
| | +
| | +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");
| | + }
| | +}
| | +
| | ============================================================
| | --- finch/libgnt/pygnt/test.py 279fed43aab0b6f739f83f665772ee93afc0c389
| | +++ finch/libgnt/pygnt/test.py 279fed43aab0b6f739f83f665772ee93afc0c389
| | @@ -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()
| | +
| | ============================================================
| | --- AUTHORS 13ec2e87ea5799fa3c2bcaae3be1880ccb5c80aa
| | +++ AUTHORS 3a281d96f2f752c2682fbe116b92a6443af94ab7
| | @@ -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:
| | ------------------
| | ============================================================
| | --- COPYRIGHT d1fd1a1d30d5dce9385444584a576c023b036bb9
| | +++ COPYRIGHT c634cb4ac8e183092a82f88c3428806f0799fa8d
| | @@ -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
| | ============================================================
| | --- ChangeLog 4181ea27e18226f1fe89ee612111b38b8a7bda23
| | +++ ChangeLog 64a10369b8940319e6e4539f3ffdee1a0f3eb22f
| | @@ -1,10 +1,5 @@
| | -2007-01-24 gettextize <bug-gnu-gettext at gnu.org>
| | +Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
| |
| | - * 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!
| | -
| | version 2.0.0:
| | Build Changes:
| | * With the Core/UI split completed, it is now possible to build Gaim
| | ============================================================
| | --- ChangeLog.API e8a7ac5a65d16bdc3aa8e78c9845955d124d6067
| | +++ ChangeLog.API 7d5b4a3e76e446081d5930f73284b1973e3a7a45
| | @@ -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:
| | ============================================================
| | --- Doxyfile.in d44f735b442bf91d45745775de9f1aa12751d06f
| | +++ Doxyfile.in 5c9c6db3416643d223092f4fbeab8a0e4c8c5236
| | @@ -431,9 +431,9 @@ WARN_LOGFILE =
| | # 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 @@ COLS_IN_ALPHA_INDEX = 3
| | # 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
| | ============================================================
| | --- NEWS 4347ab770910e128dd3255cb40025b82faa95040
| | +++ NEWS 3fc14e6e9d6ac3edbb36b97dfc19b2b8cbb86f18
| | @@ -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
| | ============================================================
| | --- PLUGIN_HOWTO 775a12e04637fd821a4cc61d227296b533ea5ceb
| | +++ PLUGIN_HOWTO 3edd148e712e9aba0e776c1984c04d9e32fb40c4
| | @@ -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.
| | ============================================================
| | --- README ee1a1b03fdf222fdbdc2903c16bb01e22d872bce
| | +++ README baebe0934c47365d641ced3bf592993e15233906
| | @@ -1,28 +1,33 @@
| | -gaim
| | +Purple, Pidgin and Finch
| | ========================
| | -Rob Flynn <gaim at robflynn.com> IM: RobFlynn (current maintainer)
| | -Syd Logan - Super Hacker and Resident Designated Driver
| | -Jim Duchek <jimduchek at ou.edu> IM: Zilding (former maintainer)
| | -Eric Warmenhoven <eric at warmenhoven.org> (retired)
| | -Mark Spencer <markster at marko.net>
| | +See AUTHORS and COPYRIGHT for the list of contributors.
| |
| | -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.
| | +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.
| |
| | +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,13 +74,9 @@
| | 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.
| | +If you come across a bug, please report it to http://pidgin.im/.
| |
| | -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.
| |
| | -
| | 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 at 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.
| | ============================================================
| | --- config.h.mingw 61620e56a47fd744f392c5b3f3139b8f69a7076f
| | +++ config.h.mingw bbf5783dbfa3205f732209b0bbc051fee6eead53
| | @@ -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 at lists.sourceforge.net"
| | +#define PACKAGE_BUGREPORT "devel at pidgin.im"
| |
| | /* Define to the full name of this package. */
| | #define PACKAGE_NAME "pidgin"
| | ============================================================
| | --- doc/PERL-HOWTO.dox 06bf3adf1e3525497f10cac75c0a13e515b00618
| | +++ doc/PERL-HOWTO.dox 1a7cae822c40d02a8e5fb8e51f1ef42b2f77a6b0
| | @@ -333,7 +333,7 @@ sub plugin_load {
| | }
| | @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
| | ============================================================
| | --- finch/gntblist.c 645924939f28c45ee47bc076c007eab9d4247e85
| | +++ finch/gntblist.c 971a633799c4657c334b0e35dd6444e31ecb557d
| | @@ -642,8 +642,8 @@ gnt_append_menu_action(GntMenu *menu, Pu
| |
| | 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 @@ autojoin_toggled(GntMenuItem *item, gpoi
| | {
| | 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 @@ create_chat_menu(GntMenu *menu, PurpleCh
| | {
| | 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 @@ create_menu()
| |
| | 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);
| | ============================================================
| | --- finch/gntft.c 1b0b57c57b038563c6fe77e20f05645002393d4e
| | +++ finch/gntft.c 7d4dcdc04690eb84ee72892284aae27f77e3a1f2
| | @@ -158,18 +158,12 @@ stop_button_cb(GntButton *button)
| | 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 @@ finch_xfer_dialog_new(void)
| | 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 @@ finch_xfer_dialog_update_xfer(PurpleXfer
| | 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"));
| | }
| | ============================================================
| | --- finch/gntrequest.c c6f9322d6cbe66f46eca21e2311e9415f50aead7
| | +++ finch/gntrequest.c 7f00f030f3ccddddb4fdc02ba9829f1d609214dd
| | @@ -28,6 +28,7 @@
| | #include <gntcheckbox.h>
| | #include <gntcombobox.h>
| | #include <gntentry.h>
| | +#include <gntfilesel.h>
| | #include <gntlabel.h>
| | #include <gntline.h>
| | #include <gnttree.h>
| | @@ -39,7 +40,7 @@ typedef struct
| | typedef struct
| | {
| | void *user_data;
| | - GntWidget *entry, *dialog;
| | + GntWidget *dialog;
| | GCallback *cbs;
| | } PurpleGntFileRequest;
| |
| | @@ -549,8 +550,10 @@ file_ok_cb(GntWidget *wid, gpointer fq)
| | 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 @@ finch_request_file(const char *title, co
| | 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 @@ finch_request_file(const char *title, co
| | 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);
| |
| | ============================================================
| | --- finch/libgnt/gnt-skel.h f5f6d6a88540cbb9bc6f7d55123216843f376d9b
| | +++ finch/libgnt/gnt-skel.h 16632e0ad89cfee9a87f98d3cae77b77dd35c41e
| | @@ -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;
| |
| | ============================================================
| | --- finch/libgnt/gnt.h e8be8358e6c776b4c5ca8564aab065ceee3ea25e
| | +++ finch/libgnt/gnt.h 1253c4dbfb1faa82bcba9c9bd8b6ae0fbd766112
| | @@ -16,8 +16,6 @@ void gnt_screen_update(GntWidget *widget
| |
| | 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);
| |
| | gchar *gnt_get_clipboard_string(void);
| |
| | +void gnt_set_clipboard_string(gchar *string);
| | -void gnt_set_clipboard_string(gchar *);
| | ============================================================
| | --- finch/libgnt/gntbindable.h fb65c3665dfd50d12e234c30016a497119a93d5d
| | +++ finch/libgnt/gntbindable.h 10490d490da1ad32a8bbb7a131fd826b9e778107
| | @@ -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 (*GntBindableActionCall
| | 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 @@ struct _GnBindableAction
| | } u;
| | };
| |
| | -struct _GnBindableActionParam
| | +struct _GntBindableActionParam
| | {
| | GntBindableAction *action;
| | GList *list;
| | ============================================================
| | --- finch/libgnt/gntbox.h ec4a72886d19c623baae8bd808131d7df774495e
| | +++ finch/libgnt/gntbox.h 78c577efa3e8838f0ea1fbd2057e3b254ae328df
| | @@ -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 @@ typedef enum
| | GNT_ALIGN_BOTTOM
| | } GntAlignment;
| |
| | -struct _GnBox
| | +struct _GntBox
| | {
| | GntWidget parent;
| |
| | @@ -49,7 +49,7 @@ struct _GnBox
| | void (*gnt_reserved4)(void);
| | };
| |
| | -struct _GnBoxClass
| | +struct _GntBoxClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntbutton.h 53187c6f7f2d58873b81d7655227d4df808a80b3
| | +++ finch/libgnt/gntbutton.h 303a15be50386fe8b758bec8199a6299b2bc1571
| | @@ -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 @@ struct _GnButton
| | void (*gnt_reserved4)(void);
| | };
| |
| | -struct _GnButtonClass
| | +struct _GntButtonClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntcheckbox.h e37bd03db4933321b0ec72de4e56913e4f2abb9d
| | +++ finch/libgnt/gntcheckbox.h e3ca08aa576adf4de6d53ea3b7fc9004c0f2171c
| | @@ -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;
| |
| | ============================================================
| | --- finch/libgnt/gntclipboard.h 1213b5b9ecb88a8fdf4733ee1b1f0ba822cfe613
| | +++ finch/libgnt/gntclipboard.h 3c44fa6d0be485caa81fd8ac6ff6ec09889d7d48
| | @@ -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);
| |
| | 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
| |
| | ============================================================
| | --- finch/libgnt/gntcombobox.h 91ebb707e1ba63ce28549b3fdced31aa56a7bacc
| | +++ finch/libgnt/gntcombobox.h dbde0238faa7605a5e4ac17def8ab8e3b94fd03d
| | @@ -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 @@ struct _GnComboBox
| | void *selected; /* Currently selected key */
| | };
| |
| | -struct _GnComboBoxClass
| | +struct _GntComboBoxClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntentry.h 4521e050f20c7bb19d08a3c8f5dc16f6245c0f98
| | +++ finch/libgnt/gntentry.h b72db5ce023cbb152bdbe56fdce48d7543b32826
| | @@ -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 @@ typedef enum
| |
| | #define GNT_ENTRY_FLAG_ALL (GNT_ENTRY_FLAG_ALPHA | GNT_ENTRY_FLAG_INT)
| |
| | -struct _GnEntry
| | +struct _GntEntry
| | {
| | GntWidget parent;
| |
| | @@ -60,7 +60,7 @@ struct _GnEntry
| | GntWidget *ddown; /* The dropdown with the suggested list */
| | };
| |
| | -struct _GnEntryClass
| | +struct _GntEntryClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntfilesel.c 96948aa77daa93e04fa06c3e43cca3d76f531358
| | +++ finch/libgnt/gntfilesel.c 3933090725b7303f6e5170e96da10aeebec09130
| | @@ -28,6 +28,11 @@ gnt_file_sel_destroy(GntWidget *widget)
| | {
| | 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 @@ update_location(GntFileSel *sel)
| | {
| | 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 @@ location_changed(GntFileSel *sel, GError
| | 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 cha
| | 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 @@ file_sel_changed(GntWidget *widget, gpoi
| | 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 @@ gnt_file_sel_map(GntWidget *widget)
| |
| | 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 @@ gnt_file_sel_map(GntWidget *widget)
| | 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 @@ gnt_file_sel_class_init(GntFileSelClass
| | 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 @@ gboolean gnt_file_sel_get_dirs_only(GntF
| | 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;
| | +}
| | +
| | ============================================================
| | --- finch/libgnt/gntfilesel.h 272102e77c38124761209a5e1db84369a3fcf410
| | +++ finch/libgnt/gntfilesel.h f8ef0ccc30968d6335477df5db8bb59193adea8a
| | @@ -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 @@ struct _GnFileSel
| | 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_locati
| |
| | 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 */
| | +
| | ============================================================
| | --- finch/libgnt/gntlabel.h 75f8b361c471a7e905f006940f435392aee39fa5
| | +++ finch/libgnt/gntlabel.h 3cf014cd167cc8598a3aab5308a31a5cccd83f57
| | @@ -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 @@ struct _GnLabel
| | void (*gnt_reserved4)(void);
| | };
| |
| | -struct _GnLabelClass
| | +struct _GntLabelClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntline.h 6d65a49fe693a45b019466923af669ec6e0fb94a
| | +++ finch/libgnt/gntline.h 23fd4855fbf15b2cd74d533bbeb9727bc10f4108
| | @@ -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;
| |
| | ============================================================
| | --- finch/libgnt/gntmenu.c 00e5986ec9880d5b5c62a017cebea2696cbaea1c
| | +++ finch/libgnt/gntmenu.c 66ee94332dc4f372528a94a1d4a87c033687f425
| | @@ -28,7 +28,7 @@ gnt_menu_draw(GntWidget *widget)
| | 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 @@ menu_tree_add(GntMenu *menu, GntMenuItem
| | 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 @@ menu_tree_add(GntMenu *menu, GntMenuItem
| | 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 @@ gnt_menu_map(GntWidget *widget)
| | 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 @@ gnt_menu_toggled(GntTree *tree, gpointer
| | 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 @@ gnt_menu_activate(GntWidget *widget)
| | }
| |
| | 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);
| | ============================================================
| | --- finch/libgnt/gntmenu.h a612ee18f9ac681bdff742507a4950761b860e21
| | +++ finch/libgnt/gntmenu.h 92b18525e20eb6cfbade4260cf30f510229f05e4
| | @@ -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 @@ typedef enum
| | GNT_MENU_POPUP, /* A popup menu */
| | } GntMenuType;
| |
| | -struct _GnMenu
| | +struct _GntMenu
| | {
| | GntTree parent;
| | GntMenuType type;
| | @@ -47,7 +47,7 @@ struct _GnMenu
| | GntMenu *parentmenu;
| | };
| |
| | -struct _GnMenuClass
| | +struct _GntMenuClass
| | {
| | GntTreeClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntmenuitem.c d8cc1a151174aae72287a365c1f56bd6b156224d
| | +++ finch/libgnt/gntmenuitem.c d0961abc4a881b8e35f32b285e7a8843896cf3e1
| | @@ -6,7 +6,7 @@ gnt_menuitem_destroy(GObject *obj)
| | 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
| |
| | 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);
| |
| | ============================================================
| | --- finch/libgnt/gntmenuitem.h 8c700510e9ff12711ddd666d05d91057430c0ecc
| | +++ finch/libgnt/gntmenuitem.h 8d688484ca972d32e27e9632826b635582c14454
| | @@ -1,27 +1,27 @@
| | #ifndef GNT_MENUITEM_H
| | #define GNT_MENUITEM_H
| |
| | #include <glib.h>
| | #include <glib-object.h>
| |
| | -#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)(GntM
| |
| | typedef void (*GntMenuItemCallback)(GntMenuItem *item, gpointer data);
| |
| | -struct _GnMenuItem
| | +struct _GntMenuItem
| | {
| | GObject parent;
| | GntMenuItemPriv priv;
| | @@ -46,7 +46,7 @@ struct _GnMenuItem
| | GntMenu *submenu;
| | };
| |
| | -struct _GnMenuItemClass
| | +struct _GntMenuItemClass
| | {
| | GObjectClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntmenuitemcheck.c 3a5db9074c4d19f10ed5cd57ce3e29128f66c4c6
| | +++ finch/libgnt/gntmenuitemcheck.c 554b0c4ebc1809cd525b416150dc9d6808c7ef2d
| | @@ -5,7 +5,7 @@ gnt_menuitem_check_class_init(GntMenuIte
| | 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 @@ gnt_menuitem_check_get_gtype(void)
| | 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(cons
| |
| | 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;
| | ============================================================
| | --- finch/libgnt/gntmenuitemcheck.h dc85d1b3e073222892547ae04032117ae050d328
| | +++ finch/libgnt/gntmenuitemcheck.h 619799ab80cab3b800a950bbf134cf54291620c9
| | @@ -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
| |
| | G_END_DECLS
| |
| | +#endif /* GNT_MENU_ITEM_CHECK_H */
| | -#endif /* GNT_MENUITEM_CHECK_H */
| | ============================================================
| | --- finch/libgnt/gnttextview.c 55d8734dd92fb84e61e5c4bb5c74d4ea7f76031c
| | +++ finch/libgnt/gnttextview.c 975e869d7fce95b488bedffd75dc7fd97d0a1ab5
| | @@ -44,6 +44,7 @@ gnt_text_view_draw(GntWidget *widget)
| | 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 *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);
| |
| | ============================================================
| | --- finch/libgnt/gnttextview.h ec5a6fbc46973436f33a057d3ca0ffac4ceeb819
| | +++ finch/libgnt/gnttextview.h b32ae82fe8a1cb935896a4f0a48173186a64b9ba
| | @@ -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 @@ typedef enum
| | GNT_TEXT_FLAG_HIGHLIGHT = 1 << 4,
| | } GntTextFormatFlags;
| |
| | -struct _GnTextViewClass
| | +struct _GntTextViewClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gnttree.c 514fda8f2319742978b9fc85e4e0fb082c3a9222
| | +++ finch/libgnt/gnttree.c 9ee650f4d7d9fa5bc7ddb721b5462c847f6f0cfe
| | @@ -20,7 +20,7 @@ enum
| |
| | /* XXX: Make this one into a GObject?
| | * ... Probably not */
| | -struct _GnTreeRow
| | +struct _GntTreeRow
| | {
| | void *key;
| | void *data; /* XXX: unused */
| | @@ -40,7 +40,7 @@ struct _GnTreeRow
| | GntTree *tree;
| | };
| |
| | -struct _GnTreeCol
| | +struct _GntTreeCol
| | {
| | char *text;
| | int span; /* How many columns does it span? */
| | ============================================================
| | --- finch/libgnt/gnttree.h eedb0e773962b708620c31d3decd270acbea8aa1
| | +++ finch/libgnt/gnttree.h eaadb3047ebef4d84308ece63d87509985a16727
| | @@ -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 @@ struct _GnTree
| | GCompareFunc compare;
| | };
| |
| | -struct _GnTreeClass
| | +struct _GntTreeClass
| | {
| | GntWidgetClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntwidget.c c632daabc4635d34eca145d2ed4a47c9e1c15471
| | +++ finch/libgnt/gntwidget.c 858cfe29a2cd8af5f1802b83ae7dc32bdc6eefee
| | @@ -521,7 +521,7 @@ gnt_widget_set_size(GntWidget *widget, i
| |
| | 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);
| | }
| | ============================================================
| | --- finch/libgnt/gntwidget.h 7807bba6939d205f8c381dfa4ed49006d93e46cf
| | +++ finch/libgnt/gntwidget.h f0451073573ad17a2481aa524cc9e5cf2214fffb
| | @@ -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 @@ typedef enum _GnWidgetFlags
| | } 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 @@ typedef enum _GnMouseEvent
| | } 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 @@ struct _GnWidgetPriv
| | int minw, minh; /* Minimum size for the widget */
| | };
| |
| | -struct _GnWidget
| | +struct _GntWidget
| | {
| | GntBindable inherit;
| |
| | @@ -83,7 +83,7 @@ struct _GnWidget
| | void (*gnt_reserved4)(void);
| | };
| |
| | -struct _GnWidgetClass
| | +struct _GntWidgetClass
| | {
| | GntBindableClass parent;
| |
| | ============================================================
| | --- finch/libgnt/gntwindow.h 3b6483a44bc0f62185817724738e5418eac831f0
| | +++ finch/libgnt/gntwindow.h 50772439bbb06e03d52a153883ac185448c53586
| | @@ -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;
| |
| | ============================================================
| | --- finch/libgnt/gntwm.h 8fbfeb952f9b58cabd43172e85dd60145ae5b05f
| | +++ finch/libgnt/gntwm.h f4ef6762bca0c637457bae53063c7ee92114ce1f
| | @@ -27,9 +27,9 @@ typedef struct
| | 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 @@ typedef struct _GnPosition
| | /**
| | * 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 @@ struct _GntWM
| | void *res4;
| | };
| |
| | -typedef struct _GnWMClass GntWMClass;
| | +typedef struct _GntWMClass GntWMClass;
| |
| | -struct _GnWMClass
| | +struct _GntWMClass
| | {
| | GntBindableClass parent;
| |
| | ============================================================
| | --- finch/libgnt/test/file.c eff26206bf4a4273aed3aa6edff5d04b2b8a8672
| | +++ finch/libgnt/test/file.c 173ae8523adafac01ab0dc017c9dd3ea3022acb7
| | @@ -9,6 +9,7 @@ int main()
| | 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();
| | ============================================================
| | --- finch/libgnt/test/menu.c 16a187458da94cc995227f78db45eafff398f1a1
| | +++ finch/libgnt/test/menu.c a863851af4fa036be68f5ab7f35a7e9c82165c39
| | @@ -22,29 +22,29 @@ int main()
| | 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);
| |
| | ============================================================
| | --- libpurple/account.h ad1a68fcb7a3a4ab271ef0779c9a4338c8358c76
| | +++ libpurple/account.h 8f0e3721be8e9b1a889a1ade641dbb49da5e1039
| | @@ -211,14 +211,14 @@ void *purple_account_request_authorizati
| | /**
| | * 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 @@ void purple_account_set_buddy_icon(Purpl
| | * 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);
| |
| | ============================================================
| | --- libpurple/buddyicon.h 1fb5bffb38d5665206019276d7608dfb899eb501
| | +++ libpurple/buddyicon.h b4bcbed6371098ee7194d84b30c23b80afe1b5c4
| | @@ -182,8 +182,8 @@ const guchar *purple_buddy_icon_get_data
| | * 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);
| |
| | ============================================================
| | --- libpurple/eventloop.h 63a66a2dfa35c7d07a971cd72d5dd999578f8b3a
| | +++ libpurple/eventloop.h 089314f4df684b5508ec766da9afa821fdf535e7
| | @@ -138,7 +138,7 @@ gboolean purple_input_remove(guint handl
| | * 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.
| | */
| | ============================================================
| | --- libpurple/notify.h e1b4d2a2cab819638f05a12b712b1263e4250df8
| | +++ libpurple/notify.h c80ecc1bba96c1e402015d438df207c8efaa82c6
| | @@ -581,7 +581,7 @@ PurpleNotifyUserInfoEntryType purple_not
| | * 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);
| | ============================================================
| | --- libpurple/protocols/bonjour/bonjour.c a345c390a97ff0719faf1e1240d787d2a84a0691
| | +++ libpurple/protocols/bonjour/bonjour.c 561380f6ccdca3d2f24f3f812692ed47de682c15
| | @@ -460,7 +460,7 @@ initialize_default_account_values()
| | 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 @@ initialize_default_account_values()
| | /* 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);
| | ============================================================
| | --- libpurple/protocols/bonjour/issues.txt f635921e355432b7fbd68c09407c0aec6e71ac9b
| | +++ libpurple/protocols/bonjour/issues.txt 00d82004dad19e94fc9bca05b053382fb0d74535
| | @@ -1,18 +1,9 @@
| | ==========================================
| | ============= Known issues ===============
| | ==========================================
| |
| | +* Status changes don't work
| | +* Avatars
| | +* File transfers
| | +* Typing notifications
| | +* Check if it works on win32
| | -(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
| | ============================================================
| | --- libpurple/protocols/silc/README 2052314b74e10d02544f315962dce1fb5462f291
| | +++ libpurple/protocols/silc/README a7b22f8decde0cf4452bc5e0120a5e75f66e1742
| | @@ -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 binarie
| | 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 @@ if pkg-config is installed in your syste
| | ./configure --with-silc-libs=/path/to/silc/lib
| | --with-silc-includes=/path/to/silc/include
| |
| | +If the SILC Toolkit cannot be found then the SILC protocol plugin will
| | +not be compiled.
| | -If the Toolkit cannot be located the SILC will not be compiled into the
| | -Gaim.
| | ============================================================
| | --- libpurple/protocols/silc/TODO aca6580c753adbecaf8282cfa92a3ef7135d03df
| | +++ libpurple/protocols/silc/TODO 03e82e50c0844649c776335abd21a481edd0d51e
| | @@ -1,8 +1,8 @@ Sending images
| | Features TODO (maybe)
| | =====================
| |
| | 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
| | ============================================================
| | --- libpurple/savedstatuses.h a15aec12a59cd4b1c046f830d7ba690b8e62413b
| | +++ libpurple/savedstatuses.h a74a64cc7fc98b9f542377bbcc14650da61247bf
| | @@ -213,9 +213,9 @@ gboolean purple_savedstatus_is_idleaway(
| | /**
| | * 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);
| |
| | ============================================================
| | --- libpurple/server.h 6bb268f4555eb2d81883e98b6285ff640234a33e
| | +++ libpurple/server.h f1eeff2eb723d7c1faa7ab179e4543a031c66263
| | @@ -38,7 +38,7 @@ extern "C" {
| | *
| | * 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 @@ void serv_got_im(PurpleConnection *gc, c
| | * @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
| | ============================================================
| | --- libpurple/win32/libpurplerc.rc.in 92587b090e2414b6169f22402d474af0957a74f6
| | +++ libpurple/win32/libpurplerc.rc.in 2722fd5e2cbd6ea896f6de4c7315de5c8260bde0
| | @@ -16,12 +16,12 @@ VS_VERSION_INFO VERSIONINFO
| | 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"
| | ============================================================
| | --- pidgin/gtkaccount.c bdb24023b99d8272e097190f59660d1dd00a08fa
| | +++ pidgin/gtkaccount.c d47c35929d6d8af01095c6f6dc0bc0c52da584ae
| | @@ -231,7 +231,7 @@ set_dialog_icon(AccountPrefsDialog *dial
| | /* 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 @@ add_user_options(AccountPrefsDialog *dia
| | 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 @@ create_accounts_list(AccountsWindow *dia
| | /* Translators: Please maintain the use of -> or <- to represent the menu heirarchy */
| | pretty = pidgin_make_pretty_arrows(_(
| | "<span size='larger' weight='bold'>Welcome to " PIDGIN_NAME "!</span>\n\n"
| | -
| | +
| | "You have no IM accounts configured. To start connecting with " PIDGIN_NAME " "
| | "press the <b>Add</b> button below and configure your first "
| | "account. If you want " PIDGIN_NAME " to connect to multiple IM accounts, "
| | "press <b>Add</b> again to configure them all.\n\n"
| | -
| | +
| | "You can come back to this window to add, edit, or remove "
| | "accounts from <b>Accounts->Add/Edit</b> in the Buddy "
| | "List window"));
| | @@ -2439,7 +2439,7 @@ pidgin_accounts_request_add(PurpleAccoun
| |
| | 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 @@ pidgin_accounts_request_authorization(Pu
| | 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 =
| | ============================================================
| | --- pidgin/gtkstatusbox.c b4b98fcf684e8038f096a2c08cd68bef2b99e802
| | +++ pidgin/gtkstatusbox.c a9b80274b1dcbead4b2e319112a537932a581c0b
| | @@ -279,7 +279,7 @@ icon_box_dnd_cb(GtkWidget *widget, GdkDr
| | 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 @@ pidgin_status_box_refresh(PidginStatusBo
| | 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 @@ pidgin_status_box_refresh(PidginStatusBo
| | 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 @@ pidgin_status_box_refresh(PidginStatusBo
| | }
| | }
| | #endif
| | -
| | +
| | }
| |
| | if (status_box->account != NULL) {
| | @@ -824,7 +824,7 @@ status_menu_refresh_iter(PidginStatusBox
| | 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_bo
| | 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 @@ pidgin_status_box_list_position (PidginS
| | #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 @@ pidgin_status_box_list_position (PidginS
| |
| | #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 @@ pidgin_status_box_list_position (PidginS
| | *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 @@ pidgin_status_box_list_position (PidginS
| | *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 @@ pidgin_status_box_list_position (PidginS
| | 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 @@ pidgin_status_box_popup(PidginStatusBox
| | {
| | 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, PidginStat
| | 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 @@ treeview_activate_current_selection(Pidg
| | {
| | 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 @@ treeview_button_release_cb(GtkWidget *wi
| |
| | if (!ret)
| | return TRUE; /* clicked outside window? */
| | -
| | +
| | treeview_activate_current_selection(status_box, path);
| | gtk_tree_path_free (path);
| |
| | @@ -1620,7 +1620,7 @@ pidgin_status_box_init (PidginStatusBox
| | 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 @@ pidgin_status_box_init (PidginStatusBox
| | 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 @@ pidgin_status_box_expose_event(GtkWidget
| | 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 @@ pidgin_status_box_redisplay_buddy_icon(P
| | /* 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 @@ activate_currently_selected_status(Pidgi
| | 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 @@ activate_currently_selected_status(Pidgi
| | 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 @@ static void pidgin_status_box_changed(Pi
| | 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,
| | ============================================================
| | --- pidgin/gtkutils.h eb020d784ced34bd9664b927239a8f331ec05bb7
| | +++ pidgin/gtkutils.h ebd015c01b2c0cf9014c98323a3f053644ce79a4
| | @@ -393,7 +393,7 @@ GdkPixbuf *pidgin_create_prpl_icon(Purpl
| | * @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);
| |
| | ============================================================
| | --- pidgin/pidginstock.h f9f8f02641576315c2e44fcbd6d10224456abee3
| | +++ pidgin/pidginstock.h 4dce26c617dbd66b87fc58332550e596449cec5b
| | @@ -1,5 +1,5 @@
| | /**
| | - * @file gtkstock.h GTK+ Stock resources
| | + * @file pidginstock.h GTK+ Stock resources
| | * @ingroup gtkui
| | *
| | * pidgin
| | ============================================================
| | --- pidgin/pixmaps/Makefile.am 068365838b2ba9bcfaccd1fb55aa6229c10e56fc
| | +++ pidgin/pixmaps/Makefile.am 1e4e0cae0693dfb5e08e83246715210e41ee3356
| | @@ -64,3 +64,6 @@ distpixmap_DATA = pidgin.png pidgin.svg
| | distpixmapdir = $(datadir)/pixmaps
| | distpixmap_DATA = pidgin.png pidgin.svg
| |
| | +
| | +
| | +
| | ============================================================
| | --- pidgin/pixmaps/Makefile.mingw 14cf5a801ce84b98aa67976ac4ebf4d28a3e28ba
| | +++ pidgin/pixmaps/Makefile.mingw e6a4c2179746cc35cc70cc402b8b671b1531e19c
| | @@ -18,24 +18,24 @@ install:
| | $(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;
| |
| | ============================================================
| | --- pidgin/win32/nsis/pidgin-installer.nsi d838793d5b4d26ff478ba2929d67336acd2d561f
| | +++ pidgin/win32/nsis/pidgin-installer.nsi 861a65b63670152ec16727b3c5a551ad9b0db8bd
| | @@ -698,7 +698,7 @@ Section Uninstall
| | 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 @@ Section Uninstall
| | 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"
| | ============================================================
| | --- pidgin/win32/pidgin_exe_rc.rc.in 17f268a082f3ab0dc040f4c803771d2f70fb6563
| | +++ pidgin/win32/pidgin_exe_rc.rc.in bbaf60b502d35a4a8a5c69b44c8321104253ac92
| | @@ -33,4 +33,4 @@ VS_VERSION_INFO VERSIONINFO
| | END
| | END
| |
| | +PIDGIN_ICON ICON PIXMAPDIR "pidgin.ico"
| | -PURPLE_ICON ICON PIXMAPDIR "pidgin.ico"
| | ============================================================
| | --- pidgin.spec.in 6ca03af99b542c1dc6333d4ea44cd7461c99e6c7
| | +++ pidgin.spec.in 5cc3d6d65e5a1a3e8baebfd57aacdadd2b18a7d7
| | @@ -270,7 +270,7 @@ if [ "$1" -gt 1 -a -n "`which gconftool-
| | 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`
| | 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-
| | 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 @@ fi
| | %{_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
| | ============================================================
| | --- COPYRIGHT d117afd99593c6ba2b77cb7d4acd30cf332ca6ef
| | +++ COPYRIGHT c634cb4ac8e183092a82f88c3428806f0799fa8d
| | @@ -357,6 +357,7 @@ Dave West
| | Andrew Wellington
| | Adam Wendt
| | Dave West
| | +Zac West
| | Daniel Westermann-Clark
| | Andrew Whewell
| | Simon Wilkinson
| | ============================================================
| | --- libpurple/conversation.h 9a43f0f56038109879c210c335a337938d78872e
| | +++ libpurple/conversation.h 3f2f721e9f7005bbacd5c9495c92a8ee96713876
| | @@ -115,7 +115,8 @@ typedef enum
| | PURPLE_MESSAGE_DELAYED = 0x0400, /**< Delayed message. */
| | PURPLE_MESSAGE_RAW = 0x0800, /**< "Raw" message - don't
| | apply formatting */
| | - PURPLE_MESSAGE_IMAGES = 0x1000 /**< Message contains images */
| | + PURPLE_MESSAGE_IMAGES = 0x1000, /**< Message contains images */
| | + PURPLE_MESSAGE_NOTIFY = 0x2000 /**< Message is a notification */
| |
| | } PurpleMessageFlags;
| |
| | ============================================================
| | --- libpurple/protocols/msn/switchboard.c 704868226e4140964fe1682669ae523472a84c3c
| | +++ libpurple/protocols/msn/switchboard.c e5e9a4e38808f28ee58aeb4fe86909f61a5a9803
| | @@ -955,7 +955,7 @@ nudge_msg(MsnCmdProc *cmdproc, MsnMessag
| |
| | str = g_strdup_printf(_("%s just sent you a Nudge!"), username);
| | g_free(username);
| | - msn_switchboard_report_user(swboard, PURPLE_MESSAGE_SYSTEM, str);
| | + msn_switchboard_report_user(swboard, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, str);
| | g_free(str);
| | }
| |
| | ============================================================
| | --- libpurple/protocols/yahoo/yahoo.c d15fdd463129122482cc768b9daab2e40e54f743
| | +++ libpurple/protocols/yahoo/yahoo.c c35988a1c00d531a8c9a807960249efed4731dd6
| | @@ -859,10 +859,25 @@ static void yahoo_process_message(Purple
| | purple_util_chrreplace(m, '\r', '\n');
| |
| | if (!strcmp(m, "<ding>")) {
| | - PurpleConversation *c = purple_conversation_new(PURPLE_CONV_TYPE_IM,
| | - purple_connection_get_account(gc), im->from);
| | - purple_conv_im_write(PURPLE_CONV_IM(c), "", _("Buzz!!"), PURPLE_MESSAGE_NICK|PURPLE_MESSAGE_RECV,
| | - im->time);
| | + PurpleBuddy *buddy;
| | + PurpleAccount *account;
| | + PurpleConversation *c;
| | + char *username, *str;
| | +
| | + account = purple_connection_get_account(gc);
| | + c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, im->from);
| | +
| | + if ((buddy = purple_find_buddy(account, im->from)) != NULL)
| | + username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1);
| | + else
| | + username = g_markup_escape_text(im->from, -1);
| | +
| | + str = g_strdup_printf(_("%s just sent you a Buzz!"), username);
| | +
| | + purple_conversation_write(c, NULL, str, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, im->time);
| | +
| | + g_free(username);
| | + g_free(str);
| | g_free(m);
| | g_free(im);
| | continue;
| | @@ -3737,7 +3752,7 @@ yahoopurple_cmd_buzz(PurpleConversation
| | purple_debug(PURPLE_DEBUG_INFO, "yahoo",
| | "Sending <ding> on account %s to buddy %s.\n", username, c->name);
| | purple_conv_im_send(PURPLE_CONV_IM(c), "<ding>");
| | - purple_conv_im_write(PURPLE_CONV_IM(c), "", _("Buzz!!"), PURPLE_MESSAGE_NICK|PURPLE_MESSAGE_SEND, time(NULL));
| | + purple_conversation_write(c, NULL, _("You have just sent a Buzz!"), PURPLE_MESSAGE_SYSTEM, time(NULL));
| | return PURPLE_CMD_RET_OK;
| | }
| |
To get the patch for this revision, please do this:
mtn log --last 1 --diffs --from fba53203d9fe0ebd98157bdc6c7faeb2b149908b
More information about the Commits
mailing list