Skip to content

Commit fc21b71

Browse files
author
Martin
committed
create Gtk Grundgeruest
1 parent 5515fd9 commit fc21b71

File tree

6 files changed

+191
-0
lines changed

6 files changed

+191
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.o
2+
release/

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Gtk+ Taschenrechner
2+
3+
GIT Testprojekt
4+
5+
## Change log
6+
Version Branch Änderung
7+
0.0.2 main Gtk Grundgerüst

GITHELP.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# GIT Help
2+
3+
## First steps
4+
5+
git init
6+
git config --global user.email "[email protected]"
7+
git config --global user.name "Your Name"
8+
9+
## Branch
10+
11+
### Neuen Branch erstellen
12+
13+
Branch neu erstellen :
14+
15+
git branch <foobar>
16+
17+
Lokalen Branch zum Remote hinzufügen :
18+
19+
git push --set-upstream origin <foobar>
20+
21+
### Branch Wechsel
22+
23+
git checkout <foobar>
24+
25+
## Daten synchronisieren
26+
27+
### Daten vom Remote zum Lokal Branch synchronisieren
28+
29+
git pull
30+
31+
### Daten vom Lokal zum Remote Branch synchronisieren
32+
33+
git push

main.c

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#include <gtk/gtk.h>
2+
3+
GtkWidget *window;
4+
GtkWidget *entry;
5+
GtkWidget *button;
6+
GtkWidget *grid;
7+
GtkWidget *buttons[10];
8+
GtkWidget *box;
9+
10+
// Funktion zum Behandeln des Button-Klicks
11+
void button_clicked(GtkWidget *button, gpointer data) {
12+
const char *text = gtk_entry_get_text(GTK_ENTRY(data));
13+
printf("Der eingegebene Text ist: %s\n", text);
14+
}
15+
16+
// Funktion zum Behandeln der Ziffern-Buttons
17+
void number_button_clicked(GtkWidget *button, gpointer data) {
18+
const char *number = gtk_button_get_label(GTK_BUTTON(button));
19+
gtk_entry_set_text(GTK_ENTRY(data), number);
20+
// gtk_entry_append_text(GTK_ENTRY(data), number);
21+
}
22+
23+
int main(int argc, char *argv[]) {
24+
gtk_init(&argc, &argv);
25+
26+
// Erstellen Sie ein Fenster
27+
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
28+
gtk_window_set_title(GTK_WINDOW(window), "Hello World");
29+
gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);
30+
31+
// Erstellen Sie ein Eingabefeld
32+
entry = gtk_entry_new();
33+
34+
// Erstellen Sie einen Button
35+
button = gtk_button_new_with_label("Eingabe ausgeben");
36+
37+
// Verbinden Sie den Button-Klick mit der Funktion button_clicked
38+
g_signal_connect(button, "clicked", G_CALLBACK(button_clicked), entry);
39+
40+
// Verbinden Sie den delete-event-Handler mit gtk_main_quit()
41+
g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), NULL);
42+
43+
/**/
44+
45+
// Erstellen Sie ein GtkGrid-Widget für den Tastenblock
46+
grid = gtk_grid_new();
47+
gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
48+
gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
49+
50+
// Erstellen Sie 10 Buttons für die Ziffern 0-9
51+
for (int i = 0; i < 10; i++) {
52+
buttons[i] = gtk_button_new_with_label(g_strdup_printf("%d", i));
53+
g_signal_connect(buttons[i], "clicked", G_CALLBACK(number_button_clicked), entry);
54+
}
55+
56+
// Fügen Sie die Buttons in das Grid-Widget ein
57+
int row = 0, column = 0;
58+
for (int i = 0; i < 10; i++) {
59+
gtk_grid_attach(GTK_GRID(grid), buttons[i], column, row, 1, 1);
60+
if (column == 2) {
61+
column = 0;
62+
row++;
63+
} else {
64+
column++;
65+
}
66+
}
67+
68+
/**/
69+
// Erstellen Sie einen Box-Container und fügen Sie das Eingabefeld, den Button und den Tastenblock hinzu
70+
box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
71+
gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0);
72+
gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
73+
gtk_box_pack_start(GTK_BOX(box), grid, TRUE, TRUE, 0);
74+
75+
// Fügen Sie den Box-Container zum Fenster hinzu
76+
gtk_container_add(GTK_CONTAINER(window), box);
77+
78+
// Zeigen Sie alle Widgets an
79+
gtk_widget_show_all(window);
80+
81+
// Starten Sie die GTK+-Hauptschleife
82+
gtk_main();
83+
84+
return 0;
85+
}

makefile

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Projektname
2+
PROJECT = taschenrechner
3+
4+
# Quellcodedateien
5+
SRCS = \
6+
main.c \
7+
# button_handler.c
8+
9+
# Headerdateien
10+
HDRS = \
11+
# button_handler.h
12+
13+
# Bibliotheken
14+
LIBS = \
15+
-lgtk3
16+
17+
# Objektdateien
18+
OBJS = $(SRCS:.c=.o)
19+
20+
# Flagge für GTK+-Entwicklung
21+
GTK3_CFLAGS = -Wall `pkg-config --cflags glib-2.0` \
22+
-I/usr/include/gtk-3.0 \
23+
-I/usr/include/glib-2.0 \
24+
-I/usr/include/pango-1.0 \
25+
-I/usr/include/harfbuzz \
26+
-I/usr/include/cairo \
27+
-I/usr/include/gdk-pixbuf-2.0 \
28+
-I/usr/include/atk-1.0
29+
30+
# Flagge für C-Compiler
31+
CFLAGS = $(GTK3_CFLAGS)
32+
33+
# Flagge für Linker
34+
LDFLAGS = `pkg-config --libs gtk+-3.0` -L/usr/local/lib -L/usr/lib
35+
#LDFLAGS = `pkg-config --libs glib-2.0` -L/usr/local/lib -L/usr/lib
36+
37+
# Programmname
38+
PROGRAM = $(PROJECT)
39+
40+
# Output Verzeichnis
41+
OUTDIR = release/
42+
43+
# Ziel: Programm erstellen
44+
all: $(PROGRAM)
45+
46+
$(PROGRAM): $(OBJS) $(HDRS)
47+
gcc $(CFLAGS) $(OBJS) -o $(OUTDIR)$(PROGRAM) $(LDFLAGS)
48+
49+
# Ziel: Objektdateien erstellen
50+
%.o: %.c $(HDRS)
51+
gcc $(CFLAGS) -c $< -o $@
52+
53+
# Ziel: Code bereinigen
54+
clean:
55+
rm -f $(OBJS) $(PROGRAM)
56+
57+
# Ziel: Code anzeigen
58+
l:
59+
gcc -E $(SRCS) $(HDRS) | less

settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"c_cpp.includePath": [
3+
"/usr/include/gtk-3.0" // Ersetzen Sie diesen Pfad nach Bedarf
4+
]
5+
}

0 commit comments

Comments
 (0)