diff --git a/.gitignore b/.gitignore index 804b94f..e8e1793 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ -*.o texit -text_editor -.cache -build/* +.cache/ +build/ compile_commands.json \ No newline at end of file diff --git a/.gresource.xml b/.gresource.xml index ccac096..340706f 100644 --- a/.gresource.xml +++ b/.gresource.xml @@ -4,5 +4,6 @@ main-window.ui share-dialog.ui style.css + settings.ui - \ No newline at end of file + diff --git a/include/settings.h b/include/settings.h new file mode 100644 index 0000000..51d63a3 --- /dev/null +++ b/include/settings.h @@ -0,0 +1,9 @@ +#ifndef __SETTINGS_H_ +#define __SETTINGS_H_ + +#include +#include + +void settings_click(GtkButton* setting_btn, GtkWindow* window); + +#endif // __SETTINGS_H_ \ No newline at end of file diff --git a/res/main-window.blp b/res/main-window.blp index fc217df..a30c82c 100644 --- a/res/main-window.blp +++ b/res/main-window.blp @@ -28,7 +28,14 @@ Adw.ApplicationWindow main-window { } [end] // label set in program - ToggleButton share-toggle { label: "❌ Share";} + ToggleButton share-toggle { + label: "❌ Share"; + } + [end] + Button settings-btn { + Image { icon-name: "emblem-system-symbolic"; } + tooltip-text: "Settings"; + } } Gtk.Label label{ diff --git a/res/settings.blp b/res/settings.blp new file mode 100644 index 0000000..2d58de2 --- /dev/null +++ b/res/settings.blp @@ -0,0 +1,59 @@ +using Gtk 4.0; +using Gio 2.0; +using Adw 1; + + +Adw.PreferencesWindow setting-dialog { + default-width: 200; + default-height: 400; + + Adw.PreferencesPage font-page { + title: "Font"; + Adw.PreferencesGroup { + title: "Font Customization"; + description: "These are all the font customizability options that TeXiT currently supports."; + Adw.ActionRow { + title: "Font Family and Size"; + Gtk.FontDialogButton font-dialog {} + } + Separator { styles ["spacer"] } + Adw.ComboRow font-style-row { + title: "Font Style"; + subtitle: "Choose whether to display the text editor in bold, italic, bold italic, or none."; + model: Gtk.StringList { + strings [ + "None", + "Bold", + "Italic", + "Bold Italic" + ] + }; + } + Separator { styles ["spacer"] } + Adw.ActionRow { + title: "Ligature"; + subtitle: "Merge symbols (e.g. <=, >=)"; + use-markup: false; + Gtk.Switch ligatures-switch { + vexpand: false; + valign: center; + } + } + } + } + Adw.PreferencesPage page-2 { + Adw.PreferencesGroup { + + } + } + Adw.PreferencesPage page-3 { + Adw.PreferencesGroup { + + } + } + Adw.PreferencesPage page-4 { + Adw.PreferencesGroup { + + } + } +} diff --git a/src/gui.c b/src/gui.c index 811338f..5bfa7cb 100644 --- a/src/gui.c +++ b/src/gui.c @@ -3,6 +3,7 @@ #include "tab-page.h" #include "server.h" #include "client.h" +#include "settings.h" #include #include @@ -209,6 +210,9 @@ void main_window(AdwApplication *app) { gtk_button_set_label(GTK_BUTTON(share_toggle), TOGGLE_LABEL_OFF); g_signal_connect(share_toggle, "clicked", G_CALLBACK(share_toggle_click), share_click_params); + GtkButton* settings_btn = GTK_BUTTON(gtk_builder_get_object(builder, "settings-btn")); + g_signal_connect(settings_btn, "clicked", G_CALLBACK(settings_click), window); + gtk_window_present(GTK_WINDOW(window)); } diff --git a/src/settings.c b/src/settings.c new file mode 100644 index 0000000..03e3b10 --- /dev/null +++ b/src/settings.c @@ -0,0 +1,9 @@ +#include "settings.h" + +void settings_click(GtkButton* settings_btn, GtkWindow* window){ + GtkBuilder* settings_builder = gtk_builder_new_from_resource("/me/Asder8215/TeXiT/settings.ui"); + AdwPreferencesWindow* prefs_window = ADW_PREFERENCES_WINDOW(gtk_builder_get_object(settings_builder, "setting-dialog")); + gtk_window_set_transient_for(GTK_WINDOW(prefs_window), window); + gtk_window_present(GTK_WINDOW(prefs_window)); +} +