Skip to content

MariaGolubev/hello_codam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hello to all students at Codam!

Welcome to the world of programming in C using GTK4 and libadwaita.

Screenshot

NAME = hello_codam

CC = gcc
CFLAGS = `pkg-config --cflags gtk4 libadwaita-1` -Wall -Wextra -Werror -O2
LDFLAGS = `pkg-config --libs gtk4 libadwaita-1`

SRCDIR = src
OBJDIR = obj

SRCS = $(wildcard $(SRCDIR)/*.c)
OBJS = $(SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o)

all: $(NAME)

$(NAME): $(OBJS)
	$(CC) -o $@ $^ $(LDFLAGS)

$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
	$(CC) -c $< -o $@ $(CFLAGS)

$(OBJDIR):
	mkdir -p $(OBJDIR)

clean:
	rm -rf $(OBJDIR)

fclean: clean
	rm -f $(NAME)

re: fclean all

.PHONY: all clean fclean re
/* ************************************************************************** */
/*                                                                            */
/*                                                        ::::::::            */
/*   main.c                                             :+:    :+:            */
/*                                                     +:+                    */
/*   By: mgolubev <mgolubev@student.codam.nl>         +#+                     */
/*                                                   +#+                      */
/*   Created: 2024/10/24 20:33:50 by mgolubev      #+#    #+#                 */
/*   Updated: 2024/12/22 12:57:33 by maria         ########   odam.nl         */
/*                                                                            */
/* ************************************************************************** */

#include <gtk/gtk.h>
#include <adwaita.h>

#define CSS ".meoww {border: 3px solid @accent_color; border-radius: 10px;}"

static GtkWidget	*f_new_header_bar(void)
{
	GtkWidget	*header_bar;

	header_bar = adw_header_bar_new();
	gtk_widget_set_hexpand(header_bar, TRUE);
	gtk_widget_set_vexpand(header_bar, FALSE);
	gtk_widget_set_valign(header_bar, GTK_ALIGN_START);
	gtk_widget_add_css_class(header_bar, "flat");
	adw_header_bar_set_show_title(ADW_HEADER_BAR(header_bar), FALSE);
	return (header_bar);
}

static GtkWidget	*f_new_status_page(void)
{
	GtkWidget	*status_page;

	status_page = adw_status_page_new();
	gtk_widget_set_hexpand(status_page, TRUE);
	gtk_widget_set_vexpand(status_page, TRUE);
	adw_status_page_set_title(ADW_STATUS_PAGE(status_page), "Hello Codam");
	gtk_widget_add_css_class(status_page, "accent");
	return (status_page);
}

static void	f_set_css_provider(const char *css)
{
	GtkCssProvider	*css_provider;
	GdkDisplay		*display;

	css_provider = gtk_css_provider_new();
	display = gdk_display_get_default();
	gtk_css_provider_load_from_string(css_provider, css);
	gtk_style_context_add_provider_for_display(display,
		GTK_STYLE_PROVIDER(css_provider),
		GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}

static void	on_activate(GtkApplication *app, gpointer ptr)
{
	AdwApplicationWindow	*window;
	GtkWidget				*overlay;

	(void)ptr;
	overlay = gtk_overlay_new();
	gtk_overlay_set_child(GTK_OVERLAY(overlay), f_new_status_page());
	gtk_overlay_add_overlay(GTK_OVERLAY(overlay), f_new_header_bar());
	window = ADW_APPLICATION_WINDOW(adw_application_window_new(app));
	gtk_window_set_title(GTK_WINDOW(window), "Hello Codam!");
	gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
	adw_application_window_set_content(window, overlay);
	gtk_widget_add_css_class(GTK_WIDGET(window), "meoww");
	f_set_css_provider(CSS);
	gtk_window_present(GTK_WINDOW(window));
}

int	main(int argc, char *argv[])
{
	AdwApplication	*app;
	int				status;

	adw_init();
	app = adw_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
	g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
	status = g_application_run(G_APPLICATION(app), argc, argv);
	g_object_unref(app);
	return (status);
}

About

Simple application on gtk4 and libadwaita

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published