mirror of https://github.com/daleclack/My_GtkUi
Add window for some apps
This commit is contained in:
parent
d9ea5b4c94
commit
1c103d31b2
|
@ -28,7 +28,8 @@ set(SOURCES src/core/main.cpp src/core/MainWin.cpp src/core/MyStack.cpp
|
||||||
src/ui/AppView.cpp src/file_app/FileColumnView.cpp src/file_app/FileGridView.cpp
|
src/ui/AppView.cpp src/file_app/FileColumnView.cpp src/file_app/FileGridView.cpp
|
||||||
src/file_app/FileWindow.cpp src/game_app/GameApp.cpp src/calc_app/calc.cpp
|
src/file_app/FileWindow.cpp src/game_app/GameApp.cpp src/calc_app/calc.cpp
|
||||||
src/calc_app/CalcApp.cpp src/run_app/RunApp.cpp src/draw_app/DrawApp.cpp
|
src/calc_app/CalcApp.cpp src/run_app/RunApp.cpp src/draw_app/DrawApp.cpp
|
||||||
src/game24_app/Game24.cpp src/game24_app/Game24App.cpp)
|
src/game24_app/Game24.cpp src/game24_app/Game24App.cpp src/text_app/TextEditor.cpp
|
||||||
|
src/image_app/ImageApp.cpp)
|
||||||
|
|
||||||
#Compile resources with GCR_CMake
|
#Compile resources with GCR_CMake
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,6 @@
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
G_DECLARE_FINAL_TYPE(DrawApp, draw_app, DRAW, APP, GtkWindow)
|
||||||
|
|
||||||
|
DrawApp *draw_app_new();
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
G_DECLARE_FINAL_TYPE(ImageApp, image_app, IMAGE, APP, GtkApplicationWindow)
|
||||||
|
|
||||||
|
ImageApp *image_app_new();
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
G_DECLARE_FINAL_TYPE(TextEditor, text_editor, TEXT, EDITOR, GtkApplicationWindow)
|
||||||
|
|
||||||
|
TextEditor *text_editor_new();
|
|
@ -1 +1,33 @@
|
||||||
#include "DrawApp.h"
|
#include "DrawApp.h"
|
||||||
|
|
||||||
|
struct _DrawApp{
|
||||||
|
GtkWindow parent_instance;
|
||||||
|
|
||||||
|
// Child widgets
|
||||||
|
GtkWidget *draw_area;
|
||||||
|
GtkWidget *color_btn, *fill_btn;
|
||||||
|
GtkWidget *fill_check;
|
||||||
|
GtkWidget *main_label, *size_label;
|
||||||
|
GtkWidget *left_box, *main_box, *btn_box;
|
||||||
|
GtkWidget *btn_free, *btn_line, *btn_circle, *btn_rectangle;
|
||||||
|
GtkWidget *size_scale;
|
||||||
|
|
||||||
|
// Drawing Area
|
||||||
|
cairo_surface_t *surface;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE(DrawApp, draw_app, GTK_TYPE_WINDOW)
|
||||||
|
|
||||||
|
static void draw_app_init(DrawApp *self)
|
||||||
|
{
|
||||||
|
gtk_window_set_title(GTK_WINDOW(self), "Drawing App");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw_app_class_init(DrawAppClass *klass)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawApp *draw_app_new()
|
||||||
|
{
|
||||||
|
return DRAW_APP(g_object_new(draw_app_get_type(), NULL));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "ImageApp.h"
|
||||||
|
|
||||||
|
struct _ImageApp{
|
||||||
|
GtkWindow parent_instance;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE(ImageApp, image_app, GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
|
static void image_app_init(ImageApp *self)
|
||||||
|
{
|
||||||
|
gtk_window_set_title(GTK_WINDOW(self), "Image Viewer");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void image_app_class_init(ImageAppClass *klass)
|
||||||
|
{}
|
||||||
|
|
||||||
|
ImageApp *image_app_new()
|
||||||
|
{
|
||||||
|
return IMAGE_APP(g_object_new(image_app_get_type(), NULL));
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "TextEditor.h"
|
||||||
|
|
||||||
|
struct _TextEditor
|
||||||
|
{
|
||||||
|
GtkApplicationWindow parent_instance;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE(TextEditor, text_editor, GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
|
static void text_editor_init(TextEditor *self)
|
||||||
|
{
|
||||||
|
gtk_window_set_title(GTK_WINDOW(self), "Text editor");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void text_editor_class_init(TextEditorClass *klass)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TextEditor *text_editor_new()
|
||||||
|
{
|
||||||
|
return TEXT_EDITOR(g_object_new(text_editor_get_type(), NULL));
|
||||||
|
}
|
|
@ -6,6 +6,9 @@
|
||||||
#include "CalcApp.h"
|
#include "CalcApp.h"
|
||||||
#include "RunApp.h"
|
#include "RunApp.h"
|
||||||
#include "Game24App.h"
|
#include "Game24App.h"
|
||||||
|
#include "DrawApp.h"
|
||||||
|
#include "TextEditor.h"
|
||||||
|
#include "ImageApp.h"
|
||||||
|
|
||||||
enum PadPage
|
enum PadPage
|
||||||
{
|
{
|
||||||
|
@ -41,6 +44,9 @@ struct _MyDock
|
||||||
GameApp *game_win; // The Guess Game
|
GameApp *game_win; // The Guess Game
|
||||||
CalcApp *calc_win; // Calc App
|
CalcApp *calc_win; // Calc App
|
||||||
Game24App *game24_win; // 24 Game Window
|
Game24App *game24_win; // 24 Game Window
|
||||||
|
DrawApp *draw_win; // A Drawing App
|
||||||
|
TextEditor *edit_win; // Text Editor
|
||||||
|
ImageApp *image_app; // Image Viewer
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE(MyDock, my_dock, GTK_TYPE_BOX)
|
G_DEFINE_TYPE(MyDock, my_dock, GTK_TYPE_BOX)
|
||||||
|
@ -294,6 +300,7 @@ static void padrun_clicked(GtkWidget *widget, MyDock *dock)
|
||||||
gtk_window_present(GTK_WINDOW(run_win));
|
gtk_window_present(GTK_WINDOW(run_win));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 24 Game control functions
|
||||||
static void padgame24_clicked(GtkWindow *window, MyDock *dock)
|
static void padgame24_clicked(GtkWindow *window, MyDock *dock)
|
||||||
{
|
{
|
||||||
// When the window visible, unminimize it
|
// When the window visible, unminimize it
|
||||||
|
@ -335,6 +342,132 @@ static gboolean game24_win_closed(GtkWidget *game24_win, MyDock *dock)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Drawing App control functions
|
||||||
|
static void paddraw_clicked(GtkWindow *window, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, unminimize it
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->draw_win))))
|
||||||
|
{
|
||||||
|
gtk_window_unminimize(GTK_WINDOW(dock->draw_win));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->draw_win), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->draw_win));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_draw), "drawing_app_running");
|
||||||
|
btnlaunch_clicked(NULL, dock);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btndraw_clicked(GtkWidget *widget, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, control window state
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->draw_win))))
|
||||||
|
{
|
||||||
|
window_ctrl(GTK_WINDOW(dock->draw_win), dock->parent_win);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->draw_win), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->draw_win));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_draw), "drawing_app_running");
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean draw_win_closed(GtkWidget *draw_win, MyDock *dock)
|
||||||
|
{
|
||||||
|
// Hide the window
|
||||||
|
gtk_widget_set_visible(draw_win, FALSE);
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_draw), "drawing_app");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Text Editor control functions
|
||||||
|
static void padedit_clicked(GtkWindow *window, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, unminimize it
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->edit_win))))
|
||||||
|
{
|
||||||
|
gtk_window_unminimize(GTK_WINDOW(dock->edit_win));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->edit_win), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->edit_win));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_edit), "my_textedit_running");
|
||||||
|
btnlaunch_clicked(NULL, dock);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btnedit_clicked(GtkWidget *widget, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, control window state
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->edit_win))))
|
||||||
|
{
|
||||||
|
window_ctrl(GTK_WINDOW(dock->edit_win), dock->parent_win);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->edit_win), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->edit_win));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_edit), "my_textedit_running");
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean edit_win_closed(GtkWidget *win, MyDock *dock)
|
||||||
|
{
|
||||||
|
// Hide the window
|
||||||
|
gtk_widget_set_visible(win, FALSE);
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_edit), "my_textedit");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Image viewer control functions
|
||||||
|
static void padimage_clicked(GtkWindow *window, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, unminimize it
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->image_app))))
|
||||||
|
{
|
||||||
|
gtk_window_unminimize(GTK_WINDOW(dock->image_app));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->image_app), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->image_app));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_viewer), "image_app_running");
|
||||||
|
btnlaunch_clicked(NULL, dock);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btnimage_clicked(GtkWidget *widget, MyDock *dock)
|
||||||
|
{
|
||||||
|
// When the window visible, control window state
|
||||||
|
if (gtk_widget_get_visible(GTK_WIDGET((dock->image_app))))
|
||||||
|
{
|
||||||
|
window_ctrl(GTK_WINDOW(dock->image_app), dock->parent_win);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Show the window
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dock->image_app), dock->parent_win);
|
||||||
|
gtk_window_present(GTK_WINDOW(dock->image_app));
|
||||||
|
}
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_viewer), "image_app_running");
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean image_win_closed(GtkWidget *win, MyDock *dock)
|
||||||
|
{
|
||||||
|
// Hide the window
|
||||||
|
gtk_widget_set_visible(win, FALSE);
|
||||||
|
gtk_image_set_from_icon_name(GTK_IMAGE(dock->image_viewer), "image_app");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void my_dock_get_widgets(MyDock *self)
|
static void my_dock_get_widgets(MyDock *self)
|
||||||
{
|
{
|
||||||
// Get widgets
|
// Get widgets
|
||||||
|
@ -457,6 +590,24 @@ static void my_dock_init(MyDock *self)
|
||||||
g_signal_connect(self->padgame24, "clicked", G_CALLBACK(padgame24_clicked), self);
|
g_signal_connect(self->padgame24, "clicked", G_CALLBACK(padgame24_clicked), self);
|
||||||
g_signal_connect(self->game24_win, "close-request", G_CALLBACK(game24_win_closed), self);
|
g_signal_connect(self->game24_win, "close-request", G_CALLBACK(game24_win_closed), self);
|
||||||
|
|
||||||
|
// Create Drawing App Window
|
||||||
|
self->draw_win = draw_app_new();
|
||||||
|
g_signal_connect(self->btndraw, "clicked", G_CALLBACK(btndraw_clicked), self);
|
||||||
|
g_signal_connect(self->paddraw, "clicked", G_CALLBACK(paddraw_clicked), self);
|
||||||
|
g_signal_connect(self->draw_win, "close-request", G_CALLBACK(draw_win_closed), self);
|
||||||
|
|
||||||
|
// Create Text Editor Window
|
||||||
|
self->edit_win = text_editor_new();
|
||||||
|
g_signal_connect(self->btnedit, "clicked", G_CALLBACK(btnedit_clicked), self);
|
||||||
|
g_signal_connect(self->padedit, "clicked", G_CALLBACK(padedit_clicked), self);
|
||||||
|
g_signal_connect(self->edit_win, "close-request", G_CALLBACK(edit_win_closed), self);
|
||||||
|
|
||||||
|
// Image Viewer window
|
||||||
|
self->image_app = image_app_new();
|
||||||
|
g_signal_connect(self->btnimage, "clicked", G_CALLBACK(btnimage_clicked), self);
|
||||||
|
g_signal_connect(self->padimage, "clicked", G_CALLBACK(padimage_clicked), self);
|
||||||
|
g_signal_connect(self->image_app, "close-request", G_CALLBACK(image_win_closed), self);
|
||||||
|
|
||||||
// Signal for app runner
|
// Signal for app runner
|
||||||
g_signal_connect(self->padrun, "clicked", G_CALLBACK(padrun_clicked), self);
|
g_signal_connect(self->padrun, "clicked", G_CALLBACK(padrun_clicked), self);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue