📄 fe_gtk_site_widgets.c
字号:
area_contents_s->file_attrib_frame = gtk_frame_new ("File attributes"); gtk_widget_show (area_contents_s->file_attrib_frame); tablet = gtk_table_new (2, 2, false); gtk_table_set_col_spacings (GTK_TABLE (tablet), 2); gtk_table_set_row_spacings (GTK_TABLE (tablet), 3); gtk_container_set_border_width (GTK_CONTAINER (tablet), 5); gtk_widget_show (tablet); gtk_container_add (GTK_CONTAINER (area_contents_s->file_attrib_frame), tablet); label = gtk_label_new ("Permissions Mode:"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_widget_show (label); gtk_table_attach_defaults (GTK_TABLE (tablet), label, 0, 1, 0, 1); area_contents_s->perms_mode = gtk_option_menu_new (); area_contents_s->perms_mode_menu = gtk_menu_new(); area_contents_s->perms_ignore = gtk_menu_item_new_with_label ("Ignore all"); gtk_signal_connect (GTK_OBJECT (area_contents_s->perms_ignore), "activate", GTK_SIGNAL_FUNC (change_perms), (gpointer) "ignore"); gtk_widget_show (area_contents_s->perms_ignore); area_contents_s->perms_exec = gtk_menu_item_new_with_label ("Executables only"); gtk_signal_connect (GTK_OBJECT (area_contents_s->perms_exec), "activate", GTK_SIGNAL_FUNC (change_perms), (gpointer) "exec"); gtk_widget_show (area_contents_s->perms_exec); area_contents_s->perms_all = gtk_menu_item_new_with_label ("Maintain for all"); gtk_signal_connect (GTK_OBJECT (area_contents_s->perms_all), "activate", GTK_SIGNAL_FUNC (change_perms), (gpointer) "all"); gtk_widget_show (area_contents_s->perms_all); gtk_menu_append (GTK_MENU (area_contents_s->perms_mode_menu), area_contents_s->perms_ignore); gtk_menu_append (GTK_MENU (area_contents_s->perms_mode_menu), area_contents_s->perms_exec); gtk_menu_append (GTK_MENU (area_contents_s->perms_mode_menu), area_contents_s->perms_all); gtk_option_menu_set_menu (GTK_OPTION_MENU (area_contents_s->perms_mode), area_contents_s->perms_mode_menu); /* Set the current value correctly */ switch (selected_site->perms) { case sitep_ignore: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->perms_mode), 0); break; case sitep_exec: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->perms_mode), 1); break; case sitep_all: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->perms_mode), 2); break; } gtk_widget_show (area_contents_s->perms_mode); gtk_table_attach_defaults (GTK_TABLE (tablet), area_contents_s->perms_mode, 1, 2, 0, 1); label = gtk_label_new ("Symbolic Links:"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_widget_show (label); gtk_table_attach_defaults (GTK_TABLE (tablet), label, 0, 1, 1, 2); area_contents_s->sym_link_mode = gtk_option_menu_new (); area_contents_s->sym_link_mode_menu = gtk_menu_new(); area_contents_s->sym_follow = gtk_menu_item_new_with_label ("Follow all"); gtk_signal_connect (GTK_OBJECT (area_contents_s->sym_follow), "activate", GTK_SIGNAL_FUNC (change_sym_mode), (gpointer) "follow"); gtk_widget_show (area_contents_s->sym_follow); area_contents_s->sym_ignore = gtk_menu_item_new_with_label ("Ignore links"); gtk_signal_connect (GTK_OBJECT (area_contents_s->sym_ignore), "activate", GTK_SIGNAL_FUNC (change_sym_mode), (gpointer) "ignore"); gtk_widget_show (area_contents_s->sym_ignore); area_contents_s->sym_maintain = gtk_menu_item_new_with_label ("Maintain links"); gtk_signal_connect (GTK_OBJECT (area_contents_s->sym_maintain), "activate", GTK_SIGNAL_FUNC (change_sym_mode), (gpointer) "maintain"); gtk_widget_show (area_contents_s->sym_maintain); gtk_menu_append (GTK_MENU (area_contents_s->sym_link_mode_menu), area_contents_s->sym_follow); gtk_menu_append (GTK_MENU (area_contents_s->sym_link_mode_menu), area_contents_s->sym_ignore); gtk_menu_append (GTK_MENU (area_contents_s->sym_link_mode_menu), area_contents_s->sym_maintain); gtk_option_menu_set_menu (GTK_OPTION_MENU (area_contents_s->sym_link_mode), area_contents_s->sym_link_mode_menu); /* Set the current value correctly */ switch (selected_site->symlinks) { case sitesym_follow: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->sym_link_mode), 0); break; case sitesym_ignore: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->sym_link_mode), 1); break; case sitesym_maintain: gtk_option_menu_set_history (GTK_OPTION_MENU (area_contents_s->sym_link_mode), 2); break; } gtk_widget_show (area_contents_s->sym_link_mode); gtk_table_attach_defaults (GTK_TABLE (tablet), area_contents_s->sym_link_mode, 1, 2, 1, 2); /* 'Advanced' stuff... Excludes & name mappings so far. */ area_contents_s->advanced_frame = gtk_frame_new ("Advanced");/* gtk_container_set_border_width (GTK_CONTAINER (area_contents_s->advanced_frame), 5);*/ gtk_widget_show (area_contents_s->advanced_frame); area_contents_s->advanced_notebook = gtk_notebook_new (); gtk_widget_show (area_contents_s->advanced_notebook); area_contents_s->excludes_vbox = gtk_vbox_new (FALSE, 2); label = gtk_label_new ("Excludes"); gtk_widget_show (label); gtk_notebook_append_page (GTK_NOTEBOOK (area_contents_s->advanced_notebook), GTK_WIDGET (area_contents_s->excludes_vbox), GTK_WIDGET (label)); gtk_widget_show (area_contents_s->excludes_vbox); excludes_clist = gtk_clist_new (1); gtk_clist_set_selection_mode (GTK_CLIST (excludes_clist), GTK_SELECTION_SINGLE);/* gtk_clist_set_column_width (GTK_CLIST (excludes_clist), 0, 100);*/ populate_excludes (); gtk_clist_columns_autosize (GTK_CLIST (excludes_clist)); gtk_signal_connect (GTK_OBJECT (excludes_clist), "select_row", GTK_SIGNAL_FUNC (select_exclude), NULL);/* gtk_clist_select_row (GTK_CLIST (excludes_clist), 0, 0);*/ gtk_clist_set_shadow_type (GTK_CLIST (excludes_clist), GTK_SHADOW_IN); area_contents_s->excludes_scroller = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (area_contents_s->excludes_scroller), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (area_contents_s->excludes_scroller), excludes_clist); gtk_widget_show (area_contents_s->excludes_scroller); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_vbox), area_contents_s->excludes_scroller, TRUE, TRUE, 5); gtk_widget_show (excludes_clist); area_contents_s->excludes_hbox = gtk_hbox_new (FALSE, 1); gtk_widget_show (area_contents_s->excludes_hbox); label = gtk_label_new ("Exclude:"); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_hbox), label, FALSE, FALSE, 1); gtk_widget_show (label); excludes_entry = gtk_entry_new (); gtk_signal_connect (GTK_OBJECT (excludes_entry), "changed", GTK_SIGNAL_FUNC (change_exclude), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_hbox), excludes_entry, TRUE, TRUE, 1); gtk_widget_show (excludes_entry); area_contents_s->excludes_new = gtk_button_new_with_label ("New"); gtk_signal_connect (GTK_OBJECT (area_contents_s->excludes_new), "clicked", GTK_SIGNAL_FUNC (add_exclude), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_hbox), area_contents_s->excludes_new, FALSE, FALSE, 1); gtk_widget_show (area_contents_s->excludes_new); area_contents_s->excludes_delete = gtk_button_new_with_label ("Delete"); gtk_signal_connect (GTK_OBJECT (area_contents_s->excludes_delete), "clicked", GTK_SIGNAL_FUNC (remove_exclude), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_hbox), area_contents_s->excludes_delete, FALSE, FALSE, 1); gtk_widget_show (area_contents_s->excludes_delete); gtk_box_pack_start (GTK_BOX (area_contents_s->excludes_vbox), area_contents_s->excludes_hbox, FALSE, FALSE, 5); /* Name mappings */ /* label = gtk_label_new ("Name Mappings"); gtk_widget_show (label); area_contents_s->name_map_vbox = gtk_vbox_new (FALSE, 2); gtk_notebook_append_page (GTK_NOTEBOOK (area_contents_s->advanced_notebook), GTK_WIDGET (area_contents_s->name_map_vbox), GTK_WIDGET (label)); gtk_widget_show (area_contents_s->name_map_vbox); name_map_clist = gtk_clist_new_with_titles (2, map_title); gtk_clist_set_selection_mode (GTK_CLIST (name_map_clist), GTK_SELECTION_SINGLE); gtk_clist_set_column_width (GTK_CLIST (name_map_clist), 0, 100); populate_name_map (); gtk_clist_columns_autosize (GTK_CLIST (excludes_clist)); gtk_signal_connect (GTK_OBJECT (name_map_clist), "select_row", GTK_SIGNAL_FUNC (select_name_map), NULL); area_contents_s->name_map_scroller = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (area_contents_s->name_map_scroller), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (area_contents_s->name_map_scroller), name_map_clist); gtk_widget_show (area_contents_s->name_map_scroller); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_vbox), area_contents_s->name_map_scroller, TRUE, TRUE, 5); gtk_widget_show (name_map_clist); area_contents_s->name_map_hbox = gtk_hbox_new (FALSE, 1); gtk_widget_show (area_contents_s->name_map_hbox); label = gtk_label_new ("Local name:"); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), label, FALSE, FALSE, 1); gtk_widget_show (label); name_map_local_entry = gtk_entry_new (); gtk_signal_connect (GTK_OBJECT (name_map_local_entry), "changed", GTK_SIGNAL_FUNC (change_local_map), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), name_map_local_entry, TRUE, TRUE, 1); gtk_widget_show (name_map_local_entry); area_contents_s->name_map_new = gtk_button_new_with_label ("New"); gtk_signal_connect (GTK_OBJECT (area_contents_s->name_map_new), "clicked", GTK_SIGNAL_FUNC (add_name_map), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), area_contents_s->name_map_new, FALSE, FALSE, 1); gtk_widget_show (area_contents_s->name_map_new); area_contents_s->name_map_delete = gtk_button_new_with_label ("Delete"); gtk_signal_connect (GTK_OBJECT (area_contents_s->name_map_delete), "clicked", GTK_SIGNAL_FUNC (remove_name_map), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), area_contents_s->name_map_delete, FALSE, FALSE, 1); gtk_widget_show (area_contents_s->name_map_delete); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_vbox), area_contents_s->name_map_hbox, FALSE, FALSE, 2);*/ /* Remote widget */ /* area_contents_s->name_map_hbox = gtk_hbox_new (FALSE, 1); gtk_widget_show (area_contents_s->name_map_hbox); label = gtk_label_new ("Remote name:"); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), label, FALSE, FALSE, 1); gtk_widget_show (label); name_map_remote_entry = gtk_entry_new (); gtk_signal_connect (GTK_OBJECT (name_map_remote_entry), "changed", GTK_SIGNAL_FUNC (change_remote_map), NULL); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_hbox), name_map_remote_entry, TRUE, TRUE, 1); gtk_widget_show (name_map_remote_entry); gtk_box_pack_start (GTK_BOX (area_contents_s->name_map_vbox), area_contents_s->name_map_hbox, FALSE, FALSE, 2);*/ /* Put the 'advanced' notebook into the frame. */ gtk_container_add (GTK_CONTAINER (area_contents_s->advanced_frame), area_contents_s->advanced_notebook); /* Info summary */ area_contents_s->info_frame = gtk_frame_new ("Statistics"); gtk_widget_show (area_contents_s->info_frame); area_contents_s->evbox = gtk_event_box_new (); gtk_widget_show (area_contents_s->evbox); files_on_site = selected_site->numnew + selected_site->numchanged + selected_site->numdeleted + selected_site->nummoved + selected_site->numunchanged; info = malloc (BUFSIZ); if ( ! selected_site->is_different) { sprintf(info, "The local site contains %d files, none of which have changed since the last update.", files_on_site); } else { sprintf(info, "The local site has changed since the last update:\n%d files have been added, %d files have changed, %d files have been deleted, %d files have been moved, %d remain unchanged.\nThere are currently %d files on the local site.", selected_site->numnew, selected_site->numchanged, selected_site->numdeleted, selected_site->nummoved, selected_site->numunchanged, files_on_site); } label = gtk_label_new (info); free (info); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); /* TODO: Add a config option for more stats, like how much space the new * files take up, how many excludes, etc. */ gtk_container_add (GTK_CONTAINER (area_contents_s->evbox), label); gtk_container_add (GTK_CONTAINER (area_contents_s->info_frame), area_contents_s->evbox); gtk_widget_show (label); /* Left side of site widgets */ subtable = gtk_vbox_new (FALSE, 3); gtk_widget_show (subtable); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->site_details_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->flags_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->info_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (table), subtable, TRUE, TRUE, 1); /* Right side of site widgets */ subtable = gtk_vbox_new (FALSE, 3); gtk_widget_show (subtable); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->dir_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->file_attrib_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (subtable), area_contents_s->advanced_frame, TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX (table), subtable, TRUE, TRUE, 1); gtk_widget_show (table); area_contents_s->container = area_contents_s->frame;/* gtk_container_set_border_width (GTK_CONTAINER (area_contents_s->container), 20);*/ gtk_widget_set_sensitive (area_contents_s->local_dir, FALSE);/* gtk_widget_set_sensitive (area_contents_s->remote_dir, FALSE);*/ gtk_widget_show (area_contents_s->frame); if (should_save_at_end) rcfile_saved = true; return area_contents_s->frame;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -