source: trunk/gtk/util.h @ 12306

Last change on this file since 12306 was 12306, checked in by jordan, 11 years ago

(trunk gtk) more heap pruning: avoid unnecessary malloc() + free() calls in gtr_get_host_from_url()

  • Property svn:keywords set to Date Rev Author Id
File size: 5.4 KB
Line 
1/*
2 * This file Copyright (C) Mnemosyne LLC
3 *
4 * This file is licensed by the GPL version 2. Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id: util.h 12306 2011-04-04 16:54:09Z jordan $
11 */
12
13#ifndef GTR_UTIL_H
14#define GTR_UTIL_H
15
16#include <sys/types.h>
17#include <glib.h>
18#include <gtk/gtk.h>
19
20#include <libtransmission/transmission.h>
21
22extern const int mem_K;
23extern const char * mem_K_str;
24extern const char * mem_M_str;
25extern const char * mem_G_str;
26extern const char * mem_T_str;
27
28extern const int disk_K;
29extern const char * disk_K_str;
30extern const char * disk_M_str;
31extern const char * disk_G_str;
32extern const char * disk_T_str;
33
34extern const int speed_K;
35extern const char * speed_K_str;
36extern const char * speed_M_str;
37extern const char * speed_G_str;
38extern const char * speed_T_str;
39
40/* macro to shut up "unused parameter" warnings */
41#ifndef UNUSED
42 #define UNUSED G_GNUC_UNUSED
43#endif
44
45enum
46{
47    GTR_UNICODE_UP,
48    GTR_UNICODE_DOWN,
49    GTR_UNICODE_INF,
50    GTR_UNICODE_BULLET
51};
52const char * gtr_get_unicode_string( int );
53
54/* return a percent formatted string of either x.xx, xx.x or xxx */
55char* tr_strlpercent( char * buf, double x, size_t buflen );
56
57/* return a human-readable string for the size given in bytes. */
58char* tr_strlsize( char * buf, guint64  size, size_t buflen );
59
60/* return a human-readable string for the given ratio. */
61char* tr_strlratio( char * buf, double ratio, size_t buflen );
62
63/* return a human-readable string for the time given in seconds. */
64char* tr_strltime( char * buf, int secs, size_t buflen );
65
66/***
67****
68***/
69
70/* http://www.legaltorrents.com/some/announce/url --> legaltorrents.com */
71void gtr_get_host_from_url( char * buf, size_t buflen, const char * url );
72
73gboolean gtr_is_supported_url( const char * str );
74
75gboolean gtr_is_magnet_link( const char * str );
76
77gboolean gtr_is_hex_hashcode( const char * str );
78
79/***
80****
81***/
82
83typedef enum
84{
85    GTR_LOCKFILE_SUCCESS = 0,
86    GTR_LOCKFILE_EOPEN,
87    GTR_LOCKFILE_ELOCK
88}
89gtr_lockfile_state_t;
90
91gtr_lockfile_state_t gtr_lockfile( const char * filename );
92
93/***
94****
95***/
96
97void        gtr_open_uri( const char * uri );
98
99void        gtr_open_file( const char * path );
100
101gboolean    gtr_dbus_add_torrent( const char * filename );
102
103gboolean    gtr_dbus_present_window( void );
104
105const char* gtr_get_help_uri( void );
106
107/***
108****
109***/
110
111/* backwards-compatible wrapper around g_mkdir_with_parents() */
112int gtr_mkdir_with_parents( const char *name, int mode );
113
114/* backwards-compatible wrapper around gdk_threads_add_timeout_seconds() */
115guint gtr_timeout_add_seconds( guint seconds, GSourceFunc func, gpointer data );
116
117/* backwards-compatible wrapper around gdk_threads_add_idle() */
118guint gtr_idle_add( GSourceFunc  func, gpointer data );
119
120/* backwards-compatible wrapper around gtk_widget_set_tooltip_text() */
121void gtr_widget_set_tooltip_text( GtkWidget * w, const char * tip );
122
123/* backwards-compatible wrapper around gtk_widget_get_window() */
124GdkWindow* gtr_widget_get_window( GtkWidget * w );
125
126/* backwards-compatible wrapper around gtk_widget_get_realized() */
127gboolean gtr_widget_get_realized( GtkWidget * w );
128
129/* backwards-compatible wrapper around gtk_widget_set_visible() */
130void gtr_widget_set_visible( GtkWidget *, gboolean );
131
132/* backwards-compatible wrapper around g_object_ref_sink() */
133gpointer gtr_object_ref_sink( gpointer object );
134
135/* backwards-compatible wrapper around g_dngettext() */
136const gchar* gtr_ngettext( const gchar*, const gchar*, gulong );
137
138void gtr_dialog_set_content( GtkDialog * dialog, GtkWidget * content );
139
140/***
141****
142***/
143
144GtkWidget * gtr_priority_combo_new( void );
145#define gtr_priority_combo_get_value(w)     gtr_combo_box_get_active_enum(w)
146#define gtr_priority_combo_set_value(w,val) gtr_combo_box_set_active_enum(w,val)
147
148GtkWidget * gtr_combo_box_new_enum        ( const char * text_1, ... );
149int         gtr_combo_box_get_active_enum ( GtkComboBox * );
150void        gtr_combo_box_set_active_enum ( GtkComboBox *, int value );
151
152/***
153****
154***/
155
156void gtr_unrecognized_url_dialog( GtkWidget * parent, const char * url );
157
158void gtr_http_failure_dialog( GtkWidget * parent, const char * url, long response_code );
159
160void gtr_add_torrent_error_dialog( GtkWidget  * window_or_child,
161                                   int          err,
162                                   const char * filename );
163
164/* pop up the context menu if a user right-clicks.
165   if the row they right-click on isn't selected, select it. */
166gboolean on_tree_view_button_pressed( GtkWidget      * view,
167                                      GdkEventButton * event,
168                                      gpointer         unused );
169
170/* if the click didn't specify a row, clear the selection */
171gboolean on_tree_view_button_released( GtkWidget      * view,
172                                       GdkEventButton * event,
173                                       gpointer         unused );
174
175
176/* move a file to the trashcan if GIO is available; otherwise, delete it */
177int gtr_file_trash_or_remove( const char * filename );
178
179void gtr_paste_clipboard_url_into_entry( GtkWidget * entry );
180
181/* Only call gtk_label_set_text() if the new text differs from the old.
182 * This prevents the label from having to recalculate its size
183 * and prevents selected text in the label from being deselected */
184void gtr_label_set_text( GtkLabel * lb, const char * text );
185
186#endif /* GTR_UTIL_H */
Note: See TracBrowser for help on using the repository browser.