static void setup_asgtk_image_view_layout_hor (ASGtkImageView * iv) { GtkWidget *main_hbox, *buttons_vbox, *buttons_frame; /***************************************/ /* Layout code : */ main_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (main_hbox); gtk_container_add (GTK_CONTAINER (iv), main_hbox); gtk_box_pack_start (GTK_BOX (main_hbox), iv->frame, TRUE, TRUE, 0); buttons_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (buttons_vbox); gtk_box_pack_end (GTK_BOX (main_hbox), buttons_vbox, FALSE, FALSE, 0); buttons_frame = gtk_frame_new (NULL); gtk_widget_show (buttons_frame); gtk_container_set_border_width (GTK_CONTAINER (buttons_frame), 0); gtk_frame_set_shadow_type (GTK_FRAME (buttons_frame), GTK_SHADOW_NONE); colorize_gtk_widget (buttons_frame, get_colorschemed_style_normal ()); gtk_container_add (GTK_CONTAINER (buttons_frame), iv->tools_hbox); gtk_box_pack_start (GTK_BOX (buttons_vbox), iv->details_frame, FALSE, FALSE, 5); gtk_box_pack_end (GTK_BOX (buttons_vbox), buttons_frame, TRUE, TRUE, 0); }
void create_backs_list() { GtkWidget *vbox, *hbox ; vbox = gtk_vbox_new (FALSE, 3); gtk_widget_show (vbox); gtk_box_pack_start (GTK_BOX (WallpaperState.list_hbox), vbox, FALSE, FALSE, 5); WallpaperState.backs_list = asgtk_image_dir_new(); gtk_box_pack_start (GTK_BOX (vbox), WallpaperState.backs_list, TRUE, TRUE, 0); gtk_widget_set_size_request (WallpaperState.backs_list, 200, INITIAL_PREVIEW_HEIGHT); gtk_widget_show (WallpaperState.backs_list); /* creating the list widget itself */ asgtk_image_dir_set_title(ASGTK_IMAGE_DIR(WallpaperState.backs_list),"Images in your private backgrounds folder:"); asgtk_image_dir_set_mini (ASGTK_IMAGE_DIR(WallpaperState.backs_list), ".mini" ); colorize_gtk_widget( WallpaperState.backs_list, get_colorschemed_style_button()); gtk_widget_set_style( WallpaperState.backs_list, get_colorschemed_style_normal()); /* adding list manipulation buttons : */ WallpaperState.list_update_as_button = asgtk_add_button_to_box( NULL, GTK_STOCK_REFRESH, "Update AfterStep Menu", G_CALLBACK(on_update_as_menu_clicked), NULL ); gtk_box_pack_end (GTK_BOX (vbox), WallpaperState.list_update_as_button, FALSE, FALSE, 0); WallpaperState.list_browse_button = asgtk_add_button_to_box( NULL, GTK_STOCK_ADD, "Browse for more", G_CALLBACK(on_browse_clicked), NULL ); gtk_box_pack_end (GTK_BOX (vbox), WallpaperState.list_browse_button, FALSE, FALSE, 0); hbox = gtk_hbutton_box_new( ); gtk_widget_show (hbox); gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); WallpaperState.new_solid_button = asgtk_add_button_to_box( GTK_BOX (hbox), GTK_STOCK_ADD, "New solid color", G_CALLBACK(on_solid_clicked), WallpaperState.backs_list ); WallpaperState.new_gradient_button = asgtk_add_button_to_box( GTK_BOX (hbox), GTK_STOCK_ADD, "New gradient", G_CALLBACK(on_gradient_clicked), WallpaperState.backs_list ); }
void on_make_xml_clicked(GtkButton *clicked_button, gpointer user_data) { ASGtkImageDir *id = ASGTK_IMAGE_DIR(user_data); ASGtkMakeXMLDlg *mx = safecalloc( 1, sizeof( ASGtkMakeXMLDlg ) ); GtkWidget *frame, *box, *box2 ; Bool files_added = False; int response ; const char *name ; mx->entry = asgtk_image_dir_get_selection( id ); if( mx->entry == NULL ) { free( mx ); return; } mx->dlg = gtk_dialog_new_with_buttons( "Making new XML based on selected image", GTK_WINDOW(WallpaperState.main_window), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL ); // g_signal_connect_swapped ( GTK_OBJECT (mx->dlg), "response", // G_CALLBACK (gtk_widget_destroy), GTK_OBJECT (mx->dlg)); gtk_container_set_border_width (GTK_CONTAINER (mx->dlg), 5); //gtk_widget_set_size_request (mx->dlg, 400, 300); mx->scale_check_box = gtk_check_button_new_with_label( "Scale image to screen size" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->scale_check_box), TRUE ); colorize_gtk_widget( mx->scale_check_box, get_colorschemed_style_normal() ); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), mx->scale_check_box, FALSE, FALSE, 0); mx->color_check_box = gtk_check_button_new_with_label( "Adjust image color based on selected Color Scheme." ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->color_check_box), TRUE ); //colorize_gtk_widget( mx->color_check_box, get_colorschemed_style_normal() ); //gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), mx->color_check_box, FALSE, FALSE, 0); g_signal_connect ((gpointer) mx->color_check_box, "clicked", G_CALLBACK (set_make_xml_widgets_sensitive), mx); frame = gtk_frame_new(NULL); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), frame, FALSE, FALSE, 5); gtk_frame_set_label_widget( GTK_FRAME(frame), mx->color_check_box ); box = gtk_vbox_new( TRUE, 5 ); gtk_container_add (GTK_CONTAINER (frame), box); gtk_container_set_border_width (GTK_CONTAINER (box), 5); mx->tint_radio = gtk_radio_button_new_with_label( NULL, "Use Tinting (suitable for mostly grayscale images)" ); gtk_box_pack_start (GTK_BOX (box), mx->tint_radio, FALSE, FALSE, 0); mx->hsv_radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(mx->tint_radio), "Use Hue rotation (suitable for colorfull images)" ); gtk_box_pack_start (GTK_BOX (box), mx->hsv_radio, FALSE, FALSE, 0); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); gtk_widget_show_all (box); gtk_widget_show (box); mx->border_check_box = gtk_check_button_new_with_label( "Draw Border around the image" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->border_check_box), TRUE ); colorize_gtk_widget( mx->border_check_box, get_colorschemed_style_normal() ); g_signal_connect ((gpointer) mx->border_check_box, "clicked", G_CALLBACK (set_make_xml_widgets_sensitive), mx); frame = gtk_frame_new(NULL); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), frame, FALSE, FALSE, 5); gtk_frame_set_label_widget( GTK_FRAME(frame), mx->border_check_box ); box = gtk_vbox_new( TRUE, 5 ); gtk_container_set_border_width (GTK_CONTAINER (box), 5); gtk_container_add (GTK_CONTAINER (frame), box); mx->solid_check_box = gtk_check_button_new_with_label( "Draw solid bevel" ); gtk_box_pack_start (GTK_BOX (box), mx->solid_check_box, FALSE, FALSE, 0); box2 = gtk_hbox_new( FALSE, 5 ); gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0); mx->single_color_check_box = gtk_check_button_new_with_label( "Use single color" ); gtk_box_pack_start (GTK_BOX (box2), mx->single_color_check_box, FALSE, FALSE, 0); mx->outline_check_box = gtk_check_button_new_with_label( "Outline image" ); gtk_box_pack_start (GTK_BOX (box2), mx->outline_check_box, FALSE, FALSE, 0); ; gtk_widget_show_all (box2); box2 = gtk_hbox_new( FALSE, 5 ); gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box2), gtk_label_new("Border width : "), FALSE, FALSE, 0); mx->border_width = gtk_spin_button_new_with_range( 1.0, Scr.MyDisplayWidth/2, 1.0 ); gtk_box_pack_start (GTK_BOX (box2), mx->border_width, FALSE, FALSE, 0); gtk_widget_show_all (box2); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); gtk_widget_show_all (box); gtk_widget_show (box); box2 = gtk_hbox_new( FALSE, 5 ); gtk_container_set_border_width (GTK_CONTAINER (box2), 5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), box2, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box2), gtk_label_new("New Background name : "), FALSE, FALSE, 0); mx->back_name = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (box2), mx->back_name, TRUE, TRUE, 0); gtk_widget_show_all (box2); gtk_widget_show_all (mx->dlg); do { response = gtk_dialog_run( GTK_DIALOG(mx->dlg) ); if( response == GTK_RESPONSE_ACCEPT ) { name = gtk_entry_get_text( GTK_ENTRY(mx->back_name) ); if( name == NULL || strlen(name) == 0 ) asgtk_warning2( WallpaperState.main_window, "Empty name specified for a new background.", NULL, NULL ); else break; } }while( response == GTK_RESPONSE_ACCEPT ); if( response == GTK_RESPONSE_ACCEPT ) { if( make_xml_from_image( mx, id ) ) { files_added = True ; make_minixml_from_image( mx, id ); } } if( files_added ) asgtk_info2( WallpaperState.main_window, "New background \"%s\" file created.", name, NULL ); make_xml_dlg_destroy( mx ); if( files_added ) asgtk_image_dir_refresh( id ); }
/* public functions */ GtkWidget * asgtk_gradient_new () { ASGtkGradient *ge; GtkWidget *main_vbox, *main_hbox; GtkWidget *scrolled_window ; GtkWidget *list_vbox ; GtkWidget *frame, *hbox, *vbox, *btn, *table; GtkWidget *label ; ge = g_object_new (ASGTK_TYPE_GRADIENT, NULL); colorize_gtk_window( GTK_WIDGET(ge) ); gtk_container_set_border_width( GTK_CONTAINER (ge), 5 ); main_vbox = GTK_DIALOG(ge)->vbox ; main_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_show (main_hbox); gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, TRUE, TRUE, 0); list_vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (main_hbox), list_vbox, FALSE, FALSE, 0); frame = gtk_frame_new("Gradient direction : "); gtk_box_pack_start (GTK_BOX (list_vbox), frame, FALSE, FALSE, 5); table = gtk_table_new( 2, 2, FALSE ); gtk_container_add (GTK_CONTAINER (frame), table); gtk_container_set_border_width (GTK_CONTAINER (table), 3); ge->l2r_radio = gtk_radio_button_new_with_label( NULL, "Left to Right" ); gtk_table_attach_defaults (GTK_TABLE (table), ge->l2r_radio, 0, 1, 0, 1); ge->t2b_radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(ge->l2r_radio), "Top to Bottom" ); gtk_table_attach_defaults (GTK_TABLE (table), ge->t2b_radio, 0, 1, 1, 2); ge->tl2br_radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(ge->t2b_radio), "Top-Left to Bottom-Right" ); gtk_table_attach_defaults (GTK_TABLE (table), ge->tl2br_radio, 1, 2, 0, 1); ge->bl2tr_radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(ge->tl2br_radio), "Bottom-Left to Top-Right" ); gtk_table_attach_defaults (GTK_TABLE (table), ge->bl2tr_radio, 1, 2, 1, 2); gtk_widget_show_all (table); gtk_widget_show (table); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); g_signal_connect ((gpointer) ge->l2r_radio, "clicked", G_CALLBACK (on_direction_clicked), ge); g_signal_connect ((gpointer) ge->tl2br_radio, "clicked", G_CALLBACK (on_direction_clicked), ge); g_signal_connect ((gpointer) ge->t2b_radio, "clicked", G_CALLBACK (on_direction_clicked), ge); g_signal_connect ((gpointer) ge->bl2tr_radio, "clicked", G_CALLBACK (on_direction_clicked), ge); ge->screen_width_check = gtk_check_button_new_with_label("Use screen width"); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(ge->screen_width_check), TRUE ); ge->width_entry = gtk_spin_button_new_with_range( 1, 10000, 1 ); gtk_widget_set_sensitive( ge->width_entry, FALSE ); ge->screen_height_check = gtk_check_button_new_with_label("Use screen height"); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(ge->screen_height_check), TRUE ); ge->height_entry = gtk_spin_button_new_with_range( 1, 10000, 1 ); gtk_widget_set_sensitive( ge->height_entry, FALSE ); g_signal_connect ((gpointer) ge->screen_width_check, "clicked", G_CALLBACK (on_size_clicked), ge); g_signal_connect ((gpointer) ge->screen_height_check, "clicked", G_CALLBACK (on_size_clicked), ge); ge->size_frame = gtk_frame_new("Rendered gradient size : "); gtk_box_pack_start (GTK_BOX (list_vbox), ge->size_frame, FALSE, FALSE, 5); colorize_gtk_tree_view_window( GTK_WIDGET(ge->size_frame) ); table = gtk_table_new( 2, 4, FALSE ); gtk_container_set_border_width( GTK_CONTAINER (table), 3 ); gtk_container_add( GTK_CONTAINER(ge->size_frame), table ); gtk_table_attach_defaults (GTK_TABLE (table), gtk_label_new("Width : "), 0, 1, 0, 1); gtk_table_attach_defaults (GTK_TABLE (table), ge->width_entry, 1, 2, 0, 1); gtk_table_attach_defaults (GTK_TABLE (table), gtk_label_new("Height : "), 2, 3, 0, 1); gtk_table_attach_defaults (GTK_TABLE (table), ge->height_entry, 3, 4, 0, 1); gtk_table_attach (GTK_TABLE (table), ge->screen_width_check, 0, 2, 1, 2, GTK_FILL, GTK_FILL, 10, 0); gtk_table_attach (GTK_TABLE (table), ge->screen_height_check, 2, 4, 1, 2, GTK_FILL, GTK_FILL, 10, 0); gtk_widget_show_all (table); gtk_widget_show (table); colorize_gtk_widget( ge->size_frame, get_colorschemed_style_normal() ); scrolled_window = asgtk_gradient_create_color_list( ge ); gtk_box_pack_start (GTK_BOX (list_vbox), scrolled_window, FALSE, FALSE, 0); ge->color_entry = gtk_entry_new_with_max_length(24); gtk_entry_set_width_chars( GTK_ENTRY(ge->color_entry), 16 ); #if 0 ge->color_preview = gtk_color_button_new(); g_signal_connect ((gpointer) ge->color_preview, "clicked", G_CALLBACK (on_color_preview_clicked), ge); #else ge->color_preview = gtk_image_new(); update_color_preview( ge, DEFAULT_COLOR_STR ); #endif ge->offset_entry = gtk_spin_button_new_with_range( 0., 1., 0.05 ); frame = gtk_frame_new("Change point attributes : "); gtk_box_pack_end (GTK_BOX (list_vbox), frame, FALSE, FALSE, 5); colorize_gtk_tree_view_window( GTK_WIDGET(frame) ); vbox = gtk_vbox_new( FALSE, 5 ); gtk_container_add( GTK_CONTAINER(frame), vbox ); table = gtk_table_new( 4, 2, FALSE ); gtk_container_set_border_width( GTK_CONTAINER (table), 3 ); // hbox = gtk_hbox_new( FALSE, 5 ); // gtk_container_set_border_width( GTK_CONTAINER (hbox), 3 ); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); label = gtk_label_new("Color : "); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); label = gtk_label_new("Offset : "); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_table_attach_defaults (GTK_TABLE (table), label, 2, 3, 0, 1); gtk_table_attach (GTK_TABLE (table), ge->color_entry, 1, 2, 0, 1, GTK_SHRINK, GTK_SHRINK, 2, 2); gtk_table_attach (GTK_TABLE (table), ge->offset_entry, 3, 4, 0, 1, GTK_SHRINK, GTK_SHRINK, 2, 2); frame = gtk_frame_new(NULL); colorize_gtk_tree_view_window( GTK_WIDGET(frame) ); gtk_widget_set_size_request( frame, COLOR_PREVIEW_WIDTH, COLOR_PREVIEW_HEIGHT ); gtk_container_set_border_width( GTK_CONTAINER (table), 0 ); gtk_container_add( GTK_CONTAINER(frame), ge->color_preview ); gtk_widget_show( ge->color_preview ); btn = gtk_button_new(); gtk_container_set_border_width( GTK_CONTAINER (btn), 0 ); //btn = gtk_button_new_with_label(" Color selector "); colorize_gtk_widget( GTK_WIDGET(btn), get_colorschemed_style_button()); gtk_container_add (GTK_CONTAINER (btn), frame); gtk_widget_show (frame); g_signal_connect ((gpointer) frame, "size-allocate", G_CALLBACK (color_preview_size_alloc), ge); gtk_table_attach (GTK_TABLE (table), btn, 0, 2, 1, 2, GTK_FILL, GTK_SHRINK, 2, 2); g_signal_connect ((gpointer) btn, "clicked", G_CALLBACK (on_color_clicked), ge); gtk_widget_show_all (table); gtk_widget_show (table); hbox = gtk_hbox_new( FALSE, 5 ); gtk_container_set_border_width( GTK_CONTAINER (hbox), 3 ); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); ge->delete_btn = btn = gtk_button_new_from_stock(GTK_STOCK_DELETE); gtk_widget_set_sensitive( ge->delete_btn, FALSE ); colorize_gtk_widget( GTK_WIDGET(btn), get_colorschemed_style_button()); gtk_box_pack_end (GTK_BOX (hbox), btn, FALSE, FALSE, 0); g_signal_connect ((gpointer) btn, "clicked", G_CALLBACK (on_delete_point_clicked), ge); btn = gtk_button_new_from_stock(GTK_STOCK_ADD); colorize_gtk_widget( GTK_WIDGET(btn), get_colorschemed_style_button()); gtk_box_pack_end (GTK_BOX (hbox), btn, FALSE, FALSE, 0); g_signal_connect ((gpointer) btn, "clicked", G_CALLBACK (on_add_point_clicked), ge); ge->apply_btn = btn = gtk_button_new_from_stock(GTK_STOCK_APPLY); gtk_widget_set_sensitive( ge->apply_btn, FALSE ); colorize_gtk_widget( GTK_WIDGET(btn), get_colorschemed_style_button()); gtk_box_pack_end (GTK_BOX (hbox), btn, FALSE, FALSE, 0); g_signal_connect ((gpointer) btn, "clicked", G_CALLBACK (on_apply_point_clicked), ge); gtk_widget_show_all (hbox); gtk_widget_show (hbox); /* The preview : */ ge->image_view = ASGTK_IMAGE_VIEW(asgtk_image_view_new()); gtk_widget_set_size_request (GTK_WIDGET(ge->image_view), PREVIEW_WIDTH, PREVIEW_HEIGHT); gtk_box_pack_end (GTK_BOX (main_hbox), GTK_WIDGET(ge->image_view), TRUE, TRUE, 0); asgtk_image_view_set_aspect ( ge->image_view, get_screen_width(NULL), get_screen_height(NULL) ); asgtk_image_view_set_resize ( ge->image_view, ASGTK_IMAGE_VIEW_SCALE_TO_VIEW| ASGTK_IMAGE_VIEW_TILE_TO_ASPECT, ASGTK_IMAGE_VIEW_RESIZE_ALL ); gtk_widget_show_all (list_vbox); gtk_widget_show_all (main_hbox); gtk_widget_hide(ge->image_view->details_label); btn = gtk_check_button_new_with_label( "Use screen aspect ratio" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(btn), TRUE ); gtk_widget_show (btn); colorize_gtk_widget( btn, get_colorschemed_style_normal() ); g_signal_connect (G_OBJECT (btn), "toggled", G_CALLBACK (asgtk_image_view_screen_aspect_toggle), (gpointer) ge->image_view); gtk_button_set_alignment( GTK_BUTTON(btn), 1.0, 0.5); asgtk_image_view_add_detail( ge->image_view, btn, 0 ); btn = gtk_check_button_new_with_label( "Scale to fit this view" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(btn), TRUE ); gtk_widget_show (btn); colorize_gtk_widget( btn, get_colorschemed_style_normal() ); g_signal_connect (G_OBJECT (btn), "toggled", G_CALLBACK (asgtk_image_view_scale_to_view_toggle), (gpointer) ge->image_view); gtk_button_set_alignment( GTK_BUTTON(btn), 1.0, 0.5); asgtk_image_view_add_detail( ge->image_view, btn, 0 ); btn = asgtk_add_button_to_box( NULL, GTK_STOCK_REFRESH, NULL, G_CALLBACK(on_refresh_clicked), ge ); asgtk_image_view_add_tool( ge->image_view, btn, 3 ); LOCAL_DEBUG_OUT( "created image ASGtkGradient object %p", ge ); return GTK_WIDGET (ge); }
static void asgtk_image_view_make_parts (ASGtkImageView * iv, Bool horizontal) { iv->frame = gtk_aspect_frame_new (NULL, 0.5, 0.5, 1.0, TRUE); gtk_frame_set_shadow_type (GTK_FRAME (iv->frame), GTK_SHADOW_NONE); gtk_widget_show (iv->frame); colorize_gtk_widget (iv->frame, get_colorschemed_style_normal ()); iv->scrolled_window = ASGTK_SCROLLED_WINDOW (GTK_POLICY_NEVER, GTK_POLICY_NEVER, GTK_SHADOW_NONE); ASGTK_CONTAINER_ADD (iv->frame, iv->scrolled_window); if (!get_flags (iv->flags, ASGTK_IMAGE_VIEW_SCALE_TO_VIEW | ASGTK_IMAGE_VIEW_TILE_TO_VIEW)) { gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (iv->scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); } colorize_gtk_widget (GTK_WIDGET (iv->scrolled_window), get_colorschemed_style_normal ()); iv->view = gtk_image_new_from_pixbuf (NULL); gtk_widget_show (GTK_WIDGET (iv->view)); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (iv->scrolled_window), GTK_WIDGET (iv->view)); colorize_gtk_widget (GTK_WIDGET (iv->view), get_colorschemed_style_normal ()); g_signal_connect ((gpointer) iv->scrolled_window, "size-allocate", G_CALLBACK (asgtk_imview_view_size_alloc), iv); iv->details_label = gtk_label_new (NO_IMAGE_TEXT); gtk_widget_show (iv->details_label); iv->details_frame = gtk_frame_new (NULL); gtk_widget_show (iv->details_frame); gtk_container_set_border_width (GTK_CONTAINER (iv->details_frame), 1); gtk_frame_set_shadow_type (GTK_FRAME (iv->details_frame), GTK_SHADOW_IN); colorize_gtk_widget (iv->details_frame, get_colorschemed_style_normal ()); iv->tools_hbox = horizontal ? gtk_vbox_new (FALSE, 0) : gtk_hbutton_box_new (); gtk_container_set_border_width (GTK_CONTAINER (iv->tools_hbox), 0); if (GTK_IS_BUTTON_BOX (iv->tools_hbox)) gtk_button_box_set_layout (GTK_BUTTON_BOX (iv->tools_hbox), GTK_BUTTONBOX_END /*SPREAD*/); gtk_widget_show (iv->tools_hbox); iv->details_hbox = horizontal ? gtk_vbutton_box_new () : gtk_hbutton_box_new (); gtk_container_set_border_width (GTK_CONTAINER (iv->details_hbox), 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (iv->details_hbox), GTK_BUTTONBOX_EDGE); gtk_widget_show (iv->details_hbox); gtk_container_add (GTK_CONTAINER (iv->details_frame), iv->details_hbox); gtk_box_pack_end (GTK_BOX (iv->details_hbox), iv->details_label, TRUE, TRUE, 0); }
GtkWidget * build_main_frame(ASFileBrowserMainFrame *data) { GtkWidget *h_paned ; GtkWidget *v_paned ; GtkWidget *view_tabs ; GtkWidget *view_image, *view_xml ; GtkWidget *view_text ; GtkWidget *view_hex ; GtkWidget *dirlist ; GtkWidget *filelist ; GtkWidget *frame = gtk_frame_new( NULL ); h_paned = gtk_hpaned_new(); gtk_container_add (GTK_CONTAINER (frame), h_paned); v_paned = gtk_vpaned_new(); gtk_paned_add1 (GTK_PANED (h_paned), v_paned); view_tabs = gtk_notebook_new(); gtk_paned_add2 (GTK_PANED (h_paned), view_tabs); view_image = asgtk_image_view_new(); gtk_widget_set_size_request (view_image, PREVIEW_WIDTH, PREVIEW_HEIGHT); asgtk_image_view_set_resize ( ASGTK_IMAGE_VIEW(view_image), 0/*ASGTK_IMAGE_VIEW_SCALE_TO_VIEW*/, ASGTK_IMAGE_VIEW_RESIZE_ALL ); gtk_notebook_append_page (GTK_NOTEBOOK (view_tabs), view_image, gtk_label_new("AS image")); view_xml = asgtk_xml_view_new(); gtk_widget_set_size_request (view_xml, PREVIEW_WIDTH, PREVIEW_HEIGHT); gtk_notebook_append_page (GTK_NOTEBOOK (view_tabs), view_xml, gtk_label_new("AS XML")); view_text = asgtk_text_view_new(data); gtk_notebook_append_page (GTK_NOTEBOOK (view_tabs), view_text, gtk_label_new("AS text")); view_hex = asgtk_hex_view_new(data ); gtk_notebook_append_page (GTK_NOTEBOOK (view_tabs), view_hex, gtk_label_new("AS hex")); gtk_widget_show_all (view_tabs); dirlist = asgtk_dir_tree_new(); gtk_widget_set_size_request (dirlist, DIR_TREE_WIDTH, DIR_TREE_HEIGHT); gtk_paned_add1 (GTK_PANED (v_paned), dirlist); filelist = asgtk_image_dir_new(); asgtk_image_dir_set_columns( ASGTK_IMAGE_DIR(filelist), ASGTK_ImageDir_Col_Name| ASGTK_ImageDir_Col_Type| ASGTK_ImageDir_Col_Size| ASGTK_ImageDir_Col_Date ); asgtk_image_dir_set_list_all( ASGTK_IMAGE_DIR(filelist), True ); gtk_widget_set_size_request (filelist, FILE_LIST_WIDTH, FILE_LIST_HEIGHT); gtk_paned_add2 (GTK_PANED (v_paned), filelist); gtk_widget_show_all (v_paned); gtk_widget_show_all (h_paned); gtk_widget_show (h_paned); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); data->view_tabs = view_tabs ; data->view_image= view_image ; data->view_xml = view_xml ; data->view_hex = view_hex ; data->dirlist = dirlist ; data->filelist = filelist ; asgtk_dir_tree_set_sel_handler(ASGTK_DIR_TREE(dirlist), dir_tree_sel_handler, data); asgtk_image_dir_set_sel_handler( ASGTK_IMAGE_DIR(filelist), filelist_sel_handler, data); data->text_buffer = gtk_text_buffer_new(NULL); return frame; }
GtkWidget * build_root_selection_frame(ASFileBrowserRootSelFrame *data, GtkWidget *dirlist) { GtkTable *table; GtkWidget *btn ; GtkActionGroup *action_group ; GtkWidget *path_combo ; GtkWidget *path_entry = NULL; GtkWidget* file_chooser_btn ; #define ROOT_SELECTION_ENTRIES_NUM 6 static GtkRadioActionEntry root_sel_entries[ROOT_SELECTION_ENTRIES_NUM] = { {"root_PrivateAfterStep", NULL, "Private AfterStep", NULL, "Private directory conmtaining AfterStep files. Typically ~/.afterstep", root_PrivateAfterStep}, {"root_SharedAfterStep", NULL, "Shared AfterStep" , NULL, "System-wide shared directory conmtaining AfterStep files. Typically /usr/local/share/afterstep", root_SharedAfterStep}, {"root_Home", NULL, "Home" , NULL, "Private Home directory", root_Home}, {"root_UsrShare", NULL, "/usr/share" , NULL, "System-wide shared files directory /usr/share", root_UsrShare}, {"root_UsrLocalShare", NULL, "/usr/local/share" , NULL, "System-wide shared files directory /usr/local/share", root_UsrLocalShare}, {"root_Other", NULL, "Other : " , NULL, "Custom location in the filesystem tree", root_Other}, } ; int root_sel_cells[ROOT_SELECTION_ENTRIES_NUM][4] = { {0, 1, 0, 1}, {1, 2, 0, 1}, {2, 3, 0, 1}, {3, 4, 0, 1}, {4, 5, 0, 1}, {0, 1, 1, 2} }; int i ; GtkWidget *frame = gtk_frame_new( NULL ); GtkWidget *hbox = gtk_hbox_new( FALSE, 0 ); GtkWidget *label = gtk_label_new( "Select directory tree to browse : "); GtkWidget *checkbox = gtk_check_button_new_with_label( "( hide and show entire filesystem )" ); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 5); gtk_box_pack_end (GTK_BOX (hbox), checkbox, TRUE, TRUE, 5); gtk_widget_show_all (hbox); gtk_widget_show (hbox); gtk_frame_set_label_widget( GTK_FRAME(frame), hbox ); table = GTK_TABLE(gtk_table_new( 5, 2, FALSE )); g_signal_connect ((gpointer) checkbox, "clicked", G_CALLBACK (on_hide_contents_toggle), data); gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET(table)); gtk_container_set_border_width( GTK_CONTAINER (frame), 5 ); gtk_container_set_border_width( GTK_CONTAINER (table), 5 ); gtk_table_set_row_spacings( table, 5 ); gtk_table_set_col_spacings( table, 5 ); action_group = gtk_action_group_new( "RootSelection" ); gtk_action_group_add_radio_actions( action_group, root_sel_entries, ROOT_SELECTION_ENTRIES_NUM, root_PrivateAfterStep, G_CALLBACK(root_selection_changed), data ); for( i = 0 ; i < ROOT_SELECTION_ENTRIES_NUM ; ++i ) { btn = gtk_toggle_button_new_with_label(root_sel_entries[i].name); gtk_table_attach_defaults (table, btn, root_sel_cells[i][0], root_sel_cells[i][1], root_sel_cells[i][2], root_sel_cells[i][3]); gtk_action_connect_proxy(gtk_action_group_get_action(action_group,root_sel_entries[i].name), btn ); } path_combo = gtk_combo_box_entry_new_text(); colorize_gtk_edit(path_combo); file_chooser_btn = gtk_button_new_with_label( "Browse" ); colorize_gtk_edit(path_combo); hbox = gtk_hbox_new( FALSE, 0 ); gtk_box_pack_start (GTK_BOX (hbox), path_combo, TRUE, TRUE, 0); gtk_box_pack_end (GTK_BOX (hbox), file_chooser_btn, FALSE, FALSE, 0); gtk_widget_show_all (hbox); gtk_table_attach_defaults (table, hbox, 1, 5, 1, 2 ); if( GTK_IS_CONTAINER(path_combo) ) gtk_container_forall( GTK_CONTAINER(path_combo), find_combobox_entry, &path_entry ); /* if above succeeded then path_entry should be not NULL here : */ /* TODO : insert proper change handlers and data pointers here : */ if( path_entry ) g_signal_connect ( G_OBJECT (path_entry), "activate", G_CALLBACK (NULL), (gpointer) NULL); g_signal_connect (G_OBJECT(path_combo), "changed", G_CALLBACK (NULL), (gpointer) NULL); gtk_widget_show_all (GTK_WIDGET(table)); gtk_widget_show (GTK_WIDGET(table)); gtk_widget_set_size_request ( frame, -1, -1); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); data->table = GTK_WIDGET(table) ; data->action_group = action_group ; data->path_combo = path_combo ; data->path_entry = path_entry ; data->file_chooser_btn = file_chooser_btn ; data->target_dirlist = dirlist ; return frame; }