Chuva de janelas

Publicado por Beatriz Monteiro (última atualização em 28/02/2019)

[ Hits: 428 ]

Homepage: -

Download chuva.c




Programa para exibir na tela uma quantidade de janelas a ser definida pelo usuário, com elas sendo posicionadas aleatoriamente. Requer GTK+2 para funcionamento.

Em distribuições Debian-like, use o comando como root:

# apt install libgtk2.0-dev

Para compilar, use o comando:

$ gcc -o chuva chuva.c `pkg-config --libs --cflags gtk+-2.0`

Para executar:

$ ./chuva

  



Esconder código-fonte

#include <gtk/gtk.h>
#include <time.h>

void show_windows(GtkButton *button, GtkWidget *entry){
   const gchar* gfreq;
   gfreq = gtk_entry_get_text(GTK_ENTRY(entry));
   
   int intfreq = atoi(gfreq);

   for(int i = 0; i < intfreq; i++){
      srand(time(0)+i);
   
      GtkWidget *window;
      window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

      gtk_window_move(GTK_WINDOW(window), rand()%gdk_screen_width()+1, rand()%gdk_screen_height()+1);
      gtk_window_set_default_size(GTK_WINDOW(window), 150, 150);
      gtk_window_set_title(GTK_WINDOW(window), "Janela");

      gtk_widget_show(window);
   }
}

int main(int argc, char **argv){
   gtk_init(&argc, &argv);

   GtkWidget *window;
   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(window), "Chuva");
   gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
   gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
   g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

   GtkWidget *label;
   label = gtk_label_new("Frequência:");

   GtkWidget *entry;
   entry = gtk_entry_new();

   GtkWidget *button;
   button = gtk_button_new_with_label("Mágica!");
   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(show_windows), entry);

   GtkWidget *vbox;
   vbox = gtk_vbox_new(FALSE, 0);

   gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, 0, 0);
   gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, 0, 0);
   gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, 0, 5);

   gtk_container_add(GTK_CONTAINER(window), vbox);

   gtk_widget_show_all(window);

   gtk_main();   
}

Scripts recomendados

Programa que Exibe centro da tela

C split

[C] Decompositor de números em fatores primos

Sequência de Fibonacci em C

checkscan.h


  

Comentários
[1] Comentário enviado por Nick-us em 01/03/2019 - 15:11h

Funciona! Bom para estudar a criação de janelas no GTK. Achei curioso o nome que vc deu! Chuva de Janelas!
Parabéns pela Iniciativa!


Contribuir com comentário