ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
198 lines
5.4 KiB
C
198 lines
5.4 KiB
C
/* Example for use of GNU gettext.
|
|
This file is in the public domain.
|
|
|
|
Source code of the C program. */
|
|
|
|
|
|
/* Get GTK declarations. */
|
|
#include <gtk/gtk.h>
|
|
#include <glib/gi18n.h>
|
|
|
|
/* Get getpid() declaration. */
|
|
#if defined _WIN32 && !defined __CYGWIN__
|
|
/* native Windows API */
|
|
# include <process.h>
|
|
# define getpid _getpid
|
|
#else
|
|
/* POSIX API */
|
|
# include <unistd.h>
|
|
#endif
|
|
|
|
#define UI_PATH "/org/gnu/gettext/examples/hello/hello.ui"
|
|
#define APPLICATION_ID "org.gnu.gettext.examples.hello"
|
|
#define GSETTINGS_SCHEMA "org.gnu.gettext.examples.hello"
|
|
|
|
/* Forward declaration of GObject types. */
|
|
|
|
#define HELLO_TYPE_APPLICATION_WINDOW (hello_application_window_get_type ())
|
|
#define HELLO_APPLICATION_WINDOW(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
|
HELLO_TYPE_APPLICATION_WINDOW, \
|
|
HelloApplicationWindow))
|
|
|
|
typedef struct _HelloApplicationWindow HelloApplicationWindow;
|
|
typedef struct _HelloApplicationWindowClass HelloApplicationWindowClass;
|
|
|
|
#define HELLO_TYPE_APPLICATION (hello_application_get_type ())
|
|
#define HELLO_APPLICATION(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
|
HELLO_TYPE_APPLICATION, \
|
|
HelloApplication))
|
|
|
|
typedef struct _HelloApplication HelloApplication;
|
|
typedef struct _HelloApplicationClass HelloApplicationClass;
|
|
|
|
/* Custom application window implementation. */
|
|
|
|
struct _HelloApplicationWindow
|
|
{
|
|
GtkApplicationWindow parent;
|
|
GtkWidget *label;
|
|
GtkWidget *button;
|
|
GSettings *settings;
|
|
gsize label_id;
|
|
gchar *labels[3];
|
|
};
|
|
|
|
struct _HelloApplicationWindowClass
|
|
{
|
|
GtkApplicationWindowClass parent_class;
|
|
};
|
|
|
|
G_DEFINE_TYPE (HelloApplicationWindow, hello_application_window,
|
|
GTK_TYPE_APPLICATION_WINDOW);
|
|
|
|
static void
|
|
update_content (HelloApplicationWindow *window)
|
|
{
|
|
gtk_label_set_label (GTK_LABEL (window->label),
|
|
window->labels[window->label_id]);
|
|
window->label_id = (window->label_id + 1) % G_N_ELEMENTS (window->labels);
|
|
}
|
|
|
|
static void
|
|
hello_application_window_init (HelloApplicationWindow *window)
|
|
{
|
|
gtk_widget_init_template (GTK_WIDGET (window));
|
|
|
|
window->settings = g_settings_new (GSETTINGS_SCHEMA);
|
|
g_settings_bind (window->settings, "use-markup",
|
|
window->label, "use-markup",
|
|
G_SETTINGS_BIND_DEFAULT);
|
|
|
|
window->labels[0]
|
|
= g_strdup_printf (_("<big>Hello world!</big>\n"
|
|
"This program is running as "
|
|
"process number <b>%d</b>."),
|
|
getpid ());
|
|
window->labels[1]
|
|
= g_strdup (_("<big><u>This is another text</u></big>"));
|
|
window->labels[2]
|
|
= g_strdup (_("<big><i>This is yet another text</i></big>"));
|
|
|
|
update_content (window);
|
|
}
|
|
|
|
static void
|
|
hello_application_window_dispose (GObject *object)
|
|
{
|
|
HelloApplicationWindow *window = HELLO_APPLICATION_WINDOW (object);
|
|
g_clear_object (&window->settings);
|
|
}
|
|
|
|
static void
|
|
hello_application_window_class_init (HelloApplicationWindowClass *klass)
|
|
{
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
|
|
gobject_class->dispose = hello_application_window_dispose;
|
|
|
|
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
|
|
UI_PATH);
|
|
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass),
|
|
HelloApplicationWindow, label);
|
|
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass),
|
|
HelloApplicationWindow, button);
|
|
}
|
|
|
|
static HelloApplicationWindow *
|
|
hello_application_window_new (HelloApplication *application)
|
|
{
|
|
return g_object_new (HELLO_TYPE_APPLICATION_WINDOW,
|
|
"application", application,
|
|
NULL);
|
|
}
|
|
|
|
/* Custom application implementation. */
|
|
|
|
struct _HelloApplication
|
|
{
|
|
GtkApplication parent;
|
|
};
|
|
|
|
struct _HelloApplicationClass
|
|
{
|
|
GtkApplicationClass parent_class;
|
|
};
|
|
|
|
G_DEFINE_TYPE (HelloApplication, hello_application, GTK_TYPE_APPLICATION);
|
|
|
|
static void
|
|
hello_application_init (HelloApplication *application)
|
|
{
|
|
}
|
|
|
|
static void
|
|
clicked_callback (GtkWidget *widget, void *data)
|
|
{
|
|
update_content (HELLO_APPLICATION_WINDOW (data));
|
|
}
|
|
|
|
static void
|
|
hello_application_activate (GApplication *application)
|
|
{
|
|
HelloApplicationWindow *window;
|
|
|
|
window = hello_application_window_new (HELLO_APPLICATION (application));
|
|
g_signal_connect (window->button, "clicked",
|
|
G_CALLBACK (clicked_callback), window);
|
|
gtk_window_present (GTK_WINDOW (window));
|
|
}
|
|
|
|
static void
|
|
hello_application_class_init (HelloApplicationClass *klass)
|
|
{
|
|
G_APPLICATION_CLASS (klass)->activate = hello_application_activate;
|
|
}
|
|
|
|
static HelloApplication *
|
|
hello_application_new (void)
|
|
{
|
|
return g_object_new (HELLO_TYPE_APPLICATION,
|
|
"application-id", APPLICATION_ID,
|
|
NULL);
|
|
}
|
|
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
GApplication *application;
|
|
int status;
|
|
|
|
/* Load the GSettings schema from the current directory. */
|
|
g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE);
|
|
|
|
/* Initializations. */
|
|
textdomain ("hello-c-gnome3");
|
|
bindtextdomain ("hello-c-gnome3", LOCALEDIR);
|
|
|
|
/* Create application. */
|
|
application = G_APPLICATION (hello_application_new ());
|
|
|
|
/* Start the application. */
|
|
status = g_application_run (application, argc, argv);
|
|
g_object_unref (application);
|
|
|
|
return status;
|
|
}
|