Merge pull request #17 from PaulSchulz/main

Minor fix to section 3
This commit is contained in:
ToshioCP 2022-03-03 21:11:15 +09:00 committed by GitHub
commit 69c0b7764b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,15 +4,17 @@
### GtkApplication and g\_application\_run ### GtkApplication and g\_application\_run
Usually people write a programming code to make an application. Usually people write programming code to make an application.
What are applications? What are applications?
Applications are software that runs using libraries, which includes OS, frameworks and so on. Applications are software that runs using libraries, which includes the
In Gtk4 programming, GtkApplication is an object that runs on Gtk libraries. OS, frameworks and so on.
In Gtk4 programming, the GtkApplication is a program (or executable) that runs
using Gtk libraries.
The basic way how to write GtkApplication is as follows. The basic way to write a GtkApplication is as follows.
- Creates a GtkApplication instance. - Create a GtkApplication instance.
- Runs the application. - Run the application.
That's all. That's all.
Very simple. Very simple.
@ -40,7 +42,7 @@ The string `pr1.c` is the filename of the C source code above.
$ gcc `pkg-config --cflags gtk4` pr1.c `pkg-config --libs gtk4` $ gcc `pkg-config --cflags gtk4` pr1.c `pkg-config --libs gtk4`
~~~ ~~~
The C compiler gcc generates an executable file `a.out`. The C compiler gcc generates an executable file, `a.out`.
Let's run it. Let's run it.
~~~ ~~~
@ -52,34 +54,38 @@ It should do one of these.
$ $
~~~ ~~~
Oh, just an error message. Oh, it just produces an error message.
But this error message means that the GtkApplication object ran without a doubt. This error message means that the GtkApplication object ran, without a doubt.
Now, think about the message in the next subsection. Now, let's think about what this message means.
### signal ### signal
The message tells us that: The message tells us that:
1. The application GtkApplication doesn't implement `g_application_activate()`. 1. The application GtkApplication doesn't implement `g_application_activate()`,
2. And it has no handlers connected to the "activate" signal. 2. It has no handlers connected to the "activate" signal, and
3. You need to solve at least one of these. 3. You will need to solve at least one of these.
These two causes of the error are related to signals. These two causes of the error are related to signals.
So, I will explain it to you first. So, I will explain that to you first.
Signal is emitted when something happens. A signal is emitted when something happens.
For example, a window is created, a window is destroyed and so on. For example, a window is created, a window is destroyed and so on.
The signal "activate" is emitted when the application is activated. The signal "activate" is emitted when the application is activated, or started.
If the signal is connected to a function, which is called signal handler or simply handler, then the function is invoked when the signal emits. If the signal is connected to a function, which is called a signal handler or
simply handler, then the function is invoked when the signal emits.
The flow is like this: The flow is like this:
1. Something happens. 1. Something happens.
2. If it's related to a certain signal, then the signal is emitted. 2. If it's related to a certain signal, then the signal is emitted.
3. If the signal is connected to a handler in advance, then the handler is invoked. 3. If the signal as been connected to a handler, then the handler is invoked.
Signals are defined in objects. Signals are defined in objects.
For example, "activate" signal belongs to GApplication object, which is a parent object of GtkApplication object. For example, the "activate" signal belongs to the GApplication object, which is
GApplication object is a child object of GObject object. a parent object of GtkApplication object.
The GApplication object is a child object of the GObject object.
GObject is the top object in the hierarchy of all the objects. GObject is the top object in the hierarchy of all the objects.
~~~ ~~~
@ -88,7 +94,7 @@ GObject -- GApplication -- GtkApplication
~~~ ~~~
A child object inherits signals, functions, properties and so on from its parent object. A child object inherits signals, functions, properties and so on from its parent object.
So, Gtkapplication also has the "activate" signal. So, GtkApplication also has the "activate" signal.
Now we can solve the problem in `pr1.c`. Now we can solve the problem in `pr1.c`.
We need to connect the "activate" signal to a handler. We need to connect the "activate" signal to a handler.