Chuva de janelas

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

[ Hits: 513 ]

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

Decomposição em fatores primos

Exemplo de Menu

Despertador em C

Matriz Bidimensional

Entrar com um número e imprimir todos os seus divisores


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts