Untitled

 avatar
unknown
c_cpp
3 years ago
5.9 kB
1
Indexable
// Include gtk
#include <gtk/gtk.h>


void btn_clicked_1 (GtkButton *self, GPtrArray *textos);
void btn_clicked_2 (GtkButton *self, GPtrArray *textos);


static void on_activate (GtkApplication *app)
{
  GtkWidget *window = gtk_application_window_new (app);

  gtk_window_set_position (GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  //gtk_window_set_default_size(GTK_WINDOW(window), 300,200);
  gtk_window_set_default_size(GTK_WINDOW(window), 800,500);
  //gtk_container_set_border_width(GTK_CONTAINER(window),10);

  GtkWidget *header = g_object_new(
    GTK_TYPE_HEADER_BAR,
    "visible", TRUE,
    "show-close-button", TRUE,
    "title", "Installer Arch Linux - Arcris",
    NULL
  );

  GtkWidget *menu1 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Bienvenida",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *menu2 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Ubicación",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *menu3 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Disco",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *menu4 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Usuario",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *menu5 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Escritorio",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );


  GtkWidget *menu6 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Extras",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );


  GtkWidget *menu7 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Instalación",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );


  GtkWidget *menu8 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "Finalizar",
    "halign", GTK_ALIGN_START,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );


  GtkWidget *menu9 = g_object_new(
    GTK_TYPE_LABEL,
    "visible", TRUE,
    "label", "    Youtube:\nCodigo Cristo",
    "halign", GTK_ALIGN_CENTER,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );


  GtkWidget *box_principal = g_object_new(
    GTK_TYPE_BOX,
    "visible", TRUE,
    "orientation", GTK_ORIENTATION_HORIZONTAL,
    NULL
  );

  GtkWidget *btn1 = g_object_new(
    GTK_TYPE_BUTTON,
    "visible", TRUE,
    "label", "Windows",
    "halign", GTK_ALIGN_CENTER,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *btn2 = g_object_new(
    GTK_TYPE_BUTTON,
    "visible", TRUE,
    "label", "Salir",
    "halign", GTK_ALIGN_CENTER,
    "valign", GTK_ALIGN_CENTER,
    NULL
  );

  GtkWidget *box_menu= g_object_new(
    GTK_TYPE_BOX,
    "visible", TRUE,
    "orientation", GTK_ORIENTATION_VERTICAL,
    "spacing", 10,
    NULL
  );

  GtkWidget *box_botones= g_object_new(
    GTK_TYPE_BOX,
    "visible", TRUE,
    "orientation", GTK_ORIENTATION_HORIZONTAL,
    "spacing", 10,
    NULL
  );




  GdkPixbuf *logoscale = gdk_pixbuf_new_from_file_at_scale("Logo.png",100,100,TRUE,NULL);
  GtkWidget *logo = gtk_image_new_from_pixbuf (logoscale);

  GtkWidget *separador = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);

  GPtrArray *textos = g_ptr_array_new();
  g_ptr_array_add(textos, menu1);
  g_ptr_array_add(textos, menu2);

  gtk_window_set_titlebar(GTK_WINDOW(window), header);
  gtk_box_pack_start(GTK_BOX(box_principal), box_menu, FALSE, TRUE, 15);
  gtk_box_pack_start(GTK_BOX(box_principal), separador, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(box_principal), box_botones, TRUE, FALSE, 0);

  gtk_box_pack_start(GTK_BOX(box_menu), logo, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu1, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu2, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu3, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu4, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu5, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu6, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu7, FALSE, FALSE, 5);
  gtk_box_pack_start(GTK_BOX(box_menu), menu8, FALSE, FALSE, 5);
  gtk_box_pack_end(GTK_BOX(box_menu), menu9, TRUE, FALSE, 5);

  gtk_box_pack_start(GTK_BOX(box_botones), btn1, TRUE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(box_botones), btn2, TRUE, FALSE, 0);
  gtk_container_add(GTK_CONTAINER(window), box_principal);




  g_signal_connect(btn1, "clicked", G_CALLBACK(btn_clicked_1), textos);
  g_signal_connect(btn2, "clicked", G_CALLBACK(btn_clicked_2), textos);
  g_signal_connect_swapped (G_OBJECT(window), "destroy", G_CALLBACK (gtk_window_close), window);
  gtk_widget_show_all (window);

}

int main (int argc, char *argv[]) 
{

  GtkApplication *app = gtk_application_new ("com.github.CodigoCristo.Arcris",
                                             G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL);
  return g_application_run (G_APPLICATION (app), argc, argv);
}





void btn_clicked_1 (GtkButton *self, GPtrArray *textos) {

  gtk_label_set_label (GTK_LABEL ( g_ptr_array_index(textos,0) ), "Acción 1");
  gtk_label_set_label (GTK_LABEL ( g_ptr_array_index(textos,1) ), "Acción 1");

}

void btn_clicked_2 (GtkButton *self, GPtrArray *textos) {

  gtk_label_set_label (GTK_LABEL ( g_ptr_array_index(textos,0) ), "Acción 2");
  gtk_label_set_label (GTK_LABEL ( g_ptr_array_index(textos,1) ), "Acción 2");

}