//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- void __fastcall TDialogProjectNew::BuildTreeView(TTreeView *TreeView, TTreeNode *TreeNode, const String Path) { TSearchRec SearchRec; if (FindFirst(Path + "\\*.*", faAnyFile, SearchRec) == 0) { do { if (SearchRec.Name[1] != '.') { if (SearchRec.Attr & faDirectory) { TTreeNode *TreeNode2 = TreeView->Items->AddChild(TreeNode, SearchRec.Name); TreeNode2->ImageIndex = 2; TreeNode2->SelectedIndex = 2; BuildTreeView(TreeView, TreeNode2, Path + "\\" + SearchRec.Name); } } } while (FindNext(SearchRec) == 0); FindClose(SearchRec); } if (FindFirst(Path + "\\*.*", faAnyFile, SearchRec) == 0) { do { if (SearchRec.Name[1] != '.') { if (!(SearchRec.Attr & faDirectory)) { TTreeNode *TreeNode2 = TreeView->Items->AddChild(TreeNode, SearchRec.Name); TreeNode2->ImageIndex = 1; TreeNode2->SelectedIndex = 1; } } } while (FindNext(SearchRec) == 0); FindClose(SearchRec); } }
//--------------------------------------------------------------------------- void __fastcall TDialogProjectNew::ListViewClick(TObject *Sender) { if (ListView->Selected) { TBusy Busy; { String Path = Usul()->Path + "\\Templates\\Projects\\." + ListView->Selected->Caption + ".rtf"; RichEdit->Visible = FileExists(Path); if (RichEdit->Visible) RichEdit->Lines->LoadFromFile(Path); } TreeView->Items->BeginUpdate(); TreeView->Items->Clear(); String Path = TemplatePath + "\\" + ListView->Selected->Caption; TTreeNode *TreeNode = TreeView->Items->Add(0, Path); TreeNode->ImageIndex = 1; TreeNode->SelectedIndex = 1; BuildTreeView(TreeView, TreeNode, Path); TreeNode->Expand(true); TreeView->Items->EndUpdate(); } }
int main (int argc, char *argv[]) { GtkWidget *window1; GdkPixbuf *window1_icon_pixbuf; GtkWidget *vbox1; GtkWidget *menubar1; GtkWidget *menuitem1; GtkWidget *menuitem1_menu; GtkWidget *Save_s_1; GtkWidget *Quit_q_1; GtkWidget *menuitem2; GtkWidget *menuitem2_menu; GtkWidget *Add_a_1; GtkWidget *Edit_e_1; GtkWidget *Delete_d_1; GtkWidget *menuitem3; GtkWidget *menuitem3_menu; GtkWidget *Find_f_1; GtkWidget *toolbar1; GtkIconSize tmp_toolbar_icon_size; GtkWidget *toolbutton1; GtkWidget *toolbutton2; GtkWidget *toolbutton3; GtkWidget *toolbutton4; GtkWidget *toolbutton5; GtkWidget *hbox1; GtkWidget *scrolledwindow1; GtkWidget *treeview; GtkWidget *scrolledwindow2; GtkWidget *textview1; GtkAccelGroup *accel_group; GtkTooltips *tooltips; GtkTreeSelection *selection; //初始化GTK+ gtk_init (&argc, &argv); tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (window1, 450, 600); gtk_window_set_title (GTK_WINDOW (window1), "Echo Addressbook"); gtk_window_set_icon_from_file(GTK_WINDOW (window1), "./pixmaps/logo.png", NULL); vbox1 = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window1), vbox1); //菜单 menubar1 = gtk_menu_bar_new (); gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0); menuitem1 = gtk_menu_item_new_with_mnemonic ("_File"); gtk_container_add (GTK_CONTAINER (menubar1), menuitem1); menuitem1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu); Save_s_1 = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); gtk_container_add (GTK_CONTAINER (menuitem1_menu), Save_s_1); Quit_q_1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); gtk_container_add (GTK_CONTAINER (menuitem1_menu), Quit_q_1); menuitem2 = gtk_menu_item_new_with_mnemonic ("_Edit"); gtk_container_add (GTK_CONTAINER (menubar1), menuitem2); menuitem2_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menuitem2_menu); Add_a_1 = gtk_image_menu_item_new_from_stock ("gtk-add", accel_group); gtk_container_add (GTK_CONTAINER (menuitem2_menu), Add_a_1); gtk_widget_add_accelerator (Add_a_1, "activate", accel_group, GDK_a, (GdkModifierType) GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE); Edit_e_1 = gtk_image_menu_item_new_from_stock ("gtk-edit", accel_group); gtk_container_add (GTK_CONTAINER (menuitem2_menu), Edit_e_1); gtk_widget_add_accelerator (Edit_e_1, "activate", accel_group, GDK_e, (GdkModifierType) GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE); Delete_d_1 = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group); gtk_container_add (GTK_CONTAINER (menuitem2_menu), Delete_d_1); gtk_widget_add_accelerator (Delete_d_1, "activate", accel_group, GDK_d, (GdkModifierType) GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE); menuitem3 = gtk_menu_item_new_with_mnemonic ("_Search"); gtk_container_add (GTK_CONTAINER (menubar1), menuitem3); menuitem3_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menuitem3_menu); Find_f_1 = gtk_image_menu_item_new_from_stock ("gtk-find", accel_group); gtk_container_add (GTK_CONTAINER (menuitem3_menu), Find_f_1); //菜单 //工具条 toolbar1 = gtk_toolbar_new (); gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_ICONS); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1)); toolbutton1 = (GtkWidget *) gtk_tool_button_new_from_stock ("gtk-add"); gtk_container_add (GTK_CONTAINER (toolbar1), toolbutton1); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (toolbutton1), tooltips, "Add", NULL); toolbutton2 = (GtkWidget *) gtk_tool_button_new_from_stock ("gtk-find"); gtk_container_add (GTK_CONTAINER (toolbar1), toolbutton2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (toolbutton2), tooltips, "Search", NULL); toolbutton3 = (GtkWidget *) gtk_tool_button_new_from_stock ("gtk-edit"); gtk_container_add (GTK_CONTAINER (toolbar1), toolbutton3); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (toolbutton3), tooltips, "Edit", NULL); toolbutton4 = (GtkWidget *) gtk_tool_button_new_from_stock ("gtk-save"); gtk_container_add (GTK_CONTAINER (toolbar1), toolbutton4); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (toolbutton4), tooltips, "Save", NULL); toolbutton5 = (GtkWidget *) gtk_tool_button_new_from_stock ("gtk-delete"); gtk_container_add (GTK_CONTAINER (toolbar1), toolbutton5); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (toolbutton5), tooltips, "Delete", NULL); //工具条 /* hbox start*/ hbox1 = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); statusbar = gtk_statusbar_new (); //Treeview //创建treeview model = create_model (); treeview = gtk_tree_view_new_with_model (model); //创建栏目 creat_columns (GTK_TREE_VIEW (treeview)); //加载数据 LoadFile(); BuildTreeView(GTK_TREE_VIEW (treeview)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); //滚动条1---treeview scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow1, FALSE, TRUE, 0); gtk_widget_set_size_request (scrolledwindow1, 160, -1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview); // //GTK textview textview1 = gtk_text_view_new (); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview1), FALSE); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview1), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview1), GTK_WRAP_CHAR); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview1)); gtk_text_buffer_create_tag (buffer, "x-large","scale", PANGO_SCALE_X_LARGE, NULL); //滚动条2---textview scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow2, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (scrolledwindow2), textview1); /* hbox end */ //状态栏 gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0); //设置回调函数 g_signal_connect (window1, "destroy", G_CALLBACK (gtk_main_quit),NULL); g_signal_connect (selection, "changed", G_CALLBACK (GetSelect), treeview); g_signal_connect (toolbutton1, "clicked", G_CALLBACK (add_people), treeview); g_signal_connect (toolbutton2, "clicked", G_CALLBACK (search_people), treeview); g_signal_connect (toolbutton3, "clicked", G_CALLBACK (edit_people), treeview); g_signal_connect (toolbutton4, "clicked", G_CALLBACK (SaveFile), NULL); g_signal_connect (toolbutton5, "clicked",G_CALLBACK (remove_item),treeview); g_signal_connect (Add_a_1, "activate", G_CALLBACK (add_people), treeview); g_signal_connect (Edit_e_1, "activate", G_CALLBACK (edit_people),treeview); g_signal_connect (Find_f_1, "activate", G_CALLBACK (search_people),treeview); g_signal_connect (Delete_d_1, "activate", G_CALLBACK (remove_item),treeview); g_signal_connect (Quit_q_1, "activate", G_CALLBACK (gtk_main_quit),treeview); //快捷键组 gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group); gtk_widget_show_all (window1); //GTK_main gtk_main (); return 0; }