From fe34b0a13c59c48d412ad95251d12f91ca4c5065 Mon Sep 17 00:00:00 2001 From: daleclack Date: Wed, 6 Jul 2022 16:06:50 +0800 Subject: [PATCH] Re-enable search in gtk133 --- Gtkmm3/gtk133_editor3/.vscode/settings.json | 3 + Gtkmm3/gtk133_editor3/CMakeLists.txt | 2 +- Gtkmm3/gtk133_editor3/res/texteditor.ui | 109 ++++++++++++++++++++ Gtkmm3/gtk133_editor3/src/TextEditor.cc | 64 +++++++----- Gtkmm3/gtk133_editor3/src/TextEditor.hh | 16 +-- Gtkmm3/gtk133_editor3/src/main.cc | 4 +- 6 files changed, 164 insertions(+), 34 deletions(-) create mode 100644 Gtkmm3/gtk133_editor3/.vscode/settings.json create mode 100644 Gtkmm3/gtk133_editor3/res/texteditor.ui diff --git a/Gtkmm3/gtk133_editor3/.vscode/settings.json b/Gtkmm3/gtk133_editor3/.vscode/settings.json new file mode 100644 index 0000000..b4d8c35 --- /dev/null +++ b/Gtkmm3/gtk133_editor3/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools" +} \ No newline at end of file diff --git a/Gtkmm3/gtk133_editor3/CMakeLists.txt b/Gtkmm3/gtk133_editor3/CMakeLists.txt index 09e309a..b1f84e6 100644 --- a/Gtkmm3/gtk133_editor3/CMakeLists.txt +++ b/Gtkmm3/gtk133_editor3/CMakeLists.txt @@ -31,7 +31,7 @@ set(SOURCE_FILE src/main.cc src/TextEditor.cc) #Compile Resource set(RESOURCE_LIST - searchbar.ui + texteditor.ui text_menu.xml) compile_gresources(RESOURCE_FILE diff --git a/Gtkmm3/gtk133_editor3/res/texteditor.ui b/Gtkmm3/gtk133_editor3/res/texteditor.ui new file mode 100644 index 0000000..e3f4bd0 --- /dev/null +++ b/Gtkmm3/gtk133_editor3/res/texteditor.ui @@ -0,0 +1,109 @@ + + + + + + True + False + edit-find + + + False + + + + + + False + + + True + False + vertical + + + True + False + True + + + True + True + edit-find-symbolic + False + False + + + + + False + True + 0 + + + + + + + + + + + + + True + False + Simple Text Editor + True + close,minimize,maximize:menu + + + True + False + + + + + + True + True + True + image1 + True + + + False + True + 1 + + + + + True + True + False + True + popover1 + + + True + False + open-menu + + + + + False + True + 2 + + + + + end + + + + + + diff --git a/Gtkmm3/gtk133_editor3/src/TextEditor.cc b/Gtkmm3/gtk133_editor3/src/TextEditor.cc index 41fcd10..18b9025 100644 --- a/Gtkmm3/gtk133_editor3/src/TextEditor.cc +++ b/Gtkmm3/gtk133_editor3/src/TextEditor.cc @@ -5,30 +5,38 @@ // Only for build in this repository #define text_globs supported_globs -TextEditor::TextEditor() -:vbox(Gtk::ORIENTATION_VERTICAL,5), -hbox(Gtk::ORIENTATION_HORIZONTAL,5) +TextEditor::TextEditor(BaseObjectType *cobject,const Glib::RefPtr &ref_builder) +:Gtk::ApplicationWindow(cobject), +main_builder(ref_builder) { //Initalize Window - set_default_size(800,450); - set_icon_name("my_textedit"); + // set_default_size(800,450); + // set_icon_name("my_textedit"); //Initalize HeaderBar - header.set_decoration_layout("close,minimize,maximize:menu"); - header.set_show_close_button(); - menubtn.set_image_from_icon_name("open-menu"); - search_button.set_image_from_icon_name("find"); - header.pack_end(menubtn); - header.pack_end(search_button); - header.set_title("Simple Text Editor"); - set_titlebar(header); + // header.set_decoration_layout("close,minimize,maximize:menu"); + // header.set_show_close_button(); + // menubtn.set_image_from_icon_name("open-menu"); + // search_button.set_image_from_icon_name("find"); + // header.pack_end(menubtn); + // header.pack_end(search_button); + // header.set_title("Simple Text Editor"); + // set_titlebar(header); + + // Get Widgets + main_builder->get_widget("popover1",popover); + main_builder->get_widget("searchbar",searchbar); + main_builder->get_widget("searchentry",search_entry); + main_builder->get_widget("searchbtn",search_button); //Add a menu menu_builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/text_menu.xml"); auto object = menu_builder->get_object("text_menu"); auto gmenu = Glib::RefPtr::cast_dynamic(object); - popover.bind_model(gmenu); - menubtn.set_popover(popover); + popover->bind_model(gmenu); + // menubtn.set_popover(*popover); + + m_binding = Glib::Binding::bind_property(search_button->property_active(),searchbar->property_search_mode_enabled(),Glib::BINDING_BIDIRECTIONAL); //Initalize Text Buffers buffer1=textview1.get_buffer(); @@ -47,14 +55,14 @@ hbox(Gtk::ORIENTATION_HORIZONTAL,5) add_action("text_clear",sigc::mem_fun(*this,&TextEditor::btnclear_clicked)); //Add searchbar - searchbar_builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/searchbar.ui"); - searchbar_builder->get_widget("searchbar",searchbar); - searchbar_builder->get_widget("searchentry",search_entry); - searchbar_builder->get_widget("search_box",searchbox); - Glib::Binding::bind_property(search_button.property_active(), - searchbar->property_search_mode_enabled(), - Glib::BINDING_BIDIRECTIONAL); - vbox.pack_start(*searchbox); + // searchbar_builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/searchbar.ui"); + // searchbar_builder->get_widget("searchbar",searchbar); + // searchbar_builder->get_widget("searchentry",search_entry); + // searchbar_builder->get_widget("search_box",searchbox); + // Glib::Binding::bind_property(search_button.property_active(), + // searchbar->property_search_mode_enabled(), + // Glib::BINDING_BIDIRECTIONAL); + // vbox.pack_start(*searchbox); //A InfoBar infobar.add_button("OK",Gtk::RESPONSE_OK); @@ -65,7 +73,7 @@ hbox(Gtk::ORIENTATION_HORIZONTAL,5) //Show everything vbox.pack_start(hbox); - add(vbox); + // add(vbox); show_all_children(); infobar.hide(); } @@ -205,3 +213,11 @@ void TextEditor::btnclear_clicked(){ void TextEditor::infobar_response(int response){ infobar.hide(); } + +TextEditor * TextEditor::create(){ + auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/texteditor.ui"); + TextEditor *win = nullptr; + + builder->get_widget_derived("editor_win",win); + return win; +} diff --git a/Gtkmm3/gtk133_editor3/src/TextEditor.hh b/Gtkmm3/gtk133_editor3/src/TextEditor.hh index 2b96d8a..fecc05e 100644 --- a/Gtkmm3/gtk133_editor3/src/TextEditor.hh +++ b/Gtkmm3/gtk133_editor3/src/TextEditor.hh @@ -4,17 +4,19 @@ class TextEditor : public Gtk::ApplicationWindow{ public: - TextEditor(); + TextEditor(BaseObjectType *cobject,const Glib::RefPtr &ref_builder); + static TextEditor * create(); private: //Header widgets - Gtk::HeaderBar header; - Gtk::MenuButton menubtn; - Gtk::Popover popover; - Gtk::ToggleButton search_button; + // Gtk::HeaderBar header; + // Gtk::MenuButton menubtn; + Gtk::Popover *popover; + Gtk::ToggleButton *search_button; Gtk::SearchBar *searchbar; Gtk::SearchEntry *search_entry; - Glib::RefPtr menu_builder, searchbar_builder; - Gtk::Box *searchbox; + Glib::RefPtr menu_builder, main_builder; + Glib::RefPtr m_binding; + // Gtk::Box *searchbox; //Window widgets Gtk::Box vbox,hbox,*infobox; diff --git a/Gtkmm3/gtk133_editor3/src/main.cc b/Gtkmm3/gtk133_editor3/src/main.cc index 9c33625..10b9ae8 100644 --- a/Gtkmm3/gtk133_editor3/src/main.cc +++ b/Gtkmm3/gtk133_editor3/src/main.cc @@ -2,6 +2,6 @@ int main(int argc,char **argv){ auto app = Gtk::Application::create(argc,argv,"org.gtk.daleclack"); - TextEditor textwin; - return app->run(textwin); + auto textwin = TextEditor::create(); + return app->run(*textwin); } \ No newline at end of file