[Xfce4-commits] <design:master> Add c demo.

Nick Schermer noreply at xfce.org
Tue May 31 19:20:01 CEST 2011


Updating branch refs/heads/master
         to 8bd24fe4440fd54644c7b833a3d836ab5e05023d (commit)
       from a865bdae23a07db6300c77119a874ec8b3192e9f (commit)

commit 8bd24fe4440fd54644c7b833a3d836ab5e05023d
Author: Nick Schermer <nick at xfce.org>
Date:   Tue May 31 19:15:51 2011 +0200

    Add c demo.

 .../merge-with-xfrun/demo-code/c/Makefile          |   10 +
 .../demo-code/c/appfinder-window.c                 |  224 ++++++++++++++++++++
 .../demo-code/c/appfinder-window.h                 |   28 +++
 .../merge-with-xfrun/demo-code/c/main.c            |   80 +++++++
 .../merge-with-xfrun/demo-code/{ => vala}/Makefile |    0
 .../demo-code/{ => vala}/mockup.vala               |    0
 6 files changed, 342 insertions(+), 0 deletions(-)

diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/c/Makefile b/xfce4-appfinder/merge-with-xfrun/demo-code/c/Makefile
new file mode 100644
index 0000000..b92b7db
--- /dev/null
+++ b/xfce4-appfinder/merge-with-xfrun/demo-code/c/Makefile
@@ -0,0 +1,10 @@
+
+all:
+	gcc -Wall -Werror -O0 -g -ggdb -pipe \
+	`pkg-config --libs --cflags gtk+-2.0` \
+	`pkg-config --libs --cflags libxfce4util-1.0` \
+	`pkg-config --libs --cflags garcon-1` \
+	`pkg-config --libs --cflags gthread-2.0` \
+	`pkg-config --libs --cflags libxfce4ui-1` \
+	main.c appfinder-window.c appfinder-window.h \
+	-o appfinder
diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c
new file mode 100644
index 0000000..9c0225f
--- /dev/null
+++ b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.c
@@ -0,0 +1,224 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <libxfce4util/libxfce4util.h>
+
+#include "appfinder-window.h"
+
+
+
+static void xfce_appfinder_window_finalize            (GObject              *object);
+static void xfce_appfinder_window_entry_icon_released (GtkEntry             *entry,
+                                                       GtkEntryIconPosition  icon_pos,
+                                                       GdkEvent             *event,
+                                                       XfceAppfinderWindow  *window);
+
+
+struct _XfceAppfinderWindowClass
+{
+  GtkWindowClass __parent__;
+};
+
+struct _XfceAppfinderWindow
+{
+  GtkWindow __parent__;
+
+  GtkWidget *paned;
+  GtkWidget *entry;
+};
+
+
+
+G_DEFINE_TYPE (XfceAppfinderWindow, xfce_appfinder_window, GTK_TYPE_WINDOW)
+
+
+
+static void
+xfce_appfinder_window_class_init (XfceAppfinderWindowClass *klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = xfce_appfinder_window_finalize;
+}
+
+
+
+static void
+xfce_appfinder_window_init (XfceAppfinderWindow *window)
+{
+  GtkWidget          *vbox;
+  GtkWidget          *entry;
+  GtkWidget          *pane;
+  GtkWidget          *scroll;
+  GtkWidget          *sidepane;
+  GtkWidget          *bbox;
+  GtkWidget          *button;
+  GtkWidget          *treeview;
+  GtkWidget          *image;
+  GtkWidget          *hbox;
+  /*GtkTreeViewColumn  *column;
+  GtkCellRenderer    *renderer;*/
+
+  gtk_window_set_title (GTK_WINDOW (window), _("Application Finder"));
+  gtk_window_set_default_size (GTK_WINDOW (window), 400 /* todo, remember */, -1);
+  gtk_window_set_icon_name (GTK_WINDOW (window), GTK_STOCK_EXECUTE);
+  g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL);
+
+  vbox = gtk_vbox_new (FALSE, 6);
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+  gtk_widget_show (vbox);
+
+  hbox = gtk_hbox_new (FALSE, 12);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+  gtk_widget_show (hbox);
+
+  image = gtk_image_new_from_icon_name ("terminal", GTK_ICON_SIZE_DIALOG);
+  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+  gtk_widget_show (image);
+
+  window->entry = entry = gtk_entry_new ();
+  gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
+  g_signal_connect (G_OBJECT (entry), "icon-release",
+      G_CALLBACK (xfce_appfinder_window_entry_icon_released), window);
+  gtk_widget_show (entry);
+
+  window->paned = pane = gtk_hpaned_new ();
+  gtk_box_pack_start (GTK_BOX (vbox), pane, TRUE, TRUE, 0);
+  gtk_paned_set_position (GTK_PANED (pane), 180 /* todo remember */);
+
+  scroll = gtk_scrolled_window_new (NULL, NULL);
+  gtk_paned_add1 (GTK_PANED (pane), scroll);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+  gtk_widget_show (scroll);
+
+  sidepane = gtk_tree_view_new ();
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (sidepane), FALSE);
+  /*gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (sidepane),
+      xfce_appfinder_model_row_separator_func, NULL, NULL);*/
+  gtk_container_add (GTK_CONTAINER (scroll), sidepane);
+  gtk_widget_show (sidepane);
+
+  /*selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidepane));
+  g_signal_connect_swapped (G_OBJECT (selection), "changed",
+      G_CALLBACK (xfce_appfinder_window_category_changed), window);*/
+
+  /* column = gtk_tree_view_column_new ();
+  gtk_tree_view_append_column (GTK_TREE_VIEW (sidepane), GTK_TREE_VIEW_COLUMN (column));
+
+  renderer = gtk_cell_renderer_pixbuf_new ();
+  gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE);
+  gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer,
+                                       "pixbuf", XFCE_APPFINDER_MODEL_COLUMN_ICON, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+  gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, TRUE);
+  gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer,
+                                       "text", XFCE_APPFINDER_MODEL_COLUMN_NAME, NULL); */
+
+  scroll = gtk_scrolled_window_new (NULL, NULL);
+  gtk_paned_add2 (GTK_PANED (pane), scroll);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+  gtk_widget_show (scroll);
+
+  treeview = gtk_tree_view_new ();
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
+  /* gtk_tree_view_set_tooltip_column (GTK_TREE_VIEW (treeview), XFCE_RUN_MODEL_COLUMN_TOOLTIP); */
+  gtk_container_add (GTK_CONTAINER (scroll), treeview);
+  gtk_widget_show (treeview);
+
+  /*renderer = gtk_cell_renderer_pixbuf_new ();
+  column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "pixbuf", XFCE_APPFINDER_MODEL_COLUMN_ICON, NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), GTK_TREE_VIEW_COLUMN (column));
+
+  renderer = gtk_cell_renderer_text_new ();
+  g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+  column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "markup", XFCE_APPFINDER_MODEL_COLUMN_NAME, NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), GTK_TREE_VIEW_COLUMN (column));*/
+
+  bbox = gtk_hbutton_box_new ();
+  gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0);
+  gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
+  gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 6);
+  gtk_widget_show (bbox);
+
+  button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+  gtk_container_add (GTK_CONTAINER (bbox), button);
+  g_signal_connect (G_OBJECT (button), "clicked",
+      G_CALLBACK (gtk_main_quit), NULL);
+  gtk_widget_show (button);
+
+  button = gtk_button_new_with_mnemonic ("La_unch");
+  gtk_container_add (GTK_CONTAINER (bbox), button);
+  gtk_widget_show (button);
+
+  image = gtk_image_new_from_stock (GTK_STOCK_EXECUTE, GTK_ICON_SIZE_BUTTON);
+  gtk_button_set_image (GTK_BUTTON (button), image);
+  gtk_widget_show (image);
+}
+
+
+
+static void
+xfce_appfinder_window_finalize (GObject *object)
+{
+  //XfceAppfinderWindow *window = XFCE_APPFINDER_WINDOW (object);
+
+  (*G_OBJECT_CLASS (xfce_appfinder_window_parent_class)->finalize) (object);
+}
+
+
+
+static void
+xfce_appfinder_window_entry_icon_released (GtkEntry             *entry,
+                                           GtkEntryIconPosition  icon_pos,
+                                           GdkEvent             *event,
+                                           XfceAppfinderWindow  *window)
+{
+  if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
+    xfce_appfinder_window_set_expanded (window, !gtk_widget_get_visible (window->paned));
+}
+
+
+
+GtkWidget *
+xfce_appfinder_window_new (void)
+{
+  return g_object_new (XFCE_TYPE_APPFINDER_WINDOW, NULL);
+}
+
+
+
+void
+xfce_appfinder_window_set_expanded (XfceAppfinderWindow *window,
+                                    gboolean             expanded)
+{
+  GdkGeometry hints;
+  gint        width;
+
+  if (expanded)
+    {
+      gtk_window_set_geometry_hints (GTK_WINDOW (window), NULL, NULL, 0);
+      gtk_window_get_size (GTK_WINDOW (window), &width, NULL);
+      gtk_window_resize (GTK_WINDOW (window), width, 500);
+    }
+  else
+    {
+      hints.max_height = -1;
+      hints.max_width = G_MAXINT;
+      gtk_window_set_geometry_hints (GTK_WINDOW (window), NULL, &hints, GDK_HINT_MAX_SIZE);
+    }
+
+  gtk_widget_set_visible (window->paned, expanded);
+  gtk_entry_set_icon_from_icon_name (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_SECONDARY,
+                                     expanded ? GTK_STOCK_GO_UP : GTK_STOCK_GO_DOWN);
+  gtk_entry_set_icon_tooltip_text (GTK_ENTRY (window->entry), GTK_ENTRY_ICON_SECONDARY,
+                                   expanded ? _("Collapse the icon views")
+                                            : _("Show all applications"));
+}
diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.h b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.h
new file mode 100644
index 0000000..46b4744
--- /dev/null
+++ b/xfce4-appfinder/merge-with-xfrun/demo-code/c/appfinder-window.h
@@ -0,0 +1,28 @@
+#ifndef __XFCE_APPFINDER_WINDOW_H__
+#define __XFCE_APPFINDER_WINDOW_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+typedef struct _XfceAppfinderWindowClass XfceAppfinderWindowClass;
+typedef struct _XfceAppfinderWindow      XfceAppfinderWindow;
+
+#define XFCE_TYPE_APPFINDER_WINDOW            (xfce_appfinder_window_get_type ())
+#define XFCE_APPFINDER_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFCE_TYPE_APPFINDER_WINDOW, XfceAppfinderWindow))
+#define XFCE_APPFINDER_WINDOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_APPFINDER_WINDOW, XfceAppfinderWindowClass))
+#define XFCE_IS_APPFINDER_WINDOW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFCE_TYPE_APPFINDER_WINDOW))
+#define XFCE_IS_APPFINDER_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_APPFINDER_WINDOW))
+#define XFCE_APPFINDER_WINDOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_APPFINDER_WINDOW, XfceAppfinderWindowClass))
+
+GType      xfce_appfinder_window_get_type     (void) G_GNUC_CONST;
+
+GtkWidget *xfce_appfinder_window_new          (void) G_GNUC_MALLOC;
+
+void       xfce_appfinder_window_set_expanded (XfceAppfinderWindow *window,
+                                               gboolean             expanded);
+
+G_END_DECLS
+
+#endif /* !__XFCE_APPFINDER_WINDOW_H__ */
+
diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/c/main.c b/xfce4-appfinder/merge-with-xfrun/demo-code/c/main.c
new file mode 100644
index 0000000..b603826
--- /dev/null
+++ b/xfce4-appfinder/merge-with-xfrun/demo-code/c/main.c
@@ -0,0 +1,80 @@
+#include <stdlib.h>
+#include <gtk/gtk.h>
+#include <libxfce4util/libxfce4util.h>
+#include <garcon/garcon.h>
+
+#include "appfinder-window.h"
+
+#define PACKAGE_NAME "xfce4-appfinder"
+#define PACKAGE_VERSION "4.9.0"
+#define PACKAGE_BUGREPORT "http://bugzilla.xfce.org"
+#define GETTEXT_PACKAGE PACKAGE_NAME
+#define PACKAGE_LOCALE_DIR "/opt/xfce/share/locale"
+
+
+
+static gboolean  opt_finder = FALSE;
+static gboolean  opt_version = FALSE;
+static gchar    *opt_filename = NULL;
+
+
+
+static GOptionEntry option_entries[] =
+{
+  { "finder", '\0', 0, G_OPTION_ARG_NONE, &opt_finder, N_("Start in expanded mode"), NULL },
+  { "version", 'V', 0, G_OPTION_ARG_NONE, &opt_version, N_("Print version information and exit"), NULL },
+  { G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME, &opt_filename, NULL, NULL },
+  { NULL }
+};
+
+
+
+gint
+main (gint argc, gchar **argv)
+{
+  GError    *error = NULL;
+  GtkWidget *window;
+
+  /* set translation domain */
+  xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+
+#ifdef G_ENABLE_DEBUG
+  /* do NOT remove this line for now, If something doesn't work,
+   * fix your code instead! */
+  g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING);
+#endif
+
+  if (!g_thread_supported ())
+    g_thread_init (NULL);
+
+  if (!gtk_init_with_args (&argc, &argv, _("[MENUFILE]"), option_entries, GETTEXT_PACKAGE, &error))
+    {
+      g_printerr ("%s: %s.\n", PACKAGE_NAME, error->message);
+      g_printerr (_("Type \"%s --help\" for usage."), PACKAGE_NAME);
+      g_printerr ("\n");
+      g_error_free (error);
+
+      return EXIT_FAILURE;
+    }
+
+  if (opt_version)
+    {
+      g_print ("%s %s (Xfce %s)\n\n", PACKAGE_NAME, PACKAGE_VERSION, xfce_version_string ());
+      g_print ("%s\n", "Copyright (c) 2004-2010");
+      g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved."));
+      g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT);
+      g_print ("\n");
+
+      return EXIT_SUCCESS;
+    }
+
+  garcon_set_environment ("XFCE");
+
+  window = xfce_appfinder_window_new ();
+  xfce_appfinder_window_set_expanded (XFCE_APPFINDER_WINDOW (window), opt_finder);
+  gtk_widget_show (window);
+
+  gtk_main ();
+
+  return EXIT_SUCCESS;
+}
diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/Makefile b/xfce4-appfinder/merge-with-xfrun/demo-code/vala/Makefile
similarity index 100%
rename from xfce4-appfinder/merge-with-xfrun/demo-code/Makefile
rename to xfce4-appfinder/merge-with-xfrun/demo-code/vala/Makefile
diff --git a/xfce4-appfinder/merge-with-xfrun/demo-code/mockup.vala b/xfce4-appfinder/merge-with-xfrun/demo-code/vala/mockup.vala
similarity index 100%
rename from xfce4-appfinder/merge-with-xfrun/demo-code/mockup.vala
rename to xfce4-appfinder/merge-with-xfrun/demo-code/vala/mockup.vala



More information about the Xfce4-commits mailing list