This commit is contained in:
Aliberk Sandıkçı 2024-06-20 17:38:51 +03:00
parent c69695a9a4
commit 30698d7dd1
Signed by: asandikci
GPG Key ID: 25C67A03B5666BC1
4 changed files with 111 additions and 2 deletions

View File

@ -1,4 +1,7 @@
# gtk4py
GTK4 test
https://uzem.pardus.org.tr/enrol/index.php?id=23
GTK4 test
https://uzem.pardus.org.tr/enrol/index.php?id=23
### Development Environment
run `nix develop -f shell.nix` command in NixOS to get into development environment

21
shell.nix Normal file
View File

@ -0,0 +1,21 @@
# shell.nix
let
# We pin to a specific nixpkgs commit for reproducibility.
# Last updated: 2024-04-29. Check for new commits at https://status.nixos.org.
# pkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae.tar.gz") {};
pkgs = import <nixpkgs> {};
in pkgs.mkShell {
packages = [
pkgs.gtk4
pkgs.gobject-introspection
pkgs.pkg-config
pkgs.libnotify
# pkgs.libadwaita
(pkgs.python3.withPackages (python-pkgs: [
# select Python packages here
# python-pkgs.gi
python-pkgs.pycairo
python-pkgs.pygobject3
]))
];
}

61
src/MainWindow.py Normal file
View File

@ -0,0 +1,61 @@
import gi, sys
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio
class MainWindow(Gtk.ApplicationWindow):
def __init__(self, app):
super().__init__(application=app)
self.setup_actions()
self.setup_window()
self.setup_headerbar()
self.setup_ui()
# == SETUPS ==
def setup_actions(self):
pass
def setup_window(self):
self.set_default_size(600, 400)
self.set_title("Metin Editörü")
def setup_headerbar(self):
btn_new = Gtk.Button(label="New", icon_name="document-new-symbolic", tooltip_text="Yeni Doküman")
btn_open = Gtk.Button(label="Open", icon_name="document-open-symbolic", tooltip_text="Dosya Aç")
btn_save = Gtk.Button(label="Save", icon_name="document-save-symbolic", tooltip_text="Kaydet")
btn_save_as = Gtk.Button(label="Save As", icon_name="document-save-as-symbolic", tooltip_text="Farklı Kaydet")
box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
box.append(btn_new)
box.append(btn_open)
box.append(btn_save)
box.append(btn_save_as)
headerbar = Gtk.HeaderBar()
headerbar.pack_start(box)
btn_preferences = Gtk.Button(label="Preferences", icon_name="preferences-system-symbolic", tooltip_text="Seçenekler")
box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
box.append(btn_preferences)
headerbar.pack_end(box)
self.set_titlebar(headerbar)
def setup_ui(self):
self.text_view = Gtk.TextView (
monospace=True,
left_margin=5,
right_margin=5,
top_margin=5
)
scrolled_window = Gtk.ScrolledWindow(child=self.text_view)
self.set_child(scrolled_window)
# == FUNCTIONS ==
# == CALLBACKS ==
def on_btn_button_clicked(self, btn):
print("Merhaba, evet bu bir buton")

24
src/main.py Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
import gi, sys
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
from MainWindow import MainWindow
win = None
def on_activate(app):
global win
if not win:
win = MainWindow(app)
win.present()
app = Gtk.Application(application_id='com.asandikci.gtk4py')
app.connect('activate', on_activate)
app.set_accels_for_action('win.open', ['<Ctrl>o'])
app.set_accels_for_action('win.save', ['<Ctrl>s'])
app.set_accels_for_action('win.save-as', ['<Ctrl><Shift>s'])
app.run(sys.argv)