From 76ea511d26b7c654bed5d1d00c7dab960f99372a Mon Sep 17 00:00:00 2001 From: daleclack Date: Sat, 19 Dec 2020 15:46:03 +0800 Subject: [PATCH] Add gtk27 --- Gtk3/gtk27/GtkClass.cpp | 38 ++++++++++++++++++++++++++++++++++++++ Gtk3/gtk27/GtkClass.h | 26 ++++++++++++++++++++++++++ Gtk3/gtk27/gtk27.cbp | 36 ++++++++++++++++++++++++++++++++++++ Gtk3/gtk27/gtk27.depend | 18 ++++++++++++++++++ Gtk3/gtk27/gtk27.layout | 5 +++++ Gtk3/gtk27/main.cpp | 17 +++++++++++++++++ Gtk3/gtk27/winclass.cpp | 14 ++++++++++++++ Gtk3/gtk27/winclass.h | 6 ++++++ 8 files changed, 160 insertions(+) create mode 100644 Gtk3/gtk27/GtkClass.cpp create mode 100644 Gtk3/gtk27/GtkClass.h create mode 100644 Gtk3/gtk27/gtk27.cbp create mode 100644 Gtk3/gtk27/gtk27.depend create mode 100644 Gtk3/gtk27/gtk27.layout create mode 100644 Gtk3/gtk27/main.cpp create mode 100644 Gtk3/gtk27/winclass.cpp create mode 100644 Gtk3/gtk27/winclass.h diff --git a/Gtk3/gtk27/GtkClass.cpp b/Gtk3/gtk27/GtkClass.cpp new file mode 100644 index 0000000..1e9e1fc --- /dev/null +++ b/Gtk3/gtk27/GtkClass.cpp @@ -0,0 +1,38 @@ +#include "GtkClass.h" + +void GtkWin::win_init(int width,int height){ + _window=GTK_WINDOW(main_window); + gtk_window_set_default_size(_window,width,height); + gtk_window_set_position(_window,GTK_WIN_POS_CENTER); +} + +void GtkWin::set_titlebar(GtkWidget *widget){ + _window=GTK_WINDOW(main_window); + gtk_window_set_titlebar(_window,widget); +} + +void GtkWin::add_widget(GtkWidget *widget){ + gtk_container_add(GTK_CONTAINER(main_window),widget); +} + +void GtkWin::show_all(){ + gtk_widget_show_all(main_window); +} + +void Winheader::header_init(){ + _header=GTK_HEADER_BAR(header); + gtk_header_bar_set_decoration_layout(_header,"close,minimize,maximize:menu"); + gtk_header_bar_set_show_close_button(_header,TRUE); +} + +void Winheader::pack_start(GtkWidget *child){ + gtk_header_bar_pack_start(_header,child); +} + +void Winheader::pack_end(GtkWidget *child){ + gtk_header_bar_pack_end(_header,child); +} + +void Winlayout::put(GtkWidget *child,int x,int y){ + gtk_layout_put(GTK_LAYOUT(layout),child,x,y); +} diff --git a/Gtk3/gtk27/GtkClass.h b/Gtk3/gtk27/GtkClass.h new file mode 100644 index 0000000..bc21ff6 --- /dev/null +++ b/Gtk3/gtk27/GtkClass.h @@ -0,0 +1,26 @@ +#include + +class GtkWin{ + GtkWindow *_window; + public: + GtkWidget *main_window; + void win_init(int width,int height); + void set_titlebar(GtkWidget *widget); + void add_widget(GtkWidget *widget); + void show_all(); +}; + +class Winheader{ + GtkHeaderBar *_header; + public: + GtkWidget *header=gtk_header_bar_new(); + void header_init(); + void pack_start(GtkWidget *child); + void pack_end(GtkWidget *child); +}; + +class Winlayout{ + public: + GtkWidget *layout=gtk_layout_new(NULL,NULL); + void put(GtkWidget *child,int x,int y); +}; diff --git a/Gtk3/gtk27/gtk27.cbp b/Gtk3/gtk27/gtk27.cbp new file mode 100644 index 0000000..ba23958 --- /dev/null +++ b/Gtk3/gtk27/gtk27.cbp @@ -0,0 +1,36 @@ + + + + + + diff --git a/Gtk3/gtk27/gtk27.depend b/Gtk3/gtk27/gtk27.depend new file mode 100644 index 0000000..9489f8d --- /dev/null +++ b/Gtk3/gtk27/gtk27.depend @@ -0,0 +1,18 @@ +# depslib dependency file v1.0 +1608348169 source:/root/cpp49/main.cpp + "GtkClass.h" + "winclass.h" + +1608348789 /root/cpp49/GtkClass.h + + +1608347671 source:/root/cpp49/GtkClass.cpp + "GtkClass.h" + +1608348251 /root/cpp49/winclass.h + + +1608348243 source:/root/cpp49/winclass.cpp + "winclass.h" + "GtkClass.h" + diff --git a/Gtk3/gtk27/gtk27.layout b/Gtk3/gtk27/gtk27.layout new file mode 100644 index 0000000..593c06e --- /dev/null +++ b/Gtk3/gtk27/gtk27.layout @@ -0,0 +1,5 @@ + + + + + diff --git a/Gtk3/gtk27/main.cpp b/Gtk3/gtk27/main.cpp new file mode 100644 index 0000000..b093772 --- /dev/null +++ b/Gtk3/gtk27/main.cpp @@ -0,0 +1,17 @@ +#include "GtkClass.h" +#include "winclass.h" + +static void activate(GtkApplication *app,gpointer user_data){ + GtkMain win_main; + win_main.init(app); +} + +int main(int argc,char *argv[]){ + GtkApplication *app; + int status; + app=gtk_application_new("com.github.gtk27",G_APPLICATION_FLAGS_NONE); + g_signal_connect(app,"activate",G_CALLBACK(activate),NULL); + status=g_application_run(G_APPLICATION(app),argc,argv); + g_object_unref(app); + return status; +} diff --git a/Gtk3/gtk27/winclass.cpp b/Gtk3/gtk27/winclass.cpp new file mode 100644 index 0000000..921fefb --- /dev/null +++ b/Gtk3/gtk27/winclass.cpp @@ -0,0 +1,14 @@ +#include "winclass.h" +#include "GtkClass.h" + +void GtkMain::init(GtkApplication *app){ + GtkWin window; + Winheader header; + window.main_window=gtk_application_window_new(app); + window.win_init(400,300); + + header.header_init(); + window.set_titlebar(header.header); + + window.show_all(); +}; diff --git a/Gtk3/gtk27/winclass.h b/Gtk3/gtk27/winclass.h new file mode 100644 index 0000000..eeb76ee --- /dev/null +++ b/Gtk3/gtk27/winclass.h @@ -0,0 +1,6 @@ +#include + +class GtkMain{ + public: + void init(GtkApplication *app); +};