1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| #include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<gtk/gtk.h>
#include<stdlib.h>
/*building data structures */
GtkWidget *motherbox, *temp;
typedef struct core{
GtkWidget *img,*label,*dirname,*coreVbox,*eventbox,*align,*outerVbox;
} *_icon ;
_icon icon=NULL, icon_t;
int icon_no=0;
/****************************/
/*Prototypes **************************************/
//void filecreator(char *);
void show_dir(char *, char *);
void butn_prsd(GtkWidget *, GdkEventButton *, gpointer );
void set_init_space(void);
/***************************************************/
int main (int argc, char *argv[]){
gtk_init(&argc,&argv);
set_init_space();
show_dir("/home/ecntrk","home");
gtk_main();
free(icon);
return 0;
}
void set_init_space(void){
GtkWidget *window, *scrlwindow;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request(GTK_WIDGET(window), 400,300);
gtk_window_set_title(GTK_WINDOW(window), "File Manager 1.1");
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
scrlwindow = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrlwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
motherbox = gtk_hbox_new(FALSE,0);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrlwindow), motherbox);
gtk_container_add(GTK_CONTAINER(window), scrlwindow);
temp = motherbox;
gtk_widget_show_all(window);
}
void show_dir(char *dname, char *labell){
icon = (_icon)realloc(icon, (++icon_no * sizeof(_icon)) );
icon_t=(_icon)(icon + icon_no -1);
/*creating core Vbox with icon image and label*/
icon_t->coreVbox = gtk_vbox_new(FALSE,0);
icon_t->label = gtk_label_new(labell);
icon_t->img = gtk_image_new_from_file("/home/ecntrk/folder.png");
icon_t->dirname = gtk_label_new(dname);//printf("tmp ptr %p butn_n0 %d\n",&temp, butn_no);
/*Packing !**************/
gtk_box_pack_start(GTK_BOX(icon_t->coreVbox), icon_t->img, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(icon_t->coreVbox), icon_t->label, FALSE, FALSE, 0);
/******************** ****************************/
/*eventbox *****************************************/
icon_t->eventbox = gtk_event_box_new();//printf("tmp ptr %p butn_n0 %d\n",&temp, butn_no);
gtk_container_add(GTK_CONTAINER(icon_t->eventbox), icon_t->coreVbox);
gtk_event_box_set_above_child(GTK_EVENT_BOX(icon_t->eventbox),TRUE);
gtk_widget_set_events (icon_t->eventbox, GDK_BUTTON_PRESS_MASK);
g_signal_connect (G_OBJECT (icon_t->eventbox), "button_press_event", G_CALLBACK (butn_prsd),(gpointer) icon_t->label);
/*****Alignment **************************************/
icon_t->align = gtk_alignment_new(.5,.5,0,0);
gtk_container_add(GTK_CONTAINER(icon_t->align), icon_t->eventbox);
icon_t->outerVbox = gtk_vbox_new(FALSE,0);//printf("tmp ptr %p butn_n0 %d\n",&temp, butn_no);
gtk_box_pack_start(GTK_BOX(icon_t->outerVbox),icon_t->align,FALSE,FALSE,0);
/*Icon package complete ! */
gtk_box_pack_start(GTK_BOX(temp),icon_t->outerVbox,FALSE,FALSE,0);
gtk_widget_show_all(icon_t->outerVbox);
}
void butn_prsd(GtkWidget *evntbx, GdkEventButton *event , gpointer labeltwo){
gchar *hu=(gchar *)gtk_label_get_text(GTK_LABEL(labeltwo));
g_print(" ** %s **",hu);
}
|