|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Progress Bars
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
NAME="GENERATOR"
|
|
Packit Service |
fb6fa5 |
CONTENT="Modular DocBook HTML Stylesheet Version 1.79">
|
|
Packit Service |
fb6fa5 |
REL="HOME"
|
|
Packit Service |
fb6fa5 |
TITLE="GTK+ 2.0 Tutorial"
|
|
Packit Service |
fb6fa5 |
HREF="book1.html">
|
|
Packit Service |
fb6fa5 |
REL="UP"
|
|
Packit Service |
fb6fa5 |
TITLE="Miscellaneous Widgets"
|
|
Packit Service |
fb6fa5 |
HREF="c753.html">
|
|
Packit Service |
fb6fa5 |
REL="PREVIOUS"
|
|
Packit Service |
fb6fa5 |
TITLE="The Tooltips Object"
|
|
Packit Service |
fb6fa5 |
HREF="x810.html">
|
|
Packit Service |
fb6fa5 |
REL="NEXT"
|
|
Packit Service |
fb6fa5 |
TITLE="Dialogs"
|
|
Packit Service |
fb6fa5 |
HREF="x861.html">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#FFFFFF"
|
|
Packit Service |
fb6fa5 |
TEXT="#000000"
|
|
Packit Service |
fb6fa5 |
LINK="#0000FF"
|
|
Packit Service |
fb6fa5 |
VLINK="#840084"
|
|
Packit Service |
fb6fa5 |
ALINK="#0000FF"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NAVHEADER"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
SUMMARY="Header navigation table"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
CELLPADDING="0"
|
|
Packit Service |
fb6fa5 |
CELLSPACING="0"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
COLSPAN="3"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
>GTK+ 2.0 Tutorial
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="10%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x810.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="P"
|
|
Packit Service |
fb6fa5 |
><<< Previous
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="80%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>Miscellaneous Widgets
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="10%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x861.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="N"
|
|
Packit Service |
fb6fa5 |
>Next >>>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
ALIGN="LEFT"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
NAME="SEC-PROGRESSBARS"
|
|
Packit Service |
fb6fa5 |
>Progress Bars
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Progress bars are used to show the status of an operation. They are
|
|
Packit Service |
fb6fa5 |
pretty easy to use, as you will see with the code below. But first
|
|
Packit Service |
fb6fa5 |
lets start out with the calls to create a new progress bar.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>GtkWidget *gtk_progress_bar_new( void );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Now that the progress bar has been created we can use it.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>void gtk_progress_bar_set_fraction ( GtkProgressBar *pbar,
|
|
Packit Service |
fb6fa5 |
gdouble fraction );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>The first argument is the progress bar you wish to operate on, and the
|
|
Packit Service |
fb6fa5 |
second argument is the amount "completed", meaning the amount the
|
|
Packit Service |
fb6fa5 |
progress bar has been filled from 0-100%. This is passed to the
|
|
Packit Service |
fb6fa5 |
function as a real number ranging from 0 to 1.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>GTK v1.2 has added new functionality to the progress bar that enables
|
|
Packit Service |
fb6fa5 |
it to display its value in different ways, and to inform the user of
|
|
Packit Service |
fb6fa5 |
its current value and its range.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>A progress bar may be set to one of a number of orientations using the
|
|
Packit Service |
fb6fa5 |
function
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>void gtk_progress_bar_set_orientation( GtkProgressBar *pbar,
|
|
Packit Service |
fb6fa5 |
GtkProgressBarOrientation orientation );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>The
|
|
Packit Service |
fb6fa5 |
CLASS="LITERAL"
|
|
Packit Service |
fb6fa5 |
>orientation
|
|
Packit Service |
fb6fa5 |
> argument may take one of the following
|
|
Packit Service |
fb6fa5 |
values to indicate the direction in which the progress bar moves:
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
> GTK_PROGRESS_LEFT_TO_RIGHT
|
|
Packit Service |
fb6fa5 |
GTK_PROGRESS_RIGHT_TO_LEFT
|
|
Packit Service |
fb6fa5 |
GTK_PROGRESS_BOTTOM_TO_TOP
|
|
Packit Service |
fb6fa5 |
GTK_PROGRESS_TOP_TO_BOTTOM
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>As well as indicating the amount of progress that has occured, the
|
|
Packit Service |
fb6fa5 |
progress bar may be set to just indicate that there is some activity.
|
|
Packit Service |
fb6fa5 |
This can be useful in situations where progress cannot be measured against
|
|
Packit Service |
fb6fa5 |
a value range. The following function indicates that some progress has been
|
|
Packit Service |
fb6fa5 |
made.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>void gtk_progress_bar_pulse ( GtkProgressBar *progress );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>The step size of the activity indicator is set using the following
|
|
Packit Service |
fb6fa5 |
function.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>void gtk_progress_bar_set_pulse_step( GtkProgressBar *pbar,
|
|
Packit Service |
fb6fa5 |
gdouble fraction );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>When not in activity mode, the progress bar can also display a
|
|
Packit Service |
fb6fa5 |
configurable text string within its trough, using the following
|
|
Packit Service |
fb6fa5 |
function.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>void gtk_progress_bar_set_text( GtkProgressBar *progress,
|
|
Packit Service |
fb6fa5 |
const gchar *text );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NOTE"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NOTE"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="25"
|
|
Packit Service |
fb6fa5 |
ALIGN="CENTER"
|
|
Packit Service |
fb6fa5 |
VALIGN="TOP"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
SRC="./stylesheet-images/note.gif"
|
|
Packit Service |
fb6fa5 |
HSPACE="5"
|
|
Packit Service |
fb6fa5 |
ALT="Note">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
ALIGN="LEFT"
|
|
Packit Service |
fb6fa5 |
VALIGN="TOP"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Note that gtk_progress_set_text() doesn't support the printf()-like formatting
|
|
Packit Service |
fb6fa5 |
of the GTK+ 1.2 Progressbar.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>You can turn off the display of the string by calling gtk_progess_bar_set_text()
|
|
Packit Service |
fb6fa5 |
again with NULL as second argument.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>The current text setting of a progressbar can be retrieved with the
|
|
Packit Service |
fb6fa5 |
following function. Do not free the returned string.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>const gchar *gtk_progress_bar_get_text( GtkProgressBar *pbar );
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Progress Bars are usually used with timeouts or other such functions
|
|
Packit Service |
fb6fa5 |
(see section on
|
|
Packit Service |
fb6fa5 |
HREF="c1759.html"
|
|
Packit Service |
fb6fa5 |
>Timeouts, I/O and Idle Functions
|
|
Packit Service |
fb6fa5 |
>)
|
|
Packit Service |
fb6fa5 |
to give the illusion of multitasking. All will employ the
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_fraction() or gtk_progress_bar_pulse() functions in the
|
|
Packit Service |
fb6fa5 |
same manner.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Here is an example of the progress bar, updated using timeouts. This
|
|
Packit Service |
fb6fa5 |
code also shows you how to reset the Progress Bar.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="INLINEMEDIAOBJECT"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
SRC="images/progressbar.png">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>
#include <gtk/gtk.h>
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
typedef struct _ProgressData {
|
|
Packit Service |
fb6fa5 |
GtkWidget *window;
|
|
Packit Service |
fb6fa5 |
GtkWidget *pbar;
|
|
Packit Service |
fb6fa5 |
int timer;
|
|
Packit Service |
fb6fa5 |
gboolean activity_mode;
|
|
Packit Service |
fb6fa5 |
} ProgressData;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Update the value of the progress bar so that we get
|
|
Packit Service |
fb6fa5 |
* some movement */
|
|
Packit Service |
fb6fa5 |
static gboolean progress_timeout( gpointer data )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata = (ProgressData *)data;
|
|
Packit Service |
fb6fa5 |
gdouble new_val;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (pdata->activity_mode)
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
|
|
Packit Service |
fb6fa5 |
else
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
/* Calculate the value of the progress bar using the
|
|
Packit Service |
fb6fa5 |
* value range set in the adjustment object */
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
new_val = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (pdata->pbar)) + 0.01;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (new_val > 1.0)
|
|
Packit Service |
fb6fa5 |
new_val = 0.0;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Set the new value */
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), new_val);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* As this is a timeout function, return TRUE so that it
|
|
Packit Service |
fb6fa5 |
* continues to get called */
|
|
Packit Service |
fb6fa5 |
return TRUE;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Callback that toggles the text display within the progress bar trough */
|
|
Packit Service |
fb6fa5 |
static void toggle_show_text( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
const gchar *text;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
text = gtk_progress_bar_get_text (GTK_PROGRESS_BAR (pdata->pbar));
|
|
Packit Service |
fb6fa5 |
if (text && *text)
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "");
|
|
Packit Service |
fb6fa5 |
else
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "some text");
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Callback that toggles the activity mode of the progress bar */
|
|
Packit Service |
fb6fa5 |
static void toggle_activity_mode( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
pdata->activity_mode = !pdata->activity_mode;
|
|
Packit Service |
fb6fa5 |
if (pdata->activity_mode)
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
|
|
Packit Service |
fb6fa5 |
else
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), 0.0);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Callback that toggles the orientation of the progress bar */
|
|
Packit Service |
fb6fa5 |
static void toggle_orientation( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
switch (gtk_progress_bar_get_orientation (GTK_PROGRESS_BAR (pdata->pbar))) {
|
|
Packit Service |
fb6fa5 |
case GTK_PROGRESS_LEFT_TO_RIGHT:
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
|
Packit Service |
fb6fa5 |
GTK_PROGRESS_RIGHT_TO_LEFT);
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
case GTK_PROGRESS_RIGHT_TO_LEFT:
|
|
Packit Service |
fb6fa5 |
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
|
Packit Service |
fb6fa5 |
GTK_PROGRESS_LEFT_TO_RIGHT);
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
default:;
|
|
Packit Service |
fb6fa5 |
/* do nothing */
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Clean up allocated memory and remove the timer */
|
|
Packit Service |
fb6fa5 |
static void destroy_progress( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_source_remove (pdata->timer);
|
|
Packit Service |
fb6fa5 |
pdata->timer = 0;
|
|
Packit Service |
fb6fa5 |
pdata->window = NULL;
|
|
Packit Service |
fb6fa5 |
g_free (pdata);
|
|
Packit Service |
fb6fa5 |
gtk_main_quit ();
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
int main( int argc,
|
|
Packit Service |
fb6fa5 |
char *argv[])
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
ProgressData *pdata;
|
|
Packit Service |
fb6fa5 |
GtkWidget *align;
|
|
Packit Service |
fb6fa5 |
GtkWidget *separator;
|
|
Packit Service |
fb6fa5 |
GtkWidget *table;
|
|
Packit Service |
fb6fa5 |
GtkWidget *button;
|
|
Packit Service |
fb6fa5 |
GtkWidget *check;
|
|
Packit Service |
fb6fa5 |
GtkWidget *vbox;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_init (&argc, &argv);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Allocate memory for the data that is passed to the callbacks */
|
|
Packit Service |
fb6fa5 |
pdata = g_malloc (sizeof (ProgressData));
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
pdata->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
Packit Service |
fb6fa5 |
gtk_window_set_resizable (GTK_WINDOW (pdata->window), TRUE);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
g_signal_connect (pdata->window, "destroy",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (destroy_progress),
|
|
Packit Service |
fb6fa5 |
(gpointer) pdata);
|
|
Packit Service |
fb6fa5 |
gtk_window_set_title (GTK_WINDOW (pdata->window), "GtkProgressBar");
|
|
Packit Service |
fb6fa5 |
gtk_container_set_border_width (GTK_CONTAINER (pdata->window), 0);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
vbox = gtk_vbox_new (FALSE, 5);
|
|
Packit Service |
fb6fa5 |
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
|
|
Packit Service |
fb6fa5 |
gtk_container_add (GTK_CONTAINER (pdata->window), vbox);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (vbox);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Create a centering alignment object */
|
|
Packit Service |
fb6fa5 |
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
|
Packit Service |
fb6fa5 |
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 5);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (align);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Create the GtkProgressBar */
|
|
Packit Service |
fb6fa5 |
pdata->pbar = gtk_progress_bar_new ();
|
|
Packit Service |
fb6fa5 |
pdata->activity_mode = FALSE;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_container_add (GTK_CONTAINER (align), pdata->pbar);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (pdata->pbar);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Add a timer callback to update the value of the progress bar */
|
|
Packit Service |
fb6fa5 |
pdata->timer = g_timeout_add (100, progress_timeout, pdata);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
separator = gtk_hseparator_new ();
|
|
Packit Service |
fb6fa5 |
gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (separator);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* rows, columns, homogeneous */
|
|
Packit Service |
fb6fa5 |
table = gtk_table_new (2, 3, FALSE);
|
|
Packit Service |
fb6fa5 |
gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (table);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Add a check button to select displaying of the trough text */
|
|
Packit Service |
fb6fa5 |
check = gtk_check_button_new_with_label ("Show text");
|
|
Packit Service |
fb6fa5 |
gtk_table_attach (GTK_TABLE (table), check, 0, 1, 0, 1,
|
|
Packit Service |
fb6fa5 |
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
|
|
Packit Service |
fb6fa5 |
5, 5);
|
|
Packit Service |
fb6fa5 |
g_signal_connect (check, "clicked",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (toggle_show_text),
|
|
Packit Service |
fb6fa5 |
pdata);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (check);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Add a check button to toggle activity mode */
|
|
Packit Service |
fb6fa5 |
check = gtk_check_button_new_with_label ("Activity mode");
|
|
Packit Service |
fb6fa5 |
gtk_table_attach (GTK_TABLE (table), check, 0, 1, 1, 2,
|
|
Packit Service |
fb6fa5 |
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
|
|
Packit Service |
fb6fa5 |
5, 5);
|
|
Packit Service |
fb6fa5 |
g_signal_connect (check, "clicked",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (toggle_activity_mode),
|
|
Packit Service |
fb6fa5 |
pdata);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (check);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Add a check button to toggle orientation */
|
|
Packit Service |
fb6fa5 |
check = gtk_check_button_new_with_label ("Right to Left");
|
|
Packit Service |
fb6fa5 |
gtk_table_attach (GTK_TABLE (table), check, 0, 1, 2, 3,
|
|
Packit Service |
fb6fa5 |
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
|
|
Packit Service |
fb6fa5 |
5, 5);
|
|
Packit Service |
fb6fa5 |
g_signal_connect (check, "clicked",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (toggle_orientation),
|
|
Packit Service |
fb6fa5 |
pdata);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (check);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Add a button to exit the program */
|
|
Packit Service |
fb6fa5 |
button = gtk_button_new_with_label ("close");
|
|
Packit Service |
fb6fa5 |
g_signal_connect_swapped (button, "clicked",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (gtk_widget_destroy),
|
|
Packit Service |
fb6fa5 |
pdata->window);
|
|
Packit Service |
fb6fa5 |
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* This makes it so the button is the default. */
|
|
Packit Service |
fb6fa5 |
gtk_widget_set_can_default (button, TRUE);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* This grabs this button to be the default button. Simply hitting
|
|
Packit Service |
fb6fa5 |
* the "Enter" key will cause this button to activate. */
|
|
Packit Service |
fb6fa5 |
gtk_widget_grab_default (button);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (button);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (pdata->window);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_main ();
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return 0;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NAVFOOTER"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
ALIGN="LEFT"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%">
|
|
Packit Service |
fb6fa5 |
SUMMARY="Footer navigation table"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
CELLPADDING="0"
|
|
Packit Service |
fb6fa5 |
CELLSPACING="0"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x810.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="P"
|
|
Packit Service |
fb6fa5 |
><<< Previous
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="34%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="book1.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="H"
|
|
Packit Service |
fb6fa5 |
>Home
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x861.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="N"
|
|
Packit Service |
fb6fa5 |
>Next >>>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>The Tooltips Object
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="34%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="c753.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="U"
|
|
Packit Service |
fb6fa5 |
>Up
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>Dialogs
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|