Changeset 9634


Ignore:
Timestamp:
Nov 29, 2009, 8:28:35 PM (12 years ago)
Author:
charles
Message:

(trunk gtk) #2629 "associate transmission with magnet links" -- implemented for GTK+ client on GNOME desktops with GConf2

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/configure.ac

    r9547 r9634  
    3838AM_CONDITIONAL(TR_UNSTABLE, test "x$supported_build" = "xno")
    3939
     40CANBERRA_MINIMUM=0.10
     41 AC_SUBST(CANBERRA_MINIMUM)
     42CURL_MINIMUM=7.16.3
     43 AC_SUBST(CURL_MINIMUM)
     44DBUS_GLIB_MINIMUM=0.70
     45 AC_SUBST(DBUS_GLIB_MINIMUM)
     46GCONF2_MINIMUM=2.20.0
     47 AC_SUBST(GCONF2_MINIMUM)
     48GIO_MINIMUM=2.15.5
     49  AC_SUBST(GIO_MINIMUM)
     50GLIB_MINIMUM=2.6.0
     51  AC_SUBST(GLIB_MINIMUM)
     52GTK_MINIMUM=2.6.0
     53  AC_SUBST(GTK_MINIMUM)
     54LIBEVENT_MINIMUM=1.4.5
     55  AC_SUBST(LIBEVENT_MINIUM)
     56LIBNOTIFY_MINIMUM=0.4.3
     57  AC_SUBST(LIBNOTIFY_MINIMUM)
    4058OPENSSL_MINIMUM=0.9.4
    41 CURL_MINIMUM=7.16.3
    42 GIO_MINIMUM=2.15.5
    43 GLIB_MINIMUM=2.6.0
    44 GTK_MINIMUM=2.6.0
    45 LIBNOTIFY_MINIMUM=0.4.3
    46 DBUS_GLIB_MINIMUM=0.70
    47 LIBEVENT_MINIMUM=1.4.5
    48 CANBERRA_MINIMUM=0.10
    49 AC_SUBST(OPENSSL_MINIMUM)
    50 AC_SUBST(CURL_MINIMUM)
    51 AC_SUBST(GIO_MINIMUM)
    52 AC_SUBST(GLIB_MINIMUM)
    53 AC_SUBST(GTK_MINIMUM)
    54 AC_SUBST(LIBNOTIFY_MINIMUM)
    55 AC_SUBST(DBUS_GLIB_MINIMUM)
    56 AC_SUBST(LIBEVENT_MINIUM)
    57 AC_SUBST(CANBERRA_MINIMUM)
     59  AC_SUBST(OPENSSL_MINIMUM)
    5860
    5961AC_PROG_CC
     
    293295    fi
    294296
     297    PKG_CHECK_MODULES([LIBGCONF],
     298                      [gconf-2.0 >= $GCONF2_MINIMUM],
     299                      [have_libgconf=yes],
     300                      [have_libgconf=no])
     301    AC_ARG_ENABLE([gconf2],
     302                  AS_HELP_STRING([--enable-libgconf],[enable GConf support]),,
     303                  [enable_libgconf=yes])
     304    use_libgconf=no
     305    if test "x$enable_libgconf" = "xyes" ; then
     306        if test "x$have_libgconf" = "xyes"; then
     307            use_libgconf=yes
     308            AC_SUBST(LIBGCONF_LIBS)
     309            AC_SUBST(LIBGCONF_CFLAGS)
     310            AC_DEFINE([HAVE_LIBGCONF], 1)
     311        fi
     312    fi
     313
    295314    PKG_CHECK_MODULES([DBUS_GLIB],
    296315                      [dbus-glib-1 >= $DBUS_GLIB_MINIMUM],
     
    447466          ... with gio support:        ${use_gio}
    448467          ... with dbus-glib support:  ${use_dbus_glib}
     468          ... with libgconf support:   ${use_libgconf}
    449469          ... with libnotify support:  ${use_libnotify}
    450470        Build Command-Line client:     ${build_cli}
  • trunk/gtk/Makefile.am

    r9613 r9634  
    2323    $(LIBEVENT_CFLAGS) \
    2424    $(LIBCANBERRA_CFLAGS) \
     25    $(LIBGCONF_CFLAGS) \
    2526    $(GTK_CFLAGS) \
    2627    $(LIBCURL_CFLAGS) \
     
    105106    $(top_builddir)/third-party/libnatpmp/libnatpmp.a \
    106107    $(LIBCANBERRA_LIBS) \
     108    $(LIBGCONF_LIBS) \
    107109    $(DHT_LIBS) \
    108110    $(GTK_LIBS) \
  • trunk/gtk/main.c

    r9631 r9634  
    124124static gboolean       updatemodel( gpointer gdata );
    125125
     126/***
     127****
     128***/
     129
     130#ifdef HAVE_LIBGCONF
     131 #include <gconf/gconf.h>
     132 #include <gconf/gconf-client.h>
     133#endif
     134
     135static void
     136registerMagnetLinkHandler( void )
     137{
     138#ifdef HAVE_LIBGCONF
     139    GError * err;
     140    GConfValue * value;
     141    GConfClient * client = gconf_client_get_default( );
     142    const char * key = "/desktop/gnome/url-handlers/magnet/command";
     143
     144    /* if there's already a manget handler registered, don't do anything */
     145    value = gconf_client_get( client, key, NULL );
     146    if( value != NULL )
     147    {
     148        gconf_value_free( value );
     149        return;
     150    }
     151
     152    err = NULL;
     153    if( !gconf_client_set_string( client, key, "transmission '%s'", &err ) )
     154    {
     155        tr_inf( "Unable to register Transmission as default magnet link handler: \"%s\"", err->message );
     156        g_clear_error( &err );
     157    }
     158    else
     159    {
     160        gconf_client_set_bool( client, "/desktop/gnome/url-handlers/magnet/needs_terminal", FALSE, NULL );
     161        gconf_client_set_bool( client, "/desktop/gnome/url-handlers/magnet/enabled", TRUE, NULL );
     162        tr_inf( "Transmission registered as default magnet link handler" );
     163    }
     164#endif
     165}
     166
     167/***
     168****
     169***/
     170
    126171struct counts_data
    127172{
     
    468513            && ( time( NULL ) - pref_int_get( "blocklist-date" ) > ( 60 * 60 * 24 * 7 ) ) )
    469514                tr_core_blocklist_update( cbdata->core );
     515
     516        /* if there's no magnet link handler registered, register us */
     517        registerMagnetLinkHandler( );
    470518
    471519        gtk_main( );
Note: See TracChangeset for help on using the changeset viewer.