source: trunk/gtk/tr-core.h @ 12656

Last change on this file since 12656 was 12656, checked in by jordan, 10 years ago

(trunk gtk) first cut at using GApplication. This lets glib replace hundreds of lines of homegrown code. Whee!

  • Property svn:keywords set to Date Rev Author Id
File size: 6.0 KB
Line 
1/******************************************************************************
2 * $Id: tr-core.h 12656 2011-08-09 02:30:31Z jordan $
3 *
4 * Copyright (c) Transmission authors and contributors
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *****************************************************************************/
24
25#ifndef GTR_CORE_H
26#define GTR_CORE_H
27
28#include <glib-object.h>
29#include <gtk/gtk.h>
30
31#include <libtransmission/transmission.h>
32#include <libtransmission/bencode.h>
33
34#define TR_CORE_TYPE ( gtr_core_get_type() )
35#define TR_CORE(o) G_TYPE_CHECK_INSTANCE_CAST((o), TR_CORE_TYPE, TrCore)
36#define TR_IS_CORE(o) G_TYPE_CHECK_INSTANCE_TYPE((o), TR_CORE_TYPE )
37#define TR_CORE_CLASS(k) G_TYPE_CHECK_CLASS_CAST((k), TR_CORE_TYPE, TrCoreClass)
38#define TR_IS_CORE_CLASS(k) G_TYPE_CHECK_CLASS_TYPE((k), TR_CORE_TYPE )
39#define TR_CORE_GET_CLASS(o) G_TYPE_INSTANCE_GET_CLASS((o), TR_CORE_TYPE, TrCoreClass)
40
41typedef struct _TrCore
42{
43    GObject parent;
44
45    struct TrCorePrivate  * priv;
46}
47TrCore;
48
49enum tr_core_err
50{
51    TR_CORE_ERR_ADD_TORRENT_ERR  = TR_PARSE_ERR,
52    TR_CORE_ERR_ADD_TORRENT_DUP  = TR_PARSE_DUPLICATE,
53    TR_CORE_ERR_NO_MORE_TORRENTS = 1000 /* finished adding a batch */
54};
55
56typedef struct _TrCoreClass
57{
58    GObjectClass parent_class;
59
60    void (* add_error)         (TrCore*, enum tr_core_err, const char * name);
61    void (* add_prompt)        (TrCore*, gpointer ctor);
62    void (* blocklist_updated) (TrCore*, int ruleCount );
63    void (* busy)              (TrCore*, gboolean is_busy);
64    void (* prefs_changed)     (TrCore*, const char* key);
65    void (* port_tested)       (TrCore*, gboolean is_open);
66    void (* quit)              (TrCore*);
67}
68TrCoreClass;
69
70GType          gtr_core_get_type( void );
71
72TrCore *       gtr_core_new( tr_session * );
73
74void           gtr_core_close( TrCore* );
75
76/* Return the model used without incrementing the reference count */
77GtkTreeModel * gtr_core_model( TrCore * self );
78
79void           gtr_core_clear( TrCore * self );
80
81tr_session *   gtr_core_session( TrCore * self );
82
83size_t         gtr_core_get_active_torrent_count( TrCore * self );
84
85size_t         gtr_core_get_torrent_count( TrCore * self );
86
87tr_torrent *   gtr_core_find_torrent( TrCore * core, int id );
88
89void           gtr_core_pref_changed( TrCore * core, const char * key );
90
91
92/******
93*******
94******/
95
96/**
97 * Load saved state and return number of torrents added.
98 * May trigger one or more "error" signals with TR_CORE_ERR_ADD_TORRENT
99 */
100void gtr_core_load( TrCore * self, gboolean forcepaused );
101
102/**
103 * Add a list of torrents.
104 * This function assumes ownership of torrentFiles
105 *
106 * May pop up dialogs for each torrent if that preference is enabled.
107 * May trigger one or more "error" signals with TR_CORE_ERR_ADD_TORRENT
108 */
109void gtr_core_add_files( TrCore     * core,
110                         GSList     * files,
111                         gboolean     do_start,
112                         gboolean     do_prompt,
113                         gboolean     do_notify );
114
115/** @brief Add a torrent from a URL */
116bool gtr_core_add_from_url( TrCore * core, const char * url );
117
118/** @brief Add a torrent.
119    @param ctor this function assumes ownership of the ctor */
120void gtr_core_add_ctor( TrCore * core, tr_ctor * ctor );
121
122/** Add a torrent. */
123void gtr_core_add_torrent( TrCore*, tr_torrent*, gboolean do_notify );
124
125/**
126 * Notifies listeners that torrents have been added.
127 * This should be called after one or more tr_core_add*() calls.
128 */
129void gtr_core_torrents_added( TrCore * self );
130
131/******
132*******
133******/
134
135/* remove a torrent */
136void gtr_core_remove_torrent( TrCore * self, int id, gboolean delete_files );
137
138/* update the model with current torrent status */
139void gtr_core_update( TrCore * self );
140
141/**
142***  Set a preference value, save the prefs file, and emit the "prefs-changed" signal
143**/
144
145void gtr_core_set_pref       ( TrCore * self, const char * key, const char * val );
146void gtr_core_set_pref_bool  ( TrCore * self, const char * key, gboolean val );
147void gtr_core_set_pref_int   ( TrCore * self, const char * key, int val );
148void gtr_core_set_pref_double( TrCore * self, const char * key, double val );
149
150/**
151***
152**/
153
154void gtr_core_port_test( TrCore * core );
155
156void gtr_core_blocklist_update( TrCore * core );
157
158void gtr_core_exec( TrCore * core, const tr_benc * benc );
159
160void gtr_core_exec_json( TrCore * core, const char * json );
161
162void gtr_core_open_folder( TrCore * core, int torrent_id );
163
164
165/**
166***
167**/
168
169/* column names for the model used to store torrent information */
170/* keep this in sync with the type array in tr_core_init() in tr_core.c */
171enum
172{
173    MC_NAME_COLLATED,
174    MC_TORRENT,
175    MC_TORRENT_ID,
176    MC_SPEED_UP,
177    MC_SPEED_DOWN,
178    MC_RECHECK_PROGRESS,
179    MC_ACTIVE,
180    MC_ACTIVITY,
181    MC_FINISHED,
182    MC_PRIORITY,
183    MC_QUEUE_POSITION,
184    MC_TRACKERS,
185
186    /* tr_stat.error
187     * Tracked because ACTIVITY_FILTER_ERROR needs the row-changed events */
188    MC_ERROR,
189
190    /* tr_stat.{ peersSendingToUs + peersGettingFromUs + webseedsSendingToUs }
191     * Tracked because ACTIVITY_FILTER_ACTIVE needs the row-changed events */
192    MC_ACTIVE_PEER_COUNT,
193
194    MC_ROW_COUNT
195};
196
197
198#endif /* GTR_CORE_H */
Note: See TracBrowser for help on using the repository browser.