mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-19 09:50:06 +00:00
86 lines
2.3 KiB
C
86 lines
2.3 KiB
C
|
/* This file extracted from the GTK tutorial. */
|
||
|
|
||
|
/* pixmap.c */
|
||
|
|
||
|
#include <gtk/gtk.h>
|
||
|
|
||
|
|
||
|
/* XPM data of Open-File icon */
|
||
|
static const char * xpm_data[] = {
|
||
|
"16 16 3 1",
|
||
|
" c None",
|
||
|
". c #000000000000",
|
||
|
"X c #FFFFFFFFFFFF",
|
||
|
" ",
|
||
|
" ...... ",
|
||
|
" .XXX.X. ",
|
||
|
" .XXX.XX. ",
|
||
|
" .XXX.XXX. ",
|
||
|
" .XXX..... ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" .XXXXXXX. ",
|
||
|
" ......... ",
|
||
|
" ",
|
||
|
" "};
|
||
|
|
||
|
|
||
|
/* when invoked (via signal delete_event), terminates the application.
|
||
|
*/
|
||
|
void close_application( GtkWidget *widget, gpointer *data ) {
|
||
|
gtk_main_quit();
|
||
|
}
|
||
|
|
||
|
|
||
|
/* is invoked when the button is clicked. It just prints a message.
|
||
|
*/
|
||
|
void button_clicked( GtkWidget *widget, gpointer *data ) {
|
||
|
printf( "button clicked\n" );
|
||
|
}
|
||
|
|
||
|
int main( int argc, char *argv[] )
|
||
|
{
|
||
|
/* GtkWidget is the storage type for widgets */
|
||
|
GtkWidget *window, *pixmapwid, *button;
|
||
|
GdkPixmap *pixmap;
|
||
|
GdkBitmap *mask;
|
||
|
GtkStyle *style;
|
||
|
|
||
|
/* create the main window, and attach delete_event signal to terminating
|
||
|
the application */
|
||
|
gtk_init( &argc, &argv );
|
||
|
window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
|
||
|
gtk_signal_connect( GTK_OBJECT (window), "delete_event",
|
||
|
GTK_SIGNAL_FUNC (close_application), NULL );
|
||
|
gtk_container_border_width( GTK_CONTAINER (window), 10 );
|
||
|
gtk_widget_show( window );
|
||
|
|
||
|
/* now for the pixmap from gdk */
|
||
|
style = gtk_widget_get_style( window );
|
||
|
pixmap = gdk_pixmap_create_from_xpm_d( window->window, &mask,
|
||
|
&style->bg[GTK_STATE_NORMAL],
|
||
|
(gchar **)xpm_data );
|
||
|
|
||
|
/* a pixmap widget to contain the pixmap */
|
||
|
pixmapwid = gtk_pixmap_new( pixmap, mask );
|
||
|
gtk_widget_show( pixmapwid );
|
||
|
|
||
|
/* a button to contain the pixmap widget */
|
||
|
button = gtk_button_new();
|
||
|
gtk_container_add( GTK_CONTAINER(button), pixmapwid );
|
||
|
gtk_container_add( GTK_CONTAINER(window), button );
|
||
|
gtk_widget_show( button );
|
||
|
|
||
|
gtk_signal_connect( GTK_OBJECT(button), "clicked",
|
||
|
GTK_SIGNAL_FUNC(button_clicked), NULL );
|
||
|
|
||
|
/* show the window */
|
||
|
gtk_main ();
|
||
|
|
||
|
return 0;
|
||
|
}
|