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
|
#include <gtk/gtk.h>
static void destroy(GtkWidget *widget ,gpointer pointer) ;
static gboolean delete_event(GtkWidget *widget,GdkEvent *event,gpointer pointer) ;
void new_file_set(GtkButton *button, GtkWidget *left_notebook) ;
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),"title") ;
gtk_window_maximize(GTK_WINDOW(window));
GtkWidget *main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0) ;
GtkWidget *open_file_button = gtk_button_new_with_label("Open file") ;
GtkWidget *left_notebook = gtk_notebook_new() ; /** Dynamically files add as content **/
gtk_notebook_set_scrollable(GTK_NOTEBOOK(left_notebook), TRUE);
g_signal_connect(G_OBJECT(open_file_button),"clicked",G_CALLBACK(new_file_set),left_notebook) ;
GtkWidget *right_notebook = gtk_notebook_new() ; /** Get only one page and should be fixed size. **/
gtk_widget_set_size_request(right_notebook, 255,-1) ; /** The width should be fixed. **/
GtkWidget *main_paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL) ;
/** Uncomment to get a visual view:
GtkWidget *button_test1 = gtk_button_new_with_label("test1") ;
GtkWidget *button_test2 = gtk_button_new_with_label("test2") ;
gtk_notebook_append_page(GTK_NOTEBOOK(left_notebook),button_test1,NULL) ;
gtk_notebook_append_page(GTK_NOTEBOOK(right_notebook),button_test2,NULL) ;
**/
gtk_paned_pack1(GTK_PANED(main_paned),
left_notebook, /** Child widget */
TRUE, /** should this child expand when the paned widget is resized. **/
FALSE); /** can this child be made smaller than its requisition. **/
gtk_paned_pack2(GTK_PANED(main_paned),
right_notebook, /** Child widget */
FALSE, /** should this child expand when the paned widget is resized. */
FALSE); /** can this child be made smaller than its requisition. */
gtk_box_pack_start(GTK_BOX(main_vbox), open_file_button, FALSE, FALSE, 0) ;
gtk_box_pack_start(GTK_BOX(main_vbox), main_paned, TRUE, TRUE, 0) ;
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL) ;
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL) ;
gtk_container_add(GTK_CONTAINER(window),main_vbox) ;
gtk_widget_show_all(window) ;
gtk_main() ;
return 0 ;
}
void new_file_set(GtkButton *button, GtkWidget *left_notebook) {
/** Here we set a new page to left_notebook with the content of the selected file **/
/** Something like this:
*
* gtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL) ;
*
* gtkWidget *textview = gtk_text_view_new() ;
*
* Here feed the textview with file content.
*
* gtk_container_add(GTK_CONTAINER(scrolled_window),textview) ;
*
* gtk_notebook_append_page(GTK_NOTEBOOK(left_notebook), scrolled_window, NULL);
*
**********************************************************************************/
return ;
}
static void destroy(GtkWidget *widget,gpointer pointer) {
fprintf(stdout,"%s function activate\n",__func__) ;
gtk_main_quit() ;
}
static gboolean delete_event(GtkWidget *widget,GdkEvent *event,gpointer pointer) {
if (event->type == GDK_DELETE) {
fprintf(stdout,"%s delete_event catch\n",__func__) ;
return FALSE ;
}
else {
fprintf(stdout,"%s delete_event not catch\n",__func__) ;
return TRUE ;
}
} |
Partager