Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <gtk/gtk.h>
- /* Cria pixbuf a partir de um arquivo */
- GdkPixbuf *create_pixbuf_from_file(const gchar * filename) {
- GdkPixbuf *pixbuf;
- GError *error = NULL;
- pixbuf = gdk_pixbuf_new_from_file(filename, &error);
- if(!pixbuf) {
- fprintf(stderr, "%s\n", error->message);
- g_error_free(error);
- }
- return pixbuf;
- }
- /* Cria pixbuf a partir de um buffer */
- GdkPixbuf *create_pixbuf_from_buffer(const gchar * buffer) {
- GdkPixbuf *pixbuf;
- GError *error = NULL;
- int width = 640;
- int height = 480;
- pixbuf = gdk_pixbuf_new_from_data(buffer,
- GDK_COLORSPACE_RGB,
- FALSE,
- 8,
- width,
- height,
- width * 3, // 3 bits por pixel
- NULL,
- NULL );
- if(!pixbuf) {
- fprintf(stderr, "%s\n", error->message);
- g_error_free(error);
- }
- return pixbuf;
- }
- expose_event_callback (GtkWidget *widget, GdkEventExpose * event, gpointer data) {
- gdk_draw_pixbuf (widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE (widget)], //Graphic Context
- pixbuf,
- 0, 0, -1, -1,
- 0, 64 * 360);
- return TRUE;
- };
- int main (int argc, char *argv[])
- {
- /*Containers*/
- GtkWidget *win = NULL;
- GtkWidget *vbox;
- /*Menu*/
- GtkWidget *menubarPrincipal;
- GtkWidget *menuDropDown;
- GtkWidget *arquivo;
- GtkWidget *sair;
- GtkWidget *drwArea;
- /* Inicializa GTK+ */
- g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
- gtk_init (&argc, &argv);
- g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
- /* Cria janela principal */
- win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_container_set_border_width (GTK_CONTAINER (win), 8);
- gtk_window_set_title (GTK_WINDOW (win), "Watcher");
- gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
- gtk_window_maximize(GTK_WINDOW (win));
- gtk_window_set_icon(GTK_WINDOW (win), create_pixbuf_from_file("images/icons/web.png"));
- //gtk_widget_realize (win);
- /* Cria caixa vertical do menu principal */
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(win), vbox);
- /*Cria os menus*/
- menubarPrincipal = gtk_menu_bar_new();
- menuDropDown = gtk_menu_new();
- /*Cria os itens de menu */
- // 1 - Menu principal
- arquivo = gtk_menu_item_new_with_label("Arquivo");
- // 2 - Submenus
- sair = gtk_menu_item_new_with_label("Sair");
- /*Aplica menus dropDown nos menus principais*/
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(arquivo), menuDropDown);
- /* Posiciona os itens de menu no menuShell */
- gtk_menu_shell_append(GTK_MENU_SHELL(menuDropDown), sair);
- gtk_menu_shell_append(GTK_MENU_SHELL(menubarPrincipal), arquivo);
- /*Empacota tudo na caixa vertical*/
- gtk_box_pack_start(GTK_BOX(vbox), menubarPrincipal, FALSE, FALSE, 0);
- /*Cria a Drawing Area */
- drwArea = gtk_drawing_area_new();
- gtk_widget_set_size_request(drwArea, 640, 480);
- gtk_container_add(GTK_CONTAINER(win), drwArea);
- /* Conecta os sinais aos eventos */
- g_signal_connect (win, "destroy", gtk_main_quit, NULL);
- g_signal_connect(G_OBJECT(sair), "activate",
- G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(G_OBJECT(drwArea), "expose_event",
- G_CALLBACK(expose_event_callback), NULL);
- /* Enter the main loop */
- gtk_widget_show_all (win);
- gtk_main ();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement