β’ ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: calc β ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π½Π°Π·Π²Π°Π½ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΡΠ°ΠΉΠ».
β’ Π€Π°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ°: calc.glade.
β’ ΠΠ°ΡΠ°Π»ΠΎΠ³ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: src (~/Projects/Calc/src).
β’ ΠΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ: pixmap.
β’ Π―Π·ΡΠΊ: Π‘.
β’ ΠΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Gnome: ΠΠ°.
β¦ ΠΠΊΠ»Π°Π΄ΠΊΠ° Β«ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ CΒ»
β’ ΠΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/Projects/Calc Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ° calc.glade. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΡΠ·ΡΠΊΠ΅ XML. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 25.1 β ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ.
ΠΠΈΡΡΠΈΠ½Π³ 25.1. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° calc.glade
<?xml version="1.0"?>
<GTK-Interface>
<project>
<name>Calc</name>
<program_name>calc</program_name>
<directory></directory>
<source_directory>src</sourceβdirectory>
<pixmaps_directory>pixmaps</pixmaps_directory >
<language>C</language>
<gnome_support>True</gnome_support>
<gettext_support>True</gettext_support>
</project>
<widget>
<class>GtkWindow</class>
<name>window1</name>
<border_width>7</border_width>
<title>window1</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<widget>
<class>GtkVBox</class>
<name>vbox2</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkEntry</class>
<name>entry1</name>
<height>50</height>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text>0</text>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
...
</widget>
...
</widget>
...
</GTK-Interface>
ΠΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Calc Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ. Π Π³Π΄Π΅ ΠΆΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄? Π Π³Π΄Π΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ? Π§ΡΠΎΠ±Ρ Glade ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠΎΡΡΡΠΎΠΈΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Glade. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ calc Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Π°Ρ Π½Π° ΡΠΈΡ. 24.8.
Π ΠΈΡ. 24.8. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ macros Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ΅Π΄Ρ Gnome. ΠΠ°ΡΠ°Π»ΠΎΠ³ po ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π°Ρ β Π² Π½Π΅Π³ΠΎ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π²Π½ΠΎΡΠΈΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠ°ΡΠ°Π»ΠΎΠ³ src ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ src Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. Π Π½Π΅ΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ:
β¦ interface.*, support.* β ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ Glade, ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ;
β¦ callback.* β ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ. Π§ΡΠΎΠ±Ρ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄Π΅Π»Π°Π»Π°, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» callback.c;
β¦ make.c β Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ», Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΉΠ» callback.c β Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. Glade ΡΠΎΠ·Π΄Π°Π»Π° Π΄Π»Ρ Π²Π°Ρ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
ΠΠΈΡΡΠΈΠ½Π³ 25.2. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π° callback.c
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gnome.h>
#include "callbacks.h"
#include "interface.h"
#include "support.h"
void
on_button_clicked (GtkButton *button,
gpointer user_data) {
}
void
ce_button_clicked (GtkButton *button,
gpointer user_data) {
}
...
void
on_button9_clicked (GtkButton *button,
gpointer user_data) {
}
ΠΠΏΠΈΡΠ°Π² Π² ΡΡΠΈ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ Π½ΡΠΆΠ½ΡΠ΅ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ calc ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ make.
24.4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Ρ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· ΠΏΡΠ½ΠΊΡΠΎΠ² Π€Π°ΠΉΠ», ΠΡΠ°Π²ΠΊΠ°, ΠΠΈΠ΄ ΠΈ Ρ.ΠΏ., ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡ ΠΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gnome (ΡΠΈΡ. 24.9) β Π²Ρ Π΅Π³ΠΎ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡΠΎΠ² Gnome.
Π ΠΈΡ. 24.9. ΠΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Gnome
ΠΡΠΎ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΎΠΊΠ½Π° Ρ ΠΌΠ΅Π½Ρ, ΠΏΠ°Π½Π΅Π»ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΡΠΎΠΊΠΎΠΉ ΡΡΠ°ΡΡΡΠ°. Π£Π΄ΠΎΠ±Π½ΠΎ?
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ, ΡΠΎ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡ ΠΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΈΠ΄ΠΆΠΈΡΠΎΠ² ΠΎΠΊΠ½Π° ΠΠ°Π»ΠΈΡΡΠ°. Π ΠΎΠΊΠ½Π΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠ΅Π½Ρ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΡΠ°Π²ΠΊΠ° ΠΌΠ΅Π½Ρ. Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
β¦ ΠΠ΅ΡΠΊΠ° β ΡΡΡ Π½Π°Π΄ΠΏΠΈΡΡ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
β¦ ΠΠΌΡ β ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ.
β¦ ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ β ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.
β¦ ΠΠΊΠΎΠ½ΠΊΠ° β ΠΈΠΊΠΎΠ½ΠΊΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ.
β¦ ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° β ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅ ΡΡΠ°ΡΡΡΠ° ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ.
β¦ Π’ΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° β ΠΎΠ±ΡΡΠ½ΡΠΉ, Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ (ΡΠ°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠ°) ΠΈΠ»ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ (ΡΠ»Π°ΠΆΠΎΠΊ) ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ.
β¦ Π£ΡΠΊΠΎΡΠΈΡΠ΅Π»Ρ β Π³ΠΎΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ.
Π ΠΈΡ. 24.10. Π Π΅Π΄Π°ΠΊΡΠΎΡ ΠΌΠ΅Π½Ρ
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ΅Π»ΠΎΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ.
24.5. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡΡ
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠΈΡΠΎΠ² Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅, β ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΠΈΠ΄ΠΆΠΈΡ ΠΏΠΎ-ΡΠ²ΠΎΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½. ΠΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡΡ:
β¦ Π¨ΠΊΠ°Π»Π° β Π²ΠΈΠ΄ΠΆΠΈΡ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΉ ΡΠΏΠΈΠ΄ΠΎΠΌΠ΅ΡΡ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Gnome.
β¦ ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ° β Π΅ΡΠ»ΠΈ ΡΡΠΎΡ Π²ΠΈΠ΄ΠΆΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ Π²ΡΠ±ΠΎΡΠ° ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΡΠ±ΠΎΡΠ° ΡΠ²Π΅ΡΠ° ΡΡΠ΅Π΄Ρ Gnome (Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ),
β¦ ΠΡΠ±ΠΎΡ ΡΡΠΈΡΡΠ° β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠΈΡΡ (Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ).
β¦ ΠΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ² β ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ² (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ OK, ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ, ΠΠ°ΠΊΡΡΡΡ, Π‘ΠΏΡΠ°Π²ΠΊΠ° (Π²ΠΊΠ»Π°Π΄ΠΊΠ° Gnome).
Π ΠΈΡ. 24.11. Π¨ΠΊΠ°Π»Π°
Π ΠΈΡ. 24.12. ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ°
Π ΠΈΡ. 24.13. ΠΡΠ±ΠΎΡ ΡΡΠΈΡΡΠ°
Π ΠΈΡ. 24.14. ΠΠΊΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²
ΠΠ»Π°Π²Π° 25
ΠΠ°ΠΊΠ΅Ρ Dialog
25.1. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Dialog?
ΠΠ°ΠΊΠ΅Ρ dialog ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠΏ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ bash. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² GTK+, Π½Π°Π·ΡΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠΈΡΠ°ΠΌΠΈ. ΠΠ°ΠΊΠ΅Ρ dialog ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡΡ:
β¦ Infobox, Msgbox β Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
β¦ Inputbox β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ;
β¦ Calendar β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ Π΄Π°ΡΡ;
β¦ Radiolist β ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ;
β¦ Checklist β ΡΠΏΠΈΡΠΎΠΊ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ;
β¦ Menubox β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅Π½Ρ;
β¦ Gauge β ΡΠΊΠ°Π»Π° ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠ°ΠΊΠ΅Ρ dialog, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/share/doc/dialog-<Π²Π΅ΡΡΠΈΡ> Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
25.2. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ β ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠΈΡΠ° β Infobox ΠΈΠ»ΠΈ Msgbox. ΠΠ΅ΡΠ²ΡΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π΅ ΠΆΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠΈ, Π° Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΈΠ΄ΠΆΠΈΡ Msgbox ΠΆΠ΄Π΅Ρ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ OK ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΡ Enter.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠΈΡΠ° Msgbox:
ΠΠΈΡΡΠΈΠ½Π³ 25.1. ΠΠΈΠ΄ΠΆΠΈΡ Msgbox
#!/bin/sh
DIALOG=${DIALOG=dialog}
$DIALOG --title "MESSAGE BOX" --clear \
--msgbox "ΠΡΠΎΡ Π²ΠΈΠ΄ΠΆΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° \
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π΅Ρ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΌΠ΅Ρ Enter" 10 41
case $? in
0)
echo "OK";;
255)
echo "ΠΠ°ΠΆΠ°ΡΠ° ESC.";;
esac
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ Π΅ΡΡΡ ΡΡΠΎ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ --title ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ dialog Π·Π°Π΄Π°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²ΠΈΠ΄ΠΆΠΈΡΠ° (ΡΠΈΡ. 25.1) ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ --msgbox ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΈΠΏ Π²ΠΈΠ΄ΠΆΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ. Π ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (\b, \n, \t,\ a ΠΈ Π΄Ρ.). ΠΠΎΡΠ»Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²ΠΈΠ΄ΠΆΠΈΡΠ°.
Π ΠΈΡ. 25.1. ΠΠΈΠ΄ΠΆΠΈΡ Msgbox
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ dialog Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» OK (ΠΈΠ»ΠΈ <ΠΠ²ΠΎΠ΄>), ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0, Π° Π΅ΡΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΡ Esc, ΡΠΎ 255.
ΠΠΈΠ΄ΠΆΠΈΡ Infobox ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
ΠΠΈΡΡΠΈΠ½Π³ 25.2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠΈΡΠ° Infobox