From 5c2d830054b7383060d3c97f392f36ea03ceb703 Mon Sep 17 00:00:00 2001 From: LI Daobing Date: Sat, 13 Apr 2024 23:24:46 -0700 Subject: [PATCH 1/4] DialogPeer can use headerbar --- src/iptux/Application.cpp | 17 +++++++++------ src/iptux/Application.h | 2 ++ src/iptux/DialogPeer.cpp | 26 ++++++++++++++++++++--- src/iptux/DialogPeer.h | 3 +++ src/iptux/MainWindow.cpp | 28 ++++++++++++++----------- src/iptux/MainWindow.h | 1 + src/iptux/resources/gtk/DialogPeer.ui | 23 ++++++++++++++++++++ src/iptux/resources/iptux.gresource.xml | 1 + 8 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 src/iptux/resources/gtk/DialogPeer.ui diff --git a/src/iptux/Application.cpp b/src/iptux/Application.cpp index 5030f28f..2e07fcfc 100644 --- a/src/iptux/Application.cpp +++ b/src/iptux/Application.cpp @@ -81,6 +81,7 @@ Application::Application(shared_ptr config) notificationService = new TerminalNotifierNoticationService(); #else notificationService = new GioNotificationService(); + useHeaderBar = true; // GError* error = nullptr; // if(!g_application_register(G_APPLICATION(app), nullptr, &error)) { // LOG_WARN("g_application_register failed: %s-%d-%s", @@ -164,13 +165,17 @@ void Application::onStartup(Application& self) { auto app_menu = G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "appmenu")); gtk_application_set_app_menu(GTK_APPLICATION(self.app), app_menu); - auto menubar = - G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-app-menu")); - gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); + if(!self.useHeaderBar) { + auto menubar = + G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-app-menu")); + gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); + } } else { - auto menubar = - G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-no-app-menu")); - gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); + if(!self.useHeaderBar) { + auto menubar = + G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-no-app-menu")); + gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); + } } add_accelerator(self.app, "app.quit", "Q"); diff --git a/src/iptux/Application.h b/src/iptux/Application.h index 062607ee..bc05ecbe 100644 --- a/src/iptux/Application.h +++ b/src/iptux/Application.h @@ -33,6 +33,7 @@ class Application { LogSystem* getLogSystem() { return logSystem; } std::shared_ptr getProgramData() { return data; } std::shared_ptr getCoreThread() { return cthrd; } + bool GetUseHeaderBar() { return useHeaderBar; } void refreshTransTasks(); PPalInfo getMe(); @@ -52,6 +53,7 @@ class Application { EventAdaptor* eventAdaptor = 0; LogSystem* logSystem = 0; NotificationService* notificationService = 0; + bool useHeaderBar = false; bool started{false}; public: diff --git a/src/iptux/DialogPeer.cpp b/src/iptux/DialogPeer.cpp index 421b88e8..5a4e12ca 100644 --- a/src/iptux/DialogPeer.cpp +++ b/src/iptux/DialogPeer.cpp @@ -52,6 +52,7 @@ DialogPeer::DialogPeer(Application* app, GroupInfo* grp) sigc::mem_fun(*this, &DialogPeer::onNewFileReceived)); app->getCoreThread()->signalGroupInfoUpdated.connect( sigc::mem_fun(*this, &DialogPeer::onGroupInfoUpdated)); + this->builder = gtk_builder_new_from_resource(IPTUX_RESOURCE "gtk/DialogPeer.ui"); } /** @@ -63,6 +64,7 @@ DialogPeer::~DialogPeer() { if (timerrcv > 0) g_source_remove(timerrcv); WriteUILayout(); + g_object_unref(builder); } /** @@ -82,6 +84,7 @@ void DialogPeer::init() { auto dlgpr = this; auto window = GTK_WIDGET(dlgpr->CreateMainWindow()); grpinf->setDialogBase(this); + CreateTitle(); gtk_container_add(GTK_CONTAINER(window), dlgpr->CreateAllArea()); gtk_widget_show_all(window); gtk_widget_grab_focus(GTK_WIDGET(inputTextviewWidget)); @@ -127,12 +130,15 @@ void DialogPeer::UpdatePalData(PalInfo* pal) { refreshTitle(); } -void DialogPeer::refreshTitle() { +string DialogPeer::getTitle() { auto palinfor = grpinf->getMembers()[0].get(); - auto title = stringFormat( + return stringFormat( _("Talk with %s(%s) IP:%s"), palinfor->getName().c_str(), palinfor->getHost().c_str(), inAddrToString(palinfor->ipv4).c_str()); - gtk_window_set_title(GTK_WINDOW(window), title.c_str()); +} + +void DialogPeer::refreshTitle() { + gtk_window_set_title(GTK_WINDOW(window), getTitle().c_str()); } /** @@ -233,6 +239,20 @@ GtkWindow* DialogPeer::CreateMainWindow() { return GTK_WINDOW(window); } +void DialogPeer::CreateTitle() { + if(app->GetUseHeaderBar()) { + GtkHeaderBar* headerBar = + GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); + gtk_header_bar_set_title(headerBar, getTitle().c_str()); + gtk_header_bar_set_has_subtitle(headerBar, FALSE); + gtk_window_set_titlebar(GTK_WINDOW(window), GTK_WIDGET(headerBar)); + auto menuButton = gtk_builder_get_object(builder, "menu_button"); + gtk_menu_button_set_menu_model( + GTK_MENU_BUTTON(menuButton), + G_MENU_MODEL(gtk_builder_get_object(app->getMenuBuilder(), "menubar-when-no-app-menu"))); + } +} + /** * 创建所有区域. * @return 主窗体 diff --git a/src/iptux/DialogPeer.h b/src/iptux/DialogPeer.h index 76d7a59c..5fdfbe73 100644 --- a/src/iptux/DialogPeer.h +++ b/src/iptux/DialogPeer.h @@ -38,6 +38,7 @@ class DialogPeer : public DialogBase { private: GtkTreeView* fileToReceiveTree = 0; + GtkBuilder* builder; private: void ReadUILayout(); @@ -46,6 +47,7 @@ class DialogPeer : public DialogBase { void init(); GtkWindow* CreateMainWindow(); + void CreateTitle(); GtkWidget* CreateAllArea(); GtkWidget* CreateInfoArea(); @@ -65,6 +67,7 @@ class DialogPeer : public DialogBase { void FeedbackMsg(const std::vector& dtlist); MsgPara* PackageMsg(const std::vector& dtlist); void refreshSendAction(); + std::string getTitle(); //回调处理部分 private: diff --git a/src/iptux/MainWindow.cpp b/src/iptux/MainWindow.cpp index 2cfa8bb7..2c239c18 100644 --- a/src/iptux/MainWindow.cpp +++ b/src/iptux/MainWindow.cpp @@ -87,6 +87,7 @@ void MainWindow::CreateWindow() { /* 创建主窗口 */ window = CreateMainWindow(); + CreateTitle(); gtk_container_add(GTK_CONTAINER(window), CreateAllArea()); gtk_widget_show_all(window); @@ -398,6 +399,7 @@ void MainWindow::ClearSublayer() { g_object_unref(accel); if (timerid > 0) g_source_remove(timerid); + g_object_unref(builder); } /** @@ -445,6 +447,20 @@ string MainWindow::getTitle() const { } } + +void MainWindow::CreateTitle() { + if(app->GetUseHeaderBar()) { + GtkHeaderBar* headerBar = + GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); + gtk_header_bar_set_title(headerBar, getTitle().c_str()); + gtk_window_set_titlebar(GTK_WINDOW(window), GTK_WIDGET(headerBar)); + auto menuButton = gtk_builder_get_object(builder, "menu_button"); + gtk_menu_button_set_menu_model( + GTK_MENU_BUTTON(menuButton), + G_MENU_MODEL(gtk_builder_get_object(app->getMenuBuilder(), "menubar-when-no-app-menu"))); + } +} + /** * 创建所有区域. * @return 主窗体 @@ -454,18 +470,6 @@ GtkWidget* MainWindow::CreateAllArea() { box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); -#if SYSTEM_DARWIN -#else - GtkHeaderBar* headerBar = - GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); - gtk_header_bar_set_title(headerBar, getTitle().c_str()); - gtk_window_set_titlebar(GTK_WINDOW(window), GTK_WIDGET(headerBar)); - auto menuButton = gtk_builder_get_object(builder, "menu_button"); - gtk_menu_button_set_menu_model( - GTK_MENU_BUTTON(menuButton), - G_MENU_MODEL(gtk_builder_get_object(app->getMenuBuilder(), "menubar-when-no-app-menu"))); -#endif - gtk_box_pack_start(GTK_BOX(box), CreateToolBar(), FALSE, FALSE, 0); paned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); diff --git a/src/iptux/MainWindow.h b/src/iptux/MainWindow.h index 14b27b2b..15efc5b2 100644 --- a/src/iptux/MainWindow.h +++ b/src/iptux/MainWindow.h @@ -80,6 +80,7 @@ class MainWindow : public sigc::trackable { void CreateWindow(); GtkWidget* CreateMainWindow(); + void CreateTitle(); GtkWidget* CreateAllArea(); GtkWidget* CreateToolBar(); diff --git a/src/iptux/resources/gtk/DialogPeer.ui b/src/iptux/resources/gtk/DialogPeer.ui new file mode 100644 index 00000000..d870353c --- /dev/null +++ b/src/iptux/resources/gtk/DialogPeer.ui @@ -0,0 +1,23 @@ + + + + + + True + True + + + True + False + menu_image + + + end + + + + + True + open-menu-symbolic + + diff --git a/src/iptux/resources/iptux.gresource.xml b/src/iptux/resources/iptux.gresource.xml index 31ba1201..8b0a3574 100644 --- a/src/iptux/resources/iptux.gresource.xml +++ b/src/iptux/resources/iptux.gresource.xml @@ -3,6 +3,7 @@ gtk/AboutDialog.ui gtk/DetectPal.ui + gtk/DialogPeer.ui gtk/MainWindow.ui gtk/menus.ui From a8b3d2e4d083bde7cec7d2aa3632fe7089a31afd Mon Sep 17 00:00:00 2001 From: LI Daobing Date: Sun, 14 Apr 2024 08:48:25 -0700 Subject: [PATCH 2/4] move HeaderBar to uihelper --- src/iptux/Application.cpp | 49 +++++++++++++------------ src/iptux/Application.h | 6 ++- src/iptux/DialogPeer.cpp | 11 +----- src/iptux/MainWindow.cpp | 10 +---- src/iptux/UiHelper.cpp | 14 +++++++ src/iptux/UiHelper.h | 9 +++++ src/iptux/resources/gtk/DialogPeer.ui | 19 ---------- src/iptux/resources/gtk/HeaderBar.ui | 22 +++++++++++ src/iptux/resources/gtk/MainWindow.ui | 18 --------- src/iptux/resources/iptux.gresource.xml | 1 + 10 files changed, 79 insertions(+), 80 deletions(-) create mode 100644 src/iptux/resources/gtk/HeaderBar.ui diff --git a/src/iptux/Application.cpp b/src/iptux/Application.cpp index 2e07fcfc..7f12a7f8 100644 --- a/src/iptux/Application.cpp +++ b/src/iptux/Application.cpp @@ -81,7 +81,7 @@ Application::Application(shared_ptr config) notificationService = new TerminalNotifierNoticationService(); #else notificationService = new GioNotificationService(); - useHeaderBar = true; + use_header_bar_ = true; // GError* error = nullptr; // if(!g_application_register(G_APPLICATION(app), nullptr, &error)) { // LOG_WARN("g_application_register failed: %s-%d-%s", @@ -127,6 +127,30 @@ void Application::onStartup(Application& self) { self.data = make_shared(self.config); self.logSystem = new LogSystem(self.data); self.cthrd = make_shared(&self, self.data); + + bool use_app_menu = true; +#if SYSTEM_DARWIN +#else + use_app_menu = gtk_application_prefers_app_menu(self.app); +#endif + + if(use_app_menu) { + auto app_menu = + G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "appmenu")); + gtk_application_set_app_menu(GTK_APPLICATION(self.app), app_menu); + self.menu_ = + G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-app-menu")); + if(!self.use_header_bar()) { + gtk_application_set_menubar(GTK_APPLICATION(self.app), self.menu()); + } + } else { + self.menu_ = + G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-no-app-menu")); + if(!self.use_header_bar()) { + gtk_application_set_menubar(GTK_APPLICATION(self.app), self.menu()); + } + } + self.window = new MainWindow(&self, *self.cthrd); self.eventAdaptor = new EventAdaptor( self.cthrd->signalEvent, @@ -155,29 +179,6 @@ void Application::onStartup(Application& self) { g_action_map_add_action_entries(G_ACTION_MAP(self.app), app_entries, G_N_ELEMENTS(app_entries), &self); - bool use_app_menu = true; -#if SYSTEM_DARWIN -#else - use_app_menu = gtk_application_prefers_app_menu(self.app); -#endif - - if(use_app_menu) { - auto app_menu = - G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "appmenu")); - gtk_application_set_app_menu(GTK_APPLICATION(self.app), app_menu); - if(!self.useHeaderBar) { - auto menubar = - G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-app-menu")); - gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); - } - } else { - if(!self.useHeaderBar) { - auto menubar = - G_MENU_MODEL(gtk_builder_get_object(self.menuBuilder, "menubar-when-no-app-menu")); - gtk_application_set_menubar(GTK_APPLICATION(self.app), menubar); - } - } - add_accelerator(self.app, "app.quit", "Q"); add_accelerator(self.app, "win.refresh", "F5"); add_accelerator(self.app, "win.detect", "D"); diff --git a/src/iptux/Application.h b/src/iptux/Application.h index bc05ecbe..0ea63b0b 100644 --- a/src/iptux/Application.h +++ b/src/iptux/Application.h @@ -33,9 +33,10 @@ class Application { LogSystem* getLogSystem() { return logSystem; } std::shared_ptr getProgramData() { return data; } std::shared_ptr getCoreThread() { return cthrd; } - bool GetUseHeaderBar() { return useHeaderBar; } + bool use_header_bar() { return use_header_bar_; } void refreshTransTasks(); PPalInfo getMe(); + GMenuModel* menu() { return menu_; } private: std::shared_ptr config; @@ -53,7 +54,8 @@ class Application { EventAdaptor* eventAdaptor = 0; LogSystem* logSystem = 0; NotificationService* notificationService = 0; - bool useHeaderBar = false; + GMenuModel* menu_ = 0; + bool use_header_bar_ = false; bool started{false}; public: diff --git a/src/iptux/DialogPeer.cpp b/src/iptux/DialogPeer.cpp index 5a4e12ca..5b74caf4 100644 --- a/src/iptux/DialogPeer.cpp +++ b/src/iptux/DialogPeer.cpp @@ -240,16 +240,9 @@ GtkWindow* DialogPeer::CreateMainWindow() { } void DialogPeer::CreateTitle() { - if(app->GetUseHeaderBar()) { - GtkHeaderBar* headerBar = - GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); + if(app->use_header_bar()) { + GtkHeaderBar* headerBar = CreateHeaderBar(GTK_WINDOW(window), app->menu()); gtk_header_bar_set_title(headerBar, getTitle().c_str()); - gtk_header_bar_set_has_subtitle(headerBar, FALSE); - gtk_window_set_titlebar(GTK_WINDOW(window), GTK_WIDGET(headerBar)); - auto menuButton = gtk_builder_get_object(builder, "menu_button"); - gtk_menu_button_set_menu_model( - GTK_MENU_BUTTON(menuButton), - G_MENU_MODEL(gtk_builder_get_object(app->getMenuBuilder(), "menubar-when-no-app-menu"))); } } diff --git a/src/iptux/MainWindow.cpp b/src/iptux/MainWindow.cpp index 2c239c18..d1a4780e 100644 --- a/src/iptux/MainWindow.cpp +++ b/src/iptux/MainWindow.cpp @@ -449,15 +449,9 @@ string MainWindow::getTitle() const { void MainWindow::CreateTitle() { - if(app->GetUseHeaderBar()) { - GtkHeaderBar* headerBar = - GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); + if(app->use_header_bar()) { + GtkHeaderBar* headerBar = CreateHeaderBar(GTK_WINDOW(window), app->menu()); gtk_header_bar_set_title(headerBar, getTitle().c_str()); - gtk_window_set_titlebar(GTK_WINDOW(window), GTK_WIDGET(headerBar)); - auto menuButton = gtk_builder_get_object(builder, "menu_button"); - gtk_menu_button_set_menu_model( - GTK_MENU_BUTTON(menuButton), - G_MENU_MODEL(gtk_builder_get_object(app->getMenuBuilder(), "menubar-when-no-app-menu"))); } } diff --git a/src/iptux/UiHelper.cpp b/src/iptux/UiHelper.cpp index 3a3ca7e5..64e21eba 100644 --- a/src/iptux/UiHelper.cpp +++ b/src/iptux/UiHelper.cpp @@ -287,4 +287,18 @@ gboolean gtk_window_iconify_on_delete(GtkWindow* window) { return TRUE; } +GtkHeaderBar* CreateHeaderBar(GtkWindow* window, GMenuModel* menu) { + GtkBuilder* builder = + gtk_builder_new_from_resource(IPTUX_RESOURCE "gtk/HeaderBar.ui"); + GtkHeaderBar* headerBar = + GTK_HEADER_BAR(gtk_builder_get_object(builder, "header_bar")); + gtk_header_bar_set_has_subtitle(headerBar, FALSE); + auto menuButton = gtk_builder_get_object(builder, "menu_button"); + gtk_menu_button_set_menu_model(GTK_MENU_BUTTON(menuButton), menu); + gtk_window_set_titlebar(window, GTK_WIDGET(headerBar)); + + g_object_unref(builder); + return headerBar; +} + } // namespace iptux diff --git a/src/iptux/UiHelper.h b/src/iptux/UiHelper.h index c6017685..cce1364a 100644 --- a/src/iptux/UiHelper.h +++ b/src/iptux/UiHelper.h @@ -55,5 +55,14 @@ GActionEntry makeStateActionEntry(const std::string& name, */ std::string markupEscapeText(const std::string& str); +/** + * @brief create a headerbar with menu, and set this headerbar to the window + * + * we need to set to window inside this func, otherwise we need manage the refcount + * manually. + * + */ +GtkHeaderBar* CreateHeaderBar(GtkWindow* window, GMenuModel* menu); + } // namespace iptux #endif // IPTUX_UIHELPER_H diff --git a/src/iptux/resources/gtk/DialogPeer.ui b/src/iptux/resources/gtk/DialogPeer.ui index d870353c..4e93d161 100644 --- a/src/iptux/resources/gtk/DialogPeer.ui +++ b/src/iptux/resources/gtk/DialogPeer.ui @@ -1,23 +1,4 @@ - - - True - True - - - True - False - menu_image - - - end - - - - - True - open-menu-symbolic - diff --git a/src/iptux/resources/gtk/HeaderBar.ui b/src/iptux/resources/gtk/HeaderBar.ui new file mode 100644 index 00000000..966ef23f --- /dev/null +++ b/src/iptux/resources/gtk/HeaderBar.ui @@ -0,0 +1,22 @@ + + + + + True + True + + + True + False + menu_image + + + end + + + + + True + open-menu-symbolic + + diff --git a/src/iptux/resources/gtk/MainWindow.ui b/src/iptux/resources/gtk/MainWindow.ui index db918841..c959584d 100644 --- a/src/iptux/resources/gtk/MainWindow.ui +++ b/src/iptux/resources/gtk/MainWindow.ui @@ -22,22 +22,4 @@ - - True - True - - - True - False - menu_image - - - end - - - - - True - open-menu-symbolic - diff --git a/src/iptux/resources/iptux.gresource.xml b/src/iptux/resources/iptux.gresource.xml index 8b0a3574..1a77399e 100644 --- a/src/iptux/resources/iptux.gresource.xml +++ b/src/iptux/resources/iptux.gresource.xml @@ -4,6 +4,7 @@ gtk/AboutDialog.ui gtk/DetectPal.ui gtk/DialogPeer.ui + gtk/HeaderBar.ui gtk/MainWindow.ui gtk/menus.ui From 316e6781ca0a5b949c2d3f769fc300450cb9de69 Mon Sep 17 00:00:00 2001 From: LI Daobing Date: Sun, 14 Apr 2024 12:36:16 -0700 Subject: [PATCH 3/4] DialogGroup can use headerbar --- src/iptux/DialogGroup.cpp | 17 ++++++++++++++--- src/iptux/DialogGroup.h | 2 ++ src/iptux/DialogPeer.cpp | 2 -- src/iptux/DialogPeer.h | 1 - src/iptux/resources/gtk/DialogPeer.ui | 4 ---- src/iptux/resources/iptux.gresource.xml | 1 - 6 files changed, 16 insertions(+), 11 deletions(-) delete mode 100644 src/iptux/resources/gtk/DialogPeer.ui diff --git a/src/iptux/DialogGroup.cpp b/src/iptux/DialogGroup.cpp index 3a9738a3..e84c22f9 100644 --- a/src/iptux/DialogGroup.cpp +++ b/src/iptux/DialogGroup.cpp @@ -57,6 +57,7 @@ DialogGroup* DialogGroup::GroupDialogEntry(Application* app, dlggrp = new DialogGroup(app, grpinf); window = GTK_WIDGET(dlggrp->CreateMainWindow()); + dlggrp->CreateTitle(); gtk_container_add(GTK_CONTAINER(window), dlggrp->CreateAllArea()); gtk_widget_show_all(window); @@ -195,10 +196,8 @@ void DialogGroup::SaveUILayout() { * @return 窗口 */ GtkWindow* DialogGroup::CreateMainWindow() { - char buf[MAX_BUFLEN]; window = GTK_APPLICATION_WINDOW(gtk_application_window_new(app->getApp())); - snprintf(buf, MAX_BUFLEN, _("Talk with the group %s"), grpinf->name.c_str()); - gtk_window_set_title(GTK_WINDOW(window), buf); + gtk_window_set_title(GTK_WINDOW(window), GetTitle().c_str()); gtk_window_set_default_size(GTK_WINDOW(window), config->GetInt("group_window_width", 500), config->GetInt("group_window_height", 350)); @@ -717,4 +716,16 @@ void DialogGroup::onSortType(GSimpleAction* action, g_simple_action_set_state(action, value); } +void DialogGroup::CreateTitle() { + if(app->use_header_bar()) { + GtkHeaderBar* header_bar = CreateHeaderBar(GTK_WINDOW(window), app->menu()); + gtk_header_bar_set_title(header_bar, GetTitle().c_str()); + } +} + +string DialogGroup::GetTitle() { + return stringFormat(_("Talk with the group %s"), grpinf->name.c_str()); + +} + } // namespace iptux diff --git a/src/iptux/DialogGroup.h b/src/iptux/DialogGroup.h index 994bc5a3..726276b5 100644 --- a/src/iptux/DialogGroup.h +++ b/src/iptux/DialogGroup.h @@ -45,6 +45,7 @@ class DialogGroup : public DialogBase { void SaveUILayout(); GtkWindow* CreateMainWindow(); + void CreateTitle(); GtkWidget* CreateAllArea(); GtkWidget* CreateMemberArea(); @@ -57,6 +58,7 @@ class DialogGroup : public DialogBase { bool SendTextMsg() override; void BroadcastEnclosureMsg(const std::vector& files) override; void BroadcastTextMsg(const gchar* msg); + std::string GetTitle(); static GtkWidget* CreatePopupMenu(GtkTreeModel* model); //回调处理部分 diff --git a/src/iptux/DialogPeer.cpp b/src/iptux/DialogPeer.cpp index 5b74caf4..9252cc78 100644 --- a/src/iptux/DialogPeer.cpp +++ b/src/iptux/DialogPeer.cpp @@ -52,7 +52,6 @@ DialogPeer::DialogPeer(Application* app, GroupInfo* grp) sigc::mem_fun(*this, &DialogPeer::onNewFileReceived)); app->getCoreThread()->signalGroupInfoUpdated.connect( sigc::mem_fun(*this, &DialogPeer::onGroupInfoUpdated)); - this->builder = gtk_builder_new_from_resource(IPTUX_RESOURCE "gtk/DialogPeer.ui"); } /** @@ -64,7 +63,6 @@ DialogPeer::~DialogPeer() { if (timerrcv > 0) g_source_remove(timerrcv); WriteUILayout(); - g_object_unref(builder); } /** diff --git a/src/iptux/DialogPeer.h b/src/iptux/DialogPeer.h index 5fdfbe73..7cc3b785 100644 --- a/src/iptux/DialogPeer.h +++ b/src/iptux/DialogPeer.h @@ -38,7 +38,6 @@ class DialogPeer : public DialogBase { private: GtkTreeView* fileToReceiveTree = 0; - GtkBuilder* builder; private: void ReadUILayout(); diff --git a/src/iptux/resources/gtk/DialogPeer.ui b/src/iptux/resources/gtk/DialogPeer.ui deleted file mode 100644 index 4e93d161..00000000 --- a/src/iptux/resources/gtk/DialogPeer.ui +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/iptux/resources/iptux.gresource.xml b/src/iptux/resources/iptux.gresource.xml index 1a77399e..f9d6abcf 100644 --- a/src/iptux/resources/iptux.gresource.xml +++ b/src/iptux/resources/iptux.gresource.xml @@ -3,7 +3,6 @@ gtk/AboutDialog.ui gtk/DetectPal.ui - gtk/DialogPeer.ui gtk/HeaderBar.ui gtk/MainWindow.ui gtk/menus.ui From 048d04f80214cdc53b5ba3fd764aafe6e3727ebb Mon Sep 17 00:00:00 2001 From: LI Daobing Date: Sun, 14 Apr 2024 13:00:23 -0700 Subject: [PATCH 4/4] fix style --- src/iptux/DialogGroup.cpp | 1 - src/iptux/DialogPeer.cpp | 6 +++--- src/iptux/DialogPeer.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/iptux/DialogGroup.cpp b/src/iptux/DialogGroup.cpp index e84c22f9..a9ce3fc2 100644 --- a/src/iptux/DialogGroup.cpp +++ b/src/iptux/DialogGroup.cpp @@ -725,7 +725,6 @@ void DialogGroup::CreateTitle() { string DialogGroup::GetTitle() { return stringFormat(_("Talk with the group %s"), grpinf->name.c_str()); - } } // namespace iptux diff --git a/src/iptux/DialogPeer.cpp b/src/iptux/DialogPeer.cpp index 9252cc78..a5f60052 100644 --- a/src/iptux/DialogPeer.cpp +++ b/src/iptux/DialogPeer.cpp @@ -128,7 +128,7 @@ void DialogPeer::UpdatePalData(PalInfo* pal) { refreshTitle(); } -string DialogPeer::getTitle() { +string DialogPeer::GetTitle() { auto palinfor = grpinf->getMembers()[0].get(); return stringFormat( _("Talk with %s(%s) IP:%s"), palinfor->getName().c_str(), @@ -136,7 +136,7 @@ string DialogPeer::getTitle() { } void DialogPeer::refreshTitle() { - gtk_window_set_title(GTK_WINDOW(window), getTitle().c_str()); + gtk_window_set_title(GTK_WINDOW(window), GetTitle().c_str()); } /** @@ -240,7 +240,7 @@ GtkWindow* DialogPeer::CreateMainWindow() { void DialogPeer::CreateTitle() { if(app->use_header_bar()) { GtkHeaderBar* headerBar = CreateHeaderBar(GTK_WINDOW(window), app->menu()); - gtk_header_bar_set_title(headerBar, getTitle().c_str()); + gtk_header_bar_set_title(headerBar, GetTitle().c_str()); } } diff --git a/src/iptux/DialogPeer.h b/src/iptux/DialogPeer.h index 7cc3b785..aa7d1f6c 100644 --- a/src/iptux/DialogPeer.h +++ b/src/iptux/DialogPeer.h @@ -66,7 +66,7 @@ class DialogPeer : public DialogBase { void FeedbackMsg(const std::vector& dtlist); MsgPara* PackageMsg(const std::vector& dtlist); void refreshSendAction(); - std::string getTitle(); + std::string GetTitle(); //回调处理部分 private: