Learning_GTK4_tree/demos/gtk-demo/layoutmanager2.c

200 lines
6.4 KiB
C
Raw Normal View History

2023-12-12 11:36:42 +01:00
/* Layout Manager/Transformation
* #Keywords: GtkLayoutManager, GskTransform
*
* This demo shows how to use transforms in a nontrivial
* way with a custom layout manager. The layout manager places
* icons on a sphere that can be rotated using arrow keys.
*/
#include <gtk/gtk.h>
#include "demo2widget.h"
#include "demo2layout.h"
#include "demochild.h"
GtkWidget *
do_layoutmanager2 (GtkWidget *parent)
{
static GtkWidget *window = NULL;
if (!window)
{
GtkWidget *widget;
GtkWidget *child;
const char *name[] = {
"action-unavailable-symbolic",
"address-book-new-symbolic",
"application-exit-symbolic",
"appointment-new-symbolic",
"bookmark-new-symbolic",
"call-start-symbolic",
"call-stop-symbolic",
"camera-switch-symbolic",
"chat-message-new-symbolic",
"color-select-symbolic",
"contact-new-symbolic",
"document-edit-symbolic",
"document-new-symbolic",
"document-open-recent-symbolic",
"document-open-symbolic",
"document-page-setup-symbolic",
"document-print-preview-symbolic",
"document-print-symbolic",
"document-properties-symbolic",
"document-revert-symbolic-rtl",
"document-revert-symbolic",
"document-save-as-symbolic",
"document-save-symbolic",
"document-send-symbolic",
"edit-clear-all-symbolic",
"edit-clear-symbolic-rtl",
"edit-clear-symbolic",
"edit-copy-symbolic",
"edit-cut-symbolic",
"edit-delete-symbolic",
"edit-find-replace-symbolic",
"edit-find-symbolic",
"edit-paste-symbolic",
"edit-redo-symbolic-rtl",
"edit-redo-symbolic",
"edit-select-all-symbolic",
"edit-select-symbolic",
"edit-undo-symbolic-rtl",
"edit-undo-symbolic",
"error-correct-symbolic",
"find-location-symbolic",
"folder-new-symbolic",
"font-select-symbolic",
"format-indent-less-symbolic-rtl",
"format-indent-less-symbolic",
"format-indent-more-symbolic-rtl",
"format-indent-more-symbolic",
"format-justify-center-symbolic",
"format-justify-fill-symbolic",
"format-justify-left-symbolic",
"format-justify-right-symbolic",
"format-text-bold-symbolic",
"format-text-direction-symbolic-rtl",
"format-text-direction-symbolic",
"format-text-italic-symbolic",
"format-text-strikethrough-symbolic",
"format-text-underline-symbolic",
"go-bottom-symbolic",
"go-down-symbolic",
"go-first-symbolic-rtl",
"go-first-symbolic",
"go-home-symbolic",
"go-jump-symbolic-rtl",
"go-jump-symbolic",
"go-last-symbolic-rtl",
"go-last-symbolic",
"go-next-symbolic-rtl",
"go-next-symbolic",
"go-previous-symbolic-rtl",
"go-previous-symbolic",
"go-top-symbolic",
"go-up-symbolic",
"help-about-symbolic",
"insert-image-symbolic",
"insert-link-symbolic",
"insert-object-symbolic",
"insert-text-symbolic",
"list-add-symbolic",
"list-remove-all-symbolic",
"list-remove-symbolic",
"mail-forward-symbolic",
"mail-mark-important-symbolic",
"mail-mark-junk-symbolic",
"mail-mark-notjunk-symbolic",
"mail-message-new-symbolic",
"mail-reply-all-symbolic",
"mail-reply-sender-symbolic",
"mail-send-receive-symbolic",
"mail-send-symbolic",
"mark-location-symbolic",
"media-eject-symbolic",
"media-playback-pause-symbolic",
"media-playback-start-symbolic",
"media-playback-stop-symbolic",
"media-record-symbolic",
"media-seek-backward-symbolic",
"media-seek-forward-symbolic",
"media-skip-backward-symbolic",
"media-skip-forward-symbolic",
"media-view-subtitles-symbolic",
"object-flip-horizontal-symbolic",
"object-flip-vertical-symbolic",
"object-rotate-left-symbolic",
"object-rotate-right-symbolic",
"object-select-symbolic",
"open-menu-symbolic",
"process-stop-symbolic",
"send-to-symbolic",
"sidebar-hide-symbolic",
"sidebar-show-symbolic",
"star-new-symbolic",
"system-log-out-symbolic",
"system-reboot-symbolic",
"system-run-symbolic",
"system-search-symbolic",
"system-shutdown-symbolic",
"system-switch-user-symbolic",
"tab-new-symbolic",
"tools-check-spelling-symbolic",
"value-decrease-symbolic",
"value-increase-symbolic",
"view-app-grid-symbolic",
"view-conceal-symbolic",
"view-continuous-symbolic",
"view-dual-symbolic",
"view-fullscreen-symbolic",
"view-grid-symbolic",
"view-list-bullet-symbolic",
"view-list-ordered-symbolic",
"view-list-symbolic",
"view-mirror-symbolic",
"view-more-horizontal-symbolic",
"view-more-symbolic",
"view-paged-symbolic",
"view-pin-symbolic",
"view-refresh-symbolic",
"view-restore-symbolic",
"view-reveal-symbolic",
"view-sort-ascending-symbolic",
"view-sort-descending-symbolic",
"zoom-fit-best-symbolic",
"zoom-in-symbolic",
"zoom-original-symbolic",
"zoom-out-symbolic",
};
int i;
window = gtk_window_new ();
gtk_window_set_title (GTK_WINDOW (window), "Layout ManagerTransformation");
gtk_window_set_default_size (GTK_WINDOW (window), 600, 620);
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
widget = demo2_widget_new ();
for (i = 0; i < 18 * 36; i++)
{
child = gtk_image_new_from_icon_name (name[i % G_N_ELEMENTS (name)]);
gtk_widget_set_margin_start (child, 4);
gtk_widget_set_margin_end (child, 4);
gtk_widget_set_margin_top (child, 4);
gtk_widget_set_margin_bottom (child, 4);
demo2_widget_add_child (DEMO2_WIDGET (widget), child);
}
gtk_window_set_child (GTK_WINDOW (window), widget);
}
if (!gtk_widget_get_visible (window))
gtk_widget_set_visible (window, TRUE);
else
gtk_window_destroy (GTK_WINDOW (window));
return window;
}