Added a new dialogue

This commit is contained in:
fedir 2025-04-28 10:11:50 +02:00
parent c4ef955ff1
commit ccb449ae57
Signed by: fedir
GPG Key ID: C959EE85F0C9362C
2 changed files with 107 additions and 0 deletions

66
src/gui/Makefile Normal file
View File

@ -0,0 +1,66 @@
SHELL=/bin/bash
# configurable options
SOURCES_DIR := .
TESTS_DIR := .
BUILD_DIR := .
CC := gcc
CXX := g++
# dependencies
PACKAGE_NAMES := gtk4 libadwaita-1
ifeq ($(TEST), 1)
# PACKAGE_NAMES += check # TODO: use check?
endif
# set up cflags and libs
CFLAGS := -D_FILE_OFFSET_BITS=64
LDFLAGS :=
CFLAGS += $(shell pkg-config --cflags $(PACKAGE_NAMES))
LDFLAGS += $(shell pkg-config --libs $(PACKAGE_NAMES))
ifeq ($(DEBUG),1)
CFLAGS += -O0 -pedantic -g -Wall -Wextra -Wcast-align \
-Wcast-qual -Wdisabled-optimization -Wformat=2 \
-Winit-self -Wlogical-op -Wmissing-declarations \
-Wmissing-include-dirs -Wredundant-decls -Wshadow \
-Wsign-conversion -Wstrict-overflow=5 \
-Wswitch-default -Wundef -Wno-unused
LDFLAGS +=
else
CFLAGS += -O3
LDFLAGS +=
endif
# set up targets
TARGETS := $(BUILD_DIR)/zenity
ifeq ($(TEST), 1)
#TARGETS += icfs_test
endif
# build!
default: $(TARGETS)
.PHONY: clean
$(BUILD_DIR)/zenity: $(BUILD_DIR)/zenity.o
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $(BUILD_DIR)/zenity
$(BUILD_DIR)/zenity.o: $(SOURCES_DIR)/zenity-clone.c
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $(BUILD_DIR)/zenity.o
clean:
rm $(BUILD_DIR)/*.o $(BUILD_DIR)/zenity

41
src/gui/zenity-clone.c Normal file
View File

@ -0,0 +1,41 @@
#include "gio/gio.h"
#include <adwaita.h>
#include <gtk/gtk.h>
static void on_activate(GtkApplication *app, gpointer user_data) {
// Create the main window
AdwMessageDialog *dialog = ADW_MESSAGE_DIALOG(
adw_message_dialog_new(NULL, "Allow access?", "allow_access?"));
// Set the dialog as transient for the (non-existent) parent window
gtk_window_set_application(GTK_WINDOW(dialog), app);
// Add response buttons
adw_message_dialog_add_response(dialog, "cancel", "Cancel");
adw_message_dialog_add_response(dialog, "ok", "OK");
// Set default response
adw_message_dialog_set_default_response(dialog, "ok");
// Set close response (when clicking X)
adw_message_dialog_set_close_response(dialog, "cancel");
// Connect response handler
// g_signal_connect(dialog, "response", G_CALLBACK(gtk_window_close), dialog);
// Show the dialog
gtk_window_present(GTK_WINDOW(dialog));
}
int main(int argc, char **argv) {
// Create a new application
AdwApplication *app = adw_application_new("com.example.zenityclone",
G_APPLICATION_DEFAULT_FLAGS);
g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
// Run the application
int status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}