Ticket #4372: tools.diff

File tools.diff, 20.0 KB (added by jordan, 10 years ago)
  • configure.ac

     
    6060##   OPTIONAL for the GTK+ client
    6161##
    6262##
    63 # play the XDG "download done" sound...
    64 CANBERRA_MINIMUM=0.10
    65 AC_SUBST(CANBERRA_MINIMUM)
    6663# inhibit hibernation when a torrent is active...
    6764DBUS_GLIB_MINIMUM=0.70
    6865AC_SUBST(DBUS_GLIB_MINIMUM)
     
    7269# implement "watch" directories to use new .torrent files...
    7370GIO_MINIMUM=2.15.5
    7471AC_SUBST(GIO_MINIMUM)
    75 # pop up a "download done" notice...
    76 LIBNOTIFY_MINIMUM=0.4.3
    77 AC_SUBST(LIBNOTIFY_MINIMUM)
    7872# create the tray icon with AppIndicator
    7973LIBAPPINDICATOR_MINIMUM=0.0.11
    8074  AC_SUBST(LIBAPPINDICATOR_MINIMUM)
     
    263257build_gtk=no
    264258use_gio=no
    265259use_libappindicator=no
    266 use_libnotify=no
    267260use_dbus_glib=no
    268 use_canberra=no
    269261use_gconf2=no
    270262if test "x$want_gtk" = "xyes" ; then
    271263    if test "x$have_gtk" = "xyes"; then
     
    286278        AC_DEFINE([HAVE_GIO], 1)
    287279    fi
    288280
    289     PKG_CHECK_MODULES([LIBNOTIFY],
    290                       [libnotify >= $LIBNOTIFY_MINIMUM],
    291                       [have_libnotify=yes],
    292                       [have_libnotify=no])
    293     AC_ARG_ENABLE([libnotify],
    294                   AS_HELP_STRING([--enable-libnotify],[enable notifications]),,
    295                   [enable_libnotify=yes])
    296     use_libnotify=no
    297     if test "x$have_libnotify" = "xyes"; then
    298         if test "x$enable_libnotify" = "xyes" ; then
    299             use_libnotify=yes
    300             AC_DEFINE([HAVE_LIBNOTIFY], 1)
    301         else
    302             LIBNOTIFY_CFLAGS=
    303             LIBNOTIFY_LIBS=
    304         fi
    305     fi
    306 
    307281    PKG_CHECK_MODULES([LIBAPPINDICATOR],
    308282                      [appindicator-0.1 >= $LIBAPPINDICATOR_MINIMUM],
    309283                      [have_libappindicator=yes],
     
    323297        fi
    324298    fi
    325299
    326     PKG_CHECK_MODULES([LIBCANBERRA],
    327                       [libcanberra-gtk >= $CANBERRA_MINIMUM],
    328                       [have_libcanberra=yes],
    329                       [have_libcanberra=no])
    330     AC_ARG_ENABLE([libcanberra],
    331                   AS_HELP_STRING([--enable-libcanberra],[enable sounds]),,
    332                   [enable_libcanberra=yes])
    333     if test "x$have_libcanberra" = "xyes"; then
    334         if test "x$enable_libcanberra" = "xyes" ; then
    335             use_canberra=yes
    336             AC_DEFINE([HAVE_LIBCANBERRA], 1)
    337         else
    338             LIBCANBERRA_CFLAGS=
    339             LIBCANBERRA_LIBS=
    340         fi
    341     fi
    342 
    343300    PKG_CHECK_MODULES([GCONF2],
    344301                      [gconf-2.0 >= $GCONF2_MINIMUM],
    345302                      [have_gconf2=yes],
     
    537494
    538495      * dbus support:                                 ${use_dbus_glib}
    539496      * gio for watchdir support:                     ${use_gio}
    540       * libnotify for 'download completed' popups:    ${use_libnotify}
    541       * libcanberra for 'download completed' sounds:  ${use_canberra}
    542497      * gconf2 to register as a magnet link handler:  ${use_gconf2}
    543498      * libappindicator for an Ubuntu-style tray:     ${use_libappindicator}
    544499
  • gtk/conf.c

     
    157157    if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD );
    158158    if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP );
    159159    if( !str ) str = tr_getDefaultDownloadDir( );
    160     tr_bencDictAddStr( d, PREF_KEY_DIR_WATCH, str );
     160    tr_bencDictAddStr ( d, PREF_KEY_DIR_WATCH, str );
    161161    tr_bencDictAddBool( d, PREF_KEY_DIR_WATCH_ENABLED, FALSE );
    162162#endif
    163163
     
    165165    tr_bencDictAddBool( d, PREF_KEY_INHIBIT_HIBERNATION, FALSE );
    166166    tr_bencDictAddBool( d, PREF_KEY_BLOCKLIST_UPDATES_ENABLED, TRUE );
    167167
    168     tr_bencDictAddStr( d, PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) );
     168    tr_bencDictAddStr ( d, PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) );
    169169
    170170    tr_bencDictAddBool( d, PREF_KEY_TOOLBAR, TRUE );
    171171    tr_bencDictAddBool( d, PREF_KEY_FILTERBAR, TRUE );
    172172    tr_bencDictAddBool( d, PREF_KEY_STATUSBAR, TRUE );
    173173    tr_bencDictAddBool( d, PREF_KEY_SHOW_TRAY_ICON, FALSE );
    174     tr_bencDictAddBool( d, PREF_KEY_PLAY_DOWNLOAD_COMPLETE_SOUND, TRUE );
    175     tr_bencDictAddBool( d, PREF_KEY_SHOW_DESKTOP_NOTIFICATION, TRUE );
    176174    tr_bencDictAddBool( d, PREF_KEY_SHOW_MORE_TRACKER_INFO, FALSE );
    177175    tr_bencDictAddBool( d, PREF_KEY_SHOW_MORE_PEER_INFO, FALSE );
    178176    tr_bencDictAddBool( d, PREF_KEY_SHOW_BACKUP_TRACKERS, FALSE );
    179     tr_bencDictAddStr( d, PREF_KEY_STATUSBAR_STATS, "total-ratio" );
     177    tr_bencDictAddStr ( d, PREF_KEY_STATUSBAR_STATS, "total-ratio" );
    180178
     179    tr_bencDictAddStr ( d, PREF_KEY_TORRENT_ADDED_NOTIFICATION_COMMAND, "notify-send -c transfer -i transmission '%s' '%s'" );
     180    tr_bencDictAddBool( d, PREF_KEY_TORRENT_ADDED_NOTIFICATION_ENABLED, true );
     181    tr_bencDictAddStr ( d, PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_COMMAND, "notify-send -c transfer.complete -i transmission '%s' '%s'" );
     182    tr_bencDictAddBool( d, PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_ENABLED, true );
     183    tr_bencDictAddStr ( d, PREF_KEY_TORRENT_COMPLETE_SOUND_COMMAND, "canberra-gtk-play -i complete-download -d 'transmission torrent downloaded'" );
     184    tr_bencDictAddBool( d, PREF_KEY_TORRENT_COMPLETE_SOUND_ENABLED, true );
     185
    181186    tr_bencDictAddBool( d, PREF_KEY_OPTIONS_PROMPT, TRUE );
    182187
    183188    tr_bencDictAddBool( d, PREF_KEY_MAIN_WINDOW_IS_MAXIMIZED, FALSE );
  • gtk/tr-prefs.c

     
    343343static GtkWidget*
    344344desktopPage( GObject * core )
    345345{
    346     int          row = 0;
     346    int row = 0;
     347    GtkWidget * t;
     348    GtkWidget * w;
    347349    const char * s;
    348     GtkWidget *  t;
    349     GtkWidget *  w;
    350350
    351351    t = hig_workarea_create( );
    352352    hig_workarea_add_section_title( t, &row, _( "Desktop" ) );
    353353
    354     s = _( "Inhibit _hibernation when torrents are active" );
     354    s = _( "_Inhibit hibernation when torrents are active" );
    355355    w = new_check_button( s, PREF_KEY_INHIBIT_HIBERNATION, core );
    356356    hig_workarea_add_wide_control( t, &row, w );
    357357
     
    359359    w = new_check_button( s, PREF_KEY_SHOW_TRAY_ICON, core );
    360360    hig_workarea_add_wide_control( t, &row, w );
    361361
    362     s = _( "Show _popup notifications" );
    363     w = new_check_button( s, PREF_KEY_SHOW_DESKTOP_NOTIFICATION, core );
     362    hig_workarea_add_section_divider( t, &row );
     363    hig_workarea_add_section_title ( t, &row, _( "Notification" ) );
     364
     365    s = _( "Show a notification when torrents are a_dded" );
     366    w = new_check_button( s, PREF_KEY_TORRENT_ADDED_NOTIFICATION_ENABLED, core );
    364367    hig_workarea_add_wide_control( t, &row, w );
    365368
    366 #ifdef HAVE_LIBCANBERRA
    367     s = _( "Play _sound when downloads are complete" );
    368     w = new_check_button( s, PREF_KEY_PLAY_DOWNLOAD_COMPLETE_SOUND, core );
     369    s = _( "Show a notification when torrents _finish" );
     370    w = new_check_button( s, PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_ENABLED, core );
    369371    hig_workarea_add_wide_control( t, &row, w );
    370 #endif
    371372
     373    s = _( "Play a _sound when torrents finish" );
     374    w = new_check_button( s, PREF_KEY_TORRENT_COMPLETE_SOUND_ENABLED, core );
     375    hig_workarea_add_wide_control( t, &row, w );
     376
    372377    hig_workarea_finish( t, &row );
    373378    return t;
    374379}
  • gtk/tr-prefs.h

     
    2020/* if you add a key here,  you /must/ add its
    2121 * default in tr_prefs_init_defaults( void ) */
    2222
    23 #define PREF_KEY_USER_HAS_GIVEN_INFORMED_CONSENT   "user-has-given-informed-consent"
    24 #define PREF_KEY_OPTIONS_PROMPT                    "show-options-window"
    25 #define PREF_KEY_OPEN_DIALOG_FOLDER                "open-dialog-dir"
    26 #define PREF_KEY_INHIBIT_HIBERNATION               "inhibit-desktop-hibernation"
    27 #define PREF_KEY_DIR_WATCH                         "watch-dir"
    28 #define PREF_KEY_DIR_WATCH_ENABLED                 "watch-dir-enabled"
    29 #define PREF_KEY_SHOW_TRAY_ICON                    "show-notification-area-icon"
    30 #define PREF_KEY_SHOW_DESKTOP_NOTIFICATION         "show-desktop-notification"
    31 #define PREF_KEY_PLAY_DOWNLOAD_COMPLETE_SOUND      "play-download-complete-sound"
    32 #define PREF_KEY_SHOW_MORE_TRACKER_INFO            "show-tracker-scrapes"
    33 #define PREF_KEY_SHOW_MORE_PEER_INFO               "show-extra-peer-details"
    34 #define PREF_KEY_SHOW_BACKUP_TRACKERS              "show-backup-trackers"
    35 #define PREF_KEY_SORT_MODE                         "sort-mode"
    36 #define PREF_KEY_SORT_REVERSED                     "sort-reversed"
    37 #define PREF_KEY_COMPACT_VIEW                      "compact-view"
    38 #define PREF_KEY_FILTERBAR                         "show-filterbar"
    39 #define PREF_KEY_STATUSBAR                         "show-statusbar"
    40 #define PREF_KEY_STATUSBAR_STATS                   "statusbar-stats"
    41 #define PREF_KEY_TOOLBAR                           "show-toolbar"
    42 #define PREF_KEY_BLOCKLIST_UPDATES_ENABLED         "blocklist-updates-enabled"
    43 #define PREF_KEY_MAIN_WINDOW_HEIGHT                "main-window-height"
    44 #define PREF_KEY_MAIN_WINDOW_WIDTH                 "main-window-width"
    45 #define PREF_KEY_MAIN_WINDOW_X                     "main-window-x"
    46 #define PREF_KEY_MAIN_WINDOW_Y                     "main-window-y"
    47 #define PREF_KEY_MAIN_WINDOW_IS_MAXIMIZED          "main-window-is-maximized"
     23#define PREF_KEY_BLOCKLIST_UPDATES_ENABLED               "blocklist-updates-enabled"
     24#define PREF_KEY_COMPACT_VIEW                            "compact-view"
     25#define PREF_KEY_DIR_WATCH_ENABLED                       "watch-dir-enabled"
     26#define PREF_KEY_DIR_WATCH                               "watch-dir"
     27#define PREF_KEY_FILTERBAR                               "show-filterbar"
     28#define PREF_KEY_INHIBIT_HIBERNATION                     "inhibit-desktop-hibernation"
     29#define PREF_KEY_MAIN_WINDOW_HEIGHT                      "main-window-height"
     30#define PREF_KEY_MAIN_WINDOW_IS_MAXIMIZED                "main-window-is-maximized"
     31#define PREF_KEY_MAIN_WINDOW_WIDTH                       "main-window-width"
     32#define PREF_KEY_MAIN_WINDOW_X                           "main-window-x"
     33#define PREF_KEY_MAIN_WINDOW_Y                           "main-window-y"
     34#define PREF_KEY_OPEN_DIALOG_FOLDER                      "open-dialog-dir"
     35#define PREF_KEY_OPTIONS_PROMPT                          "show-options-window"
     36#define PREF_KEY_SHOW_BACKUP_TRACKERS                    "show-backup-trackers"
     37#define PREF_KEY_SHOW_MORE_PEER_INFO                     "show-extra-peer-details"
     38#define PREF_KEY_SHOW_MORE_TRACKER_INFO                  "show-tracker-scrapes"
     39#define PREF_KEY_SHOW_TRAY_ICON                          "show-notification-area-icon"
     40#define PREF_KEY_SORT_MODE                               "sort-mode"
     41#define PREF_KEY_SORT_REVERSED                           "sort-reversed"
     42#define PREF_KEY_STATUSBAR                               "show-statusbar"
     43#define PREF_KEY_STATUSBAR_STATS                         "statusbar-stats"
     44#define PREF_KEY_TOOLBAR                                 "show-toolbar"
     45#define PREF_KEY_TORRENT_ADDED_NOTIFICATION_COMMAND      "torrent-added-notification-command"
     46#define PREF_KEY_TORRENT_ADDED_NOTIFICATION_ENABLED      "torrent-added-notification-enabled"
     47#define PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_COMMAND   "torrent-complete-notification-command"
     48#define PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_ENABLED   "torrent-complete-notification-enabled"
     49#define PREF_KEY_TORRENT_COMPLETE_SOUND_COMMAND          "torrent-complete-sound-command"
     50#define PREF_KEY_TORRENT_COMPLETE_SOUND_ENABLED          "torrent-complete-sound-enabled"
     51#define PREF_KEY_USER_HAS_GIVEN_INFORMED_CONSENT         "user-has-given-informed-consent"
    4852
    4953enum
    5054{
  • gtk/notify.c

     
    1010 * $Id$
    1111 */
    1212
    13 #include <string.h> /* strcmp() */
    14 
    15 #ifdef HAVE_LIBCANBERRA
    16  #include <canberra-gtk.h>
    17 #endif
    18 
    19 #ifdef HAVE_GIO
    20  #include <gio/gio.h>
    21 #endif
    22 
    2313#include <glib/gi18n.h>
    24 #include "actions.h" /* NOTIFICATION_ICON */
    2514#include "conf.h"
    2615#include "notify.h"
    2716#include "tr-prefs.h"
    2817#include "util.h"
    2918
    30 #ifndef HAVE_LIBNOTIFY
    31 
    32 void gtr_notify_init( void ) { }
    33 void gtr_notify_torrent_completed( TrCore * core UNUSED, int torrent_id UNUSED ) { }
    34 void gtr_notify_torrent_added( const char * name UNUSED ) { }
    35 
    36 #else
    37  #include <libnotify/notify.h>
    38 
    3919void
    40 gtr_notify_init( void )
    41 {
    42     notify_init( "Transmission" );
    43 }
    44 
    45 struct notify_callback_data
    46 {
    47     TrCore * core;
    48     int torrent_id;
    49 };
    50 
    51 static void
    52 notify_callback_data_free( gpointer gdata )
    53 {
    54     struct notify_callback_data * data = gdata;
    55     g_object_unref( G_OBJECT( data->core ) );
    56     g_free( data );
    57 }
    58 
    59 static struct notify_callback_data *
    60 notify_callback_data_new( TrCore * core, int torrent_id )
    61 {
    62     struct notify_callback_data * data = g_new( struct notify_callback_data, 1 );
    63     data->core = core;
    64     data->torrent_id = torrent_id;
    65     g_object_ref( G_OBJECT( data->core ) );
    66     return data;
    67 }
    68 
    69 static void
    70 notifyCallback( NotifyNotification  * n UNUSED,
    71                 const char          * action,
    72                 gpointer              gdata )
    73 {
    74     struct notify_callback_data * data = gdata;
    75     tr_torrent * tor = gtr_core_find_torrent( data->core, data->torrent_id );
    76 
    77     if( tor != NULL )
    78     {
    79         if( !strcmp( action, "folder" ) )
    80         {
    81             gtr_core_open_folder( data->core, data->torrent_id );
    82         }
    83         else if( !strcmp( action, "file" ) )
    84         {
    85             const tr_info * inf = tr_torrentInfo( tor );
    86             const char * dir = tr_torrentGetDownloadDir( tor );
    87             char * path = g_build_filename( dir, inf->files[0].name, NULL );
    88             gtr_open_file( path );
    89             g_free( path );
    90         }
    91     }
    92 }
    93 
    94 static gboolean
    95 can_support_actions( void )
    96 {
    97     static gboolean supported;
    98     static gboolean have_checked = FALSE;
    99 
    100     if( !have_checked )
    101     {
    102         GList * c;
    103         GList * caps = notify_get_server_caps( );
    104 
    105         have_checked = TRUE;
    106 
    107         for( c=caps; c && !supported; c=c->next )
    108             supported = !strcmp( "actions", (char*)c->data );
    109 
    110         g_list_foreach( caps, (GFunc)g_free, NULL );
    111         g_list_free( caps );
    112     }
    113 
    114     return supported;
    115 }
    116 
    117 static void
    118 addIcon( NotifyNotification * notify )
    119 {
    120     int size = 32;
    121     GtkIconTheme * theme;
    122     GdkPixbuf * icon;
    123 
    124     gtk_icon_size_lookup( GTK_ICON_SIZE_DIALOG, &size, &size );
    125     theme = gtk_icon_theme_get_default( );
    126     icon = gtk_icon_theme_load_icon( theme, NOTIFICATION_ICON, size, 0, NULL );
    127 
    128     if( icon != NULL )
    129     {
    130         notify_notification_set_icon_from_pixbuf( notify, icon );
    131         g_object_unref( icon );
    132     }
    133 }
    134 
    135 static NotifyNotification *
    136 tr_notify_notification_new( const char * summary,
    137                             const char * body,
    138                             const char * icon )
    139 {
    140     NotifyNotification * n = notify_notification_new( summary, body, icon
    141 /* the fourth argument was removed in libnotify 0.7.0 */
    142 #if !defined(NOTIFY_VERSION_MINOR) || (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR < 7)
    143                                                      , NULL
    144 #endif
    145                                                             );
    146     return n;
    147 }
    148 
    149 void
    15020gtr_notify_torrent_completed( TrCore * core, int torrent_id )
    15121{
    152 #ifdef HAVE_LIBCANBERRA
    153     if( gtr_pref_flag_get( PREF_KEY_PLAY_DOWNLOAD_COMPLETE_SOUND ) )
     22    if( gtr_pref_flag_get( PREF_KEY_TORRENT_COMPLETE_SOUND_ENABLED ) )
    15423    {
    155         /* play the sound, using sounds from the naming spec */
    156         ca_context_play( ca_gtk_context_get (), 0,
    157                          CA_PROP_EVENT_ID, "complete-download",
    158                          CA_PROP_APPLICATION_NAME, g_get_application_name,
    159                          CA_PROP_EVENT_DESCRIPTION, _("Download complete"),
    160                          NULL);
     24        const char * cmd = gtr_pref_string_get( PREF_KEY_TORRENT_COMPLETE_SOUND_COMMAND );
     25        g_spawn_command_line_async( cmd, NULL );
    16126    }
    162 #endif
    16327
    164     if( gtr_pref_flag_get( PREF_KEY_SHOW_DESKTOP_NOTIFICATION ) )
     28    if( gtr_pref_flag_get( PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_ENABLED ) )
    16529    {
    166         NotifyNotification * n;
    167         tr_torrent * tor = gtr_core_find_torrent( core, torrent_id );
    168 
    169         n = tr_notify_notification_new( _( "Torrent Complete" ), tr_torrentName( tor ), NULL );
    170         addIcon( n );
    171 
    172         if( can_support_actions( ) )
    173         {
    174             const tr_info * inf = tr_torrentInfo( tor );
    175             if( inf->fileCount == 1 )
    176                 notify_notification_add_action(
    177                     n, "file", _( "Open File" ),
    178                     NOTIFY_ACTION_CALLBACK( notifyCallback ),
    179                     notify_callback_data_new( core, torrent_id ),
    180                     notify_callback_data_free );
    181 
    182             notify_notification_add_action(
    183                 n, "folder", _( "Open Folder" ),
    184                 NOTIFY_ACTION_CALLBACK( notifyCallback ),
    185                 notify_callback_data_new( core, torrent_id ),
    186                 notify_callback_data_free );
    187         }
    188 
    189         notify_notification_show( n, NULL );
     30        const tr_torrent * tor = gtr_core_find_torrent( core, torrent_id );
     31        const char * fmt = gtr_pref_string_get( PREF_KEY_TORRENT_COMPLETE_NOTIFICATION_COMMAND );
     32        char * cmd = g_strdup_printf( fmt, _( "Torrent Complete" ), ( tor ? tr_torrentName( tor ) : "" ) );
     33        g_spawn_command_line_async( cmd, NULL );
     34        g_free( cmd );
    19035    }
    19136}
    19237
    19338void
    19439gtr_notify_torrent_added( const char * name )
    19540{
    196     if( gtr_pref_flag_get( PREF_KEY_SHOW_DESKTOP_NOTIFICATION ) )
     41    if( gtr_pref_flag_get( PREF_KEY_TORRENT_ADDED_NOTIFICATION_ENABLED ) )
    19742    {
    198         NotifyNotification * n = tr_notify_notification_new( _( "Torrent Added" ), name, NULL );
    199         addIcon( n );
    200         notify_notification_set_timeout( n, NOTIFY_EXPIRES_DEFAULT );
    201         notify_notification_show( n, NULL );
     43        const char * fmt = gtr_pref_string_get( PREF_KEY_TORRENT_ADDED_NOTIFICATION_COMMAND );
     44        char * cmd = g_strdup_printf( fmt, _( "Torrent Added" ), name );
     45        g_spawn_command_line_async( cmd, NULL );
     46        g_free( cmd );
    20247    }
    20348}
    204 
    205 #endif
  • gtk/notify.h

     
    1515
    1616#include "tr-core.h"
    1717
    18 void gtr_notify_init( void );
    19 
    2018void gtr_notify_torrent_added     ( const char * name );
    2119
    2220void gtr_notify_torrent_completed ( TrCore * core, int torrent_id );
  • gtk/main.c

     
    5555#include "hig.h"
    5656#include "makemeta-ui.h"
    5757#include "msgwin.h"
    58 #include "notify.h"
    5958#include "open-dialog.h"
    6059#include "relocate.h"
    6160#include "stats.h"
     
    684683    if( configDir == NULL )
    685684        configDir = (char*) tr_getDefaultConfigDir( MY_CONFIG_NAME );
    686685
    687     gtr_notify_init( );
    688686    didinit = cf_init( configDir, NULL ); /* must come before actions_init */
    689687
    690688    setupsighandlers( ); /* set up handlers for fatal signals */
  • gtk/Makefile.am

     
    1515AM_CFLAGS = \
    1616    @LIBAPPINDICATOR_CFLAGS@ \
    1717    @LIBEVENT_CFLAGS@ \
    18     @LIBCANBERRA_CFLAGS@ \
    1918    @GCONF2_CFLAGS@ \
    2019    @GTK_CFLAGS@ \
    2120    @LIBCURL_CFLAGS@ \
    2221    @GIO_CFLAGS@ \
    23     @LIBNOTIFY_CFLAGS@ \
    2422    @DBUS_GLIB_CFLAGS@ \
    2523    @OPENSSL_CFLAGS@ \
    2624    @ZLIB_CFLAGS@ \
     
    9593    $(top_builddir)/libtransmission/libtransmission.a \
    9694    $(top_builddir)/third-party/miniupnp/libminiupnp.a \
    9795    $(top_builddir)/third-party/libnatpmp/libnatpmp.a \
    98     @LIBCANBERRA_LIBS@ \
    9996    @GCONF2_LIBS@ \
    10097    @DHT_LIBS@ \
    10198    @LIBUTP_LIBS@ \
    10299    @GTK_LIBS@ \
    103100    @GIO_LIBS@ \
    104101    @LIBAPPINDICATOR_LIBS@ \
    105     @LIBNOTIFY_LIBS@ \
    106102    @LIBEVENT_LIBS@ \
    107103    @DBUS_GLIB_LIBS@ \
    108104    @LIBCURL_LIBS@ \