From Marc Bevandi:
[obnox/wireshark/wip.git] / progress_dlg.h
1 /* progress_dlg.h
2  * Definitions for progress dialog box routines
3  *
4  * $Id$
5  *
6  * Wireshark - Network traffic analyzer
7  * By Gerald Combs <gerald@wireshark.org>
8  * Copyright 1998 Gerald Combs
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23  */
24
25 #ifndef __PROGRESS_DLG_H__
26 #define __PROGRESS_DLG_H__
27
28 /** @file
29  *  Progress (modal) dialog box routines.
30  *  @ingroup dialog_group
31  */
32
33 /** Progress dialog data. */
34 struct progdlg;
35
36 /** Progress dialog data. */
37 typedef struct progdlg progdlg_t;
38
39 /**
40  * Create and pop up the progress dialog. Allocates a "progdlg_t"
41  * and initialize it to contain all information the implementation
42  * needs in order to manipulate the dialog, and return a pointer to
43  * it.
44  *
45  * @param task_title the task to do, e.g. "Loading"
46  * @param item_title the item to do, e.g. "capture.cap"
47  * @param terminate_is_stop TRUE if the operation can't be cancelled, just
48  *   stopped (i.e., it has a "Stop" button and clicking it doesn't undo
49  *   anything already done), FALSE if it can
50  * @param stop_flag a pointer to a Boolean variable that will be
51  *   set to TRUE if the user hits that button
52  * @return the newly created progress dialog
53  */
54 progdlg_t *create_progress_dlg(const gchar *task_title, const gchar *item_title,
55     gboolean terminate_is_stop, gboolean *stop_flag);
56
57 /**
58  * Create a progress dialog, but only if it's not likely to disappear
59  * immediately. This can be disconcerting for the user. 
60  *
61  * @param task_title the task to do, e.g. "Loading"
62  * @param item_title the item to do, e.g. "capture.cap"
63  * @param terminate_is_stop TRUE if the operation can't be cancelled, just
64  *   stopped (i.e., it has a "Stop" button and clicking it doesn't undo
65  *   anything already done), FALSE if it can
66  * @param stop_flag a pointer to a Boolean variable that will be
67  *   set to TRUE if the user hits that button
68  * @param start_time a pointer to a GTimeVal structure which holds
69  *   the time at which the caller started to process the data
70  * @param progress the current progress (0..1)
71  * @return the newly created progress dialog
72  */
73 progdlg_t *
74 delayed_create_progress_dlg(const gchar *task_title, const gchar *item_title,
75     gboolean terminate_is_stop, gboolean *stop_flag,
76     const GTimeVal *start_time, gfloat progress);
77
78 /**
79  * Update the progress information of the progress dialog box.
80  *
81  * @param dlg the progress dialog from create_progress_dlg()
82  * @param percentage the current percentage value (0..1)
83  * @param status the new status string to show, e.g. "3000KB of 6000KB"
84  */
85 void update_progress_dlg(progdlg_t *dlg, gfloat percentage, const gchar *status);
86
87 /**
88  * Destroy the progress bar.
89  *
90  * @param dlg the progress dialog from create_progress_dlg()
91  */
92 void destroy_progress_dlg(progdlg_t *dlg);
93
94 #endif /* __PROGRESS_DLG_H__ */