From 341f51eb415c98c201b7744cea9ebc1fff321ad4 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Fri, 17 Sep 2010 19:03:03 +0200
Subject: Renamed source files.
Also a little change in CMakeLists.txt.
The next commit is going to change the object prefix.
---
CMakeLists.txt | 27 ++--
src/canvas.c | 99 -------------
src/canvas.h | 59 --------
src/document.c | 0
src/document.h | 91 ------------
src/ld-canvas.c | 99 +++++++++++++
src/ld-canvas.h | 59 ++++++++
src/ld-document.c | 0
src/ld-document.h | 91 ++++++++++++
src/ld-symbol-category.h | 68 +++++++++
src/ld-symbol-library.c | 373 +++++++++++++++++++++++++++++++++++++++++++++++
src/ld-symbol-library.h | 69 +++++++++
src/ld-symbol.h | 69 +++++++++
src/ld-window-main.c | 351 ++++++++++++++++++++++++++++++++++++++++++++
src/ld-window-main.h | 60 ++++++++
src/logdiag.c | 39 +++++
src/main.c | 39 -----
src/symbol-category.h | 68 ---------
src/symbol-library.c | 373 -----------------------------------------------
src/symbol-library.h | 69 ---------
src/symbol.h | 69 ---------
src/window-main.c | 351 --------------------------------------------
src/window-main.h | 60 --------
23 files changed, 1293 insertions(+), 1290 deletions(-)
delete mode 100644 src/canvas.c
delete mode 100644 src/canvas.h
delete mode 100644 src/document.c
delete mode 100644 src/document.h
create mode 100644 src/ld-canvas.c
create mode 100644 src/ld-canvas.h
create mode 100644 src/ld-document.c
create mode 100644 src/ld-document.h
create mode 100644 src/ld-symbol-category.h
create mode 100644 src/ld-symbol-library.c
create mode 100644 src/ld-symbol-library.h
create mode 100644 src/ld-symbol.h
create mode 100644 src/ld-window-main.c
create mode 100644 src/ld-window-main.h
create mode 100644 src/logdiag.c
delete mode 100644 src/main.c
delete mode 100644 src/symbol-category.h
delete mode 100644 src/symbol-library.c
delete mode 100644 src/symbol-library.h
delete mode 100644 src/symbol.h
delete mode 100644 src/window-main.c
delete mode 100644 src/window-main.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc09eb2..d51af9c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,10 @@ endif (OPTION_NOINSTALL)
set (project_VERSION_MAJOR "0")
set (project_VERSION_MINOR "0")
set (project_VERSION_PATCH "1")
-set (project_VERSION "0.0.1")
+
+set (project_VERSION "${project_VERSION_MAJOR}")
+set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}")
+set (project_VERSION "${project_VERSION}.${project_VERSION_PATCH}")
# For custom modules
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@@ -76,19 +79,19 @@ GTK_DOC_RUN (WORKING_DIR ${project_DOC_DIR}
# Project source files
set (logdiag_SOURCES
- src/main.c
- src/window-main.c
- src/document.c
- src/canvas.c
- src/symbol-library.c)
+ src/logdiag.c
+ src/ld-window-main.c
+ src/ld-document.c
+ src/ld-canvas.c
+ src/ld-symbol-library.c)
set (logdiag_HEADERS
${CMAKE_CURRENT_BINARY_DIR}/config.h
- src/window-main.h
- src/document.h
- src/canvas.h
- src/symbol.h
- src/symbol-category.h
- src/symbol-library.h)
+ src/ld-window-main.h
+ src/ld-document.h
+ src/ld-canvas.h
+ src/ld-symbol.h
+ src/ld-symbol-category.h
+ src/ld-symbol-library.h)
# Generate a configure file
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
diff --git a/src/canvas.c b/src/canvas.c
deleted file mode 100644
index 0168639..0000000
--- a/src/canvas.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * canvas.c
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#include
-
-#include "config.h"
-
-#include "canvas.h"
-#include "document.h"
-
-/* http://www.gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28 */
-
-/**
- * SECTION:canvas
- * @short_description: A canvas.
- * @see_also: #LogdiagDocument
- *
- * #LogdiagCanvas is used for displaying #LogdiagDocument objects.
- */
-
-/*
- * LogdiagCanvasPrivate:
- * @document: A document object assigned to this canvas as a model.
- */
-struct _LogdiagCanvasPrivate
-{
- LogdiagDocument *document;
-};
-
-G_DEFINE_TYPE (LogdiagCanvas, logdiag_canvas, GTK_TYPE_DRAWING_AREA);
-
-static void
-logdiag_canvas_finalize (GObject *gobject);
-
-
-static void
-logdiag_canvas_class_init (LogdiagCanvasClass *klass)
-{
- GObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = logdiag_canvas_finalize;
-
- widget_class = GTK_WIDGET_CLASS (klass);
-
-/**
- * LogdiagCanvas::set-scroll-adjustments:
- * @canvas: The canvas object.
- *
- * Contents of the library have changed.
- */
-/*
- widget_class->set_scroll_adjustments_signal = g_signal_new
- ("set-scroll-adjustments", G_TYPE_FROM_CLASS (widget_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- 0, // G_STRUCT_OFFSET (LogdiagCanvasClass, ...)
- NULL, NULL,
- gtk_marshal_NONE__POINTER_POINTER,
- G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-*/
- g_type_class_add_private (klass, sizeof (LogdiagCanvasPrivate));
-}
-
-static void
-logdiag_canvas_init (LogdiagCanvas *self)
-{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LOGDIAG_TYPE_CANVAS, LogdiagCanvasPrivate);
-}
-
-static void
-logdiag_canvas_finalize (GObject *gobject)
-{
- LogdiagCanvas *self;
-
- self = LOGDIAG_CANVAS (gobject);
-
- /* Chain up to the parent class. */
- G_OBJECT_CLASS (logdiag_canvas_parent_class)->finalize (gobject);
-}
-
-/**
- * logdiag_canvas_new:
- *
- * Create an instance.
- */
-LogdiagCanvas *
-logdiag_canvas_new (void)
-{
- return g_object_new (LOGDIAG_TYPE_CANVAS, NULL);
-}
diff --git a/src/canvas.h b/src/canvas.h
deleted file mode 100644
index be3539a..0000000
--- a/src/canvas.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * canvas.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __CANVAS_H__
-#define __CANVAS_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_CANVAS (logdiag_canvas_get_type ())
-#define LOGDIAG_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_CANVAS, LogdiagCanvas))
-#define LOGDIAG_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_CANVAS, LogdiagCanvasClass))
-#define LOGDIAG_IS_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_CANVAS))
-#define LOGDIAG_IS_CANVAS_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_CANVAS))
-#define LOGDIAG_CANVAS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_CANVAS, LogdiagCanvasClass))
-
-typedef struct _LogdiagCanvas LogdiagCanvas;
-typedef struct _LogdiagCanvasPrivate LogdiagCanvasPrivate;
-typedef struct _LogdiagCanvasClass LogdiagCanvasClass;
-
-
-/**
- * LogdiagCanvas:
- */
-struct _LogdiagCanvas
-{
-/*< private >*/
- GtkDrawingArea parent_instance;
- LogdiagCanvasPrivate *priv;
-
-/*< public >*/
-};
-
-struct _LogdiagCanvasClass
-{
- GtkDrawingAreaClass parent_class;
-};
-
-
-GType logdiag_canvas_get_type (void) G_GNUC_CONST;
-
-LogdiagCanvas *logdiag_canvas_new (void);
-
-
-G_END_DECLS
-
-#endif /* ! __CANVAS_H__ */
diff --git a/src/document.c b/src/document.c
deleted file mode 100644
index e69de29..0000000
diff --git a/src/document.h b/src/document.h
deleted file mode 100644
index 198d8f8..0000000
--- a/src/document.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * document.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __DOCUMENT_H__
-#define __DOCUMENT_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_DOCUMENT (logdiag_symbol_library_get_type ())
-#define LOGDIAG_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_DOCUMENT, LogdiagDocument))
-#define LOGDIAG_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_DOCUMENT, LogdiagDocumentClass))
-#define LOGDIAG_IS_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_DOCUMENT))
-#define LOGDIAG_IS_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_DOCUMENT))
-#define LOGDIAG_DOCUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_DOCUMENT, LogdiagDocumentClass))
-
-typedef struct _LogdiagDocument LogdiagDocument;
-/*typedef struct _LogdiagDocumentPrivate LogdiagDocumentPrivate;*/
-typedef struct _LogdiagDocumentClass LogdiagDocumentClass;
-
-
-/**
- * LogdiagDocument:
- */
-struct _LogdiagDocument
-{
-/*< private >*/
- GObject parent_instance;
-
-/*< public >*/
-};
-
-struct _LogdiagDocumentClass
-{
- GObjectClass parent_class;
-};
-
-
-GType logdiag_document_get_type (void) G_GNUC_CONST;
-
-LogdiagDocument *logdiag_document_new (void);
-gboolean logdiag_document_new_from_file (const char *file_name, GError *error);
-gboolean logdiag_document_save_to_file (const char *file_name, GError *error);
-
-#if 0
-/*
- * LogdiagDocumentPrivate:
- * @objects: All the objects in the document.
- */
-struct _LogdiagDocumentPrivate
-{
- GSList *objects;
-};
-
-/** The contents of the document have changed. */
-signal documentChanged (...);
-
-/* TODO: A list of objects: */
-LogdiagDocumentSymbol
-LogdiagDocumentLabel
-
-logdiag_document_add_symbol (LogdiagSymbol *symbol, x, y);
-
-/* XXX: Separated lists of objects
- * or a single list for all objects?
- */
-/* TODO: Wires. */
-logdiag_document_selection_...
-logdiag_document_selection_get_json (LogdiagDocument *self);
-logdiag_document_insert_json (LogdiagDocument *self);
-/** Go back or forward in the history of changes. */
-/* TODO: An interface that informs about the history. */
-logdiag_document_history_go (LogdiagDocument *self);
-#endif /* 0 */
-
-
-G_END_DECLS
-
-#endif /* ! __DOCUMENT_H__ */
diff --git a/src/ld-canvas.c b/src/ld-canvas.c
new file mode 100644
index 0000000..17e38a4
--- /dev/null
+++ b/src/ld-canvas.c
@@ -0,0 +1,99 @@
+/*
+ * ld-canvas.c
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#include
+
+#include "config.h"
+
+#include "ld-canvas.h"
+#include "ld-document.h"
+
+/* http://www.gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28 */
+
+/**
+ * SECTION:ld-canvas
+ * @short_description: A canvas.
+ * @see_also: #LogdiagDocument
+ *
+ * #LogdiagCanvas is used for displaying #LogdiagDocument objects.
+ */
+
+/*
+ * LogdiagCanvasPrivate:
+ * @document: A document object assigned to this canvas as a model.
+ */
+struct _LogdiagCanvasPrivate
+{
+ LogdiagDocument *document;
+};
+
+G_DEFINE_TYPE (LogdiagCanvas, logdiag_canvas, GTK_TYPE_DRAWING_AREA);
+
+static void
+logdiag_canvas_finalize (GObject *gobject);
+
+
+static void
+logdiag_canvas_class_init (LogdiagCanvasClass *klass)
+{
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = logdiag_canvas_finalize;
+
+ widget_class = GTK_WIDGET_CLASS (klass);
+
+/**
+ * LogdiagCanvas::set-scroll-adjustments:
+ * @canvas: The canvas object.
+ *
+ * Contents of the library have changed.
+ */
+/*
+ widget_class->set_scroll_adjustments_signal = g_signal_new
+ ("set-scroll-adjustments", G_TYPE_FROM_CLASS (widget_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0, // G_STRUCT_OFFSET (LogdiagCanvasClass, ...)
+ NULL, NULL,
+ gtk_marshal_NONE__POINTER_POINTER,
+ G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
+*/
+ g_type_class_add_private (klass, sizeof (LogdiagCanvasPrivate));
+}
+
+static void
+logdiag_canvas_init (LogdiagCanvas *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE
+ (self, LOGDIAG_TYPE_CANVAS, LogdiagCanvasPrivate);
+}
+
+static void
+logdiag_canvas_finalize (GObject *gobject)
+{
+ LogdiagCanvas *self;
+
+ self = LOGDIAG_CANVAS (gobject);
+
+ /* Chain up to the parent class. */
+ G_OBJECT_CLASS (logdiag_canvas_parent_class)->finalize (gobject);
+}
+
+/**
+ * logdiag_canvas_new:
+ *
+ * Create an instance.
+ */
+LogdiagCanvas *
+logdiag_canvas_new (void)
+{
+ return g_object_new (LOGDIAG_TYPE_CANVAS, NULL);
+}
diff --git a/src/ld-canvas.h b/src/ld-canvas.h
new file mode 100644
index 0000000..7dfd539
--- /dev/null
+++ b/src/ld-canvas.h
@@ -0,0 +1,59 @@
+/*
+ * ld-canvas.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __CANVAS_H__
+#define __CANVAS_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_CANVAS (logdiag_canvas_get_type ())
+#define LOGDIAG_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_CANVAS, LogdiagCanvas))
+#define LOGDIAG_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_CANVAS, LogdiagCanvasClass))
+#define LOGDIAG_IS_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_CANVAS))
+#define LOGDIAG_IS_CANVAS_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_CANVAS))
+#define LOGDIAG_CANVAS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_CANVAS, LogdiagCanvasClass))
+
+typedef struct _LogdiagCanvas LogdiagCanvas;
+typedef struct _LogdiagCanvasPrivate LogdiagCanvasPrivate;
+typedef struct _LogdiagCanvasClass LogdiagCanvasClass;
+
+
+/**
+ * LogdiagCanvas:
+ */
+struct _LogdiagCanvas
+{
+/*< private >*/
+ GtkDrawingArea parent_instance;
+ LogdiagCanvasPrivate *priv;
+
+/*< public >*/
+};
+
+struct _LogdiagCanvasClass
+{
+ GtkDrawingAreaClass parent_class;
+};
+
+
+GType logdiag_canvas_get_type (void) G_GNUC_CONST;
+
+LogdiagCanvas *logdiag_canvas_new (void);
+
+
+G_END_DECLS
+
+#endif /* ! __CANVAS_H__ */
diff --git a/src/ld-document.c b/src/ld-document.c
new file mode 100644
index 0000000..e69de29
diff --git a/src/ld-document.h b/src/ld-document.h
new file mode 100644
index 0000000..b40db52
--- /dev/null
+++ b/src/ld-document.h
@@ -0,0 +1,91 @@
+/*
+ * ld-document.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __DOCUMENT_H__
+#define __DOCUMENT_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_DOCUMENT (logdiag_symbol_library_get_type ())
+#define LOGDIAG_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_DOCUMENT, LogdiagDocument))
+#define LOGDIAG_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_DOCUMENT, LogdiagDocumentClass))
+#define LOGDIAG_IS_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_DOCUMENT))
+#define LOGDIAG_IS_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_DOCUMENT))
+#define LOGDIAG_DOCUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_DOCUMENT, LogdiagDocumentClass))
+
+typedef struct _LogdiagDocument LogdiagDocument;
+/*typedef struct _LogdiagDocumentPrivate LogdiagDocumentPrivate;*/
+typedef struct _LogdiagDocumentClass LogdiagDocumentClass;
+
+
+/**
+ * LogdiagDocument:
+ */
+struct _LogdiagDocument
+{
+/*< private >*/
+ GObject parent_instance;
+
+/*< public >*/
+};
+
+struct _LogdiagDocumentClass
+{
+ GObjectClass parent_class;
+};
+
+
+GType logdiag_document_get_type (void) G_GNUC_CONST;
+
+LogdiagDocument *logdiag_document_new (void);
+gboolean logdiag_document_new_from_file (const char *file_name, GError *error);
+gboolean logdiag_document_save_to_file (const char *file_name, GError *error);
+
+#if 0
+/*
+ * LogdiagDocumentPrivate:
+ * @objects: All the objects in the document.
+ */
+struct _LogdiagDocumentPrivate
+{
+ GSList *objects;
+};
+
+/** The contents of the document have changed. */
+signal documentChanged (...);
+
+/* TODO: A list of objects: */
+LogdiagDocumentSymbol
+LogdiagDocumentLabel
+
+logdiag_document_add_symbol (LogdiagSymbol *symbol, x, y);
+
+/* XXX: Separated lists of objects
+ * or a single list for all objects?
+ */
+/* TODO: Wires. */
+logdiag_document_selection_...
+logdiag_document_selection_get_json (LogdiagDocument *self);
+logdiag_document_insert_json (LogdiagDocument *self);
+/** Go back or forward in the history of changes. */
+/* TODO: An interface that informs about the history. */
+logdiag_document_history_go (LogdiagDocument *self);
+#endif /* 0 */
+
+
+G_END_DECLS
+
+#endif /* ! __DOCUMENT_H__ */
diff --git a/src/ld-symbol-category.h b/src/ld-symbol-category.h
new file mode 100644
index 0000000..48c2701
--- /dev/null
+++ b/src/ld-symbol-category.h
@@ -0,0 +1,68 @@
+/*
+ * ld-symbol-category.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __SYMBOL_CATEGORY_H__
+#define __SYMBOL_CATEGORY_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_SYMBOL_CATEGORY (logdiag_symbol_category_get_type ())
+#define LOGDIAG_SYMBOL_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_SYMBOL_CATEGORY, LogdiagSymbolCategory))
+#define LOGDIAG_SYMBOL_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_SYMBOL_CATEGORY, LogdiagSymbolCategoryClass))
+#define LOGDIAG_IS_SYMBOL_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_SYMBOL_CATEGORY))
+#define LOGDIAG_IS_SYMBOL_CATEGORY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_SYMBOL_CATEGORY))
+#define LOGDIAG_SYMBOL_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_SYMBOL_CATEGORY, LogdiagSymbolCategoryClass))
+
+typedef struct _LogdiagSymbolCategory LogdiagSymbolCategory;
+typedef struct _LogdiagSymbolCategoryClass LogdiagSymbolCategoryClass;
+
+
+/**
+ * LogdiagSymbolCategory:
+ * @parent: The parent object, may be LogdiagSymbolLibrary
+ * or another LogdiagSymbolCategory.
+ * @name: The name of the category.
+ * @image_path: Path to the image for this category.
+ * @children: Children of this category.
+ */
+struct _LogdiagSymbolCategory
+{
+/*< private >*/
+ GObject parent_instance;
+
+/*< public >*/
+ gpointer parent;
+ gchar *name;
+ gchar *image_path;
+ GHashTable *children;
+};
+
+struct _LogdiagSymbolCategoryClass
+{
+ GObjectClass parent_class;
+};
+
+
+GType logdiag_symbol_category_get_type (void) G_GNUC_CONST;
+
+LogdiagSymbolCategory *
+logdiag_symbol_category_new (LogdiagSymbolLibrary *parent);
+
+
+G_END_DECLS
+
+#endif /* ! __SYMBOL_CATEGORY_H__ */
+
diff --git a/src/ld-symbol-library.c b/src/ld-symbol-library.c
new file mode 100644
index 0000000..8876dd8
--- /dev/null
+++ b/src/ld-symbol-library.c
@@ -0,0 +1,373 @@
+/*
+ * ld-symbol-library.c
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#include
+#include
+/* #include */
+
+#include "config.h"
+
+#include "ld-symbol-library.h"
+#include "ld-symbol-category.h"
+#include "ld-symbol.h"
+
+/* ===== Symbol library ==================================================== */
+
+/**
+ * SECTION:ld-symbol-library
+ * @short_description: A symbol library.
+ * @see_also: #LogdiagSymbol, #LogdiagSymbolCategory
+ *
+ * #LogdiagSymbolLibrary is used for loading symbols from their files.
+ */
+
+/*
+ * LogdiagSymbolLibraryPrivate:
+ * @lua_state: Lua state.
+ */
+struct _LogdiagSymbolLibraryPrivate
+{
+ lua_State *lua_state;
+};
+
+G_DEFINE_TYPE (LogdiagSymbolLibrary, logdiag_symbol_library, G_TYPE_OBJECT);
+
+static void
+logdiag_symbol_library_finalize (GObject *gobject);
+
+
+static void
+logdiag_symbol_library_class_init (LogdiagSymbolLibraryClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = logdiag_symbol_library_finalize;
+
+/**
+ * LogdiagSymbolLibrary::changed:
+ * @library: The library object.
+ *
+ * Contents of the library have changed.
+ */
+ klass->changed_signal = g_signal_new
+ ("changed", G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (LogdiagSymbolLibraryPrivate));
+}
+
+static void
+logdiag_symbol_library_init (LogdiagSymbolLibrary *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE
+ (self, LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibraryPrivate);
+
+ /* TODO: lua */
+ self->priv->lua_state = NULL;
+
+ self->categories = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref);
+}
+
+static void
+logdiag_symbol_library_finalize (GObject *gobject)
+{
+ LogdiagSymbolLibrary *self;
+
+ self = LOGDIAG_SYMBOL_LIBRARY (gobject);
+
+ g_hash_table_destroy (self->categories);
+
+ /* Chain up to the parent class. */
+ G_OBJECT_CLASS (logdiag_symbol_library_parent_class)->finalize (gobject);
+}
+
+/**
+ * logdiag_symbol_library_new:
+ *
+ * Create an instance.
+ */
+LogdiagSymbolLibrary *
+logdiag_symbol_library_new (void)
+{
+ return g_object_new (LOGDIAG_TYPE_SYMBOL_LIBRARY, NULL);
+}
+
+/*
+ * load_category:
+ * @self: A symbol library object.
+ * @path: The path to the category.
+ * @name: The default name of the category.
+ *
+ * Loads a category into the library.
+ */
+static LogdiagSymbolCategory *
+load_category (LogdiagSymbolLibrary *self, const char *path, const char *name)
+{
+ LogdiagSymbolCategory *cat;
+ gchar *icon_file;
+
+ g_return_val_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self), NULL);
+ g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ if (!g_file_test (path, G_FILE_TEST_IS_DIR))
+ return NULL;
+
+ icon_file = g_build_filename (path, "icon.svg", NULL);
+ if (!g_file_test (icon_file, G_FILE_TEST_IS_REGULAR))
+ {
+ g_warning ("The category in %s has no icon.", path);
+ g_free (icon_file);
+ return NULL;
+ }
+
+ /* TODO: Search for category.json and read the category name from it. */
+ /* TODO: Search for xyz.lua and load the objects into the category. */
+
+ cat = logdiag_symbol_category_new (self);
+ cat->name = g_strdup (name);
+ cat->image_path = icon_file;
+ return cat;
+}
+
+/**
+ * logdiag_symbol_library_load:
+ * @self: A symbol library object.
+ * @directory: A directory to be loaded.
+ *
+ * Load the contents of a directory into the library.
+ */
+gboolean
+logdiag_symbol_library_load (LogdiagSymbolLibrary *self, const char *path)
+{
+ GDir *dir;
+ const gchar *item;
+
+ g_return_val_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self), FALSE);
+ g_return_val_if_fail (path != NULL, FALSE);
+
+ dir = g_dir_open (path, 0, NULL);
+ if (!dir)
+ return FALSE;
+
+ while ((item = g_dir_read_name (dir)))
+ {
+ LogdiagSymbolCategory *cat;
+ gchar *categ_path;
+
+ categ_path = g_build_filename (path, item, NULL);
+ cat = load_category (self, categ_path, item);
+ if (cat)
+ g_hash_table_insert (self->categories, cat->name, cat);
+ g_free (categ_path);
+ }
+ g_dir_close (dir);
+ return TRUE;
+}
+
+/**
+ * logdiag_symbol_library_clear:
+ * @self: A symbol library object.
+ *
+ * Clears all the contents.
+ */
+void
+logdiag_symbol_library_clear (LogdiagSymbolLibrary *self)
+{
+ g_return_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self));
+
+ g_hash_table_remove_all (self->categories);
+ return;
+}
+
+
+/* ===== Symbol category =================================================== */
+
+/**
+ * SECTION:ld-symbol-category
+ * @short_description: A category of symbols.
+ * @see_also: #LogdiagSymbol, #LogdiagSymbolLibrary
+ *
+ * #LogdiagSymbolCategory represents a category of #LogdiagSymbol objects.
+ */
+
+G_DEFINE_TYPE (LogdiagSymbolCategory, logdiag_symbol_category, G_TYPE_OBJECT);
+
+static void
+logdiag_symbol_category_finalize (GObject *gobject);
+
+
+static void
+logdiag_symbol_category_class_init (LogdiagSymbolCategoryClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = logdiag_symbol_category_finalize;
+}
+
+static void
+logdiag_symbol_category_init (LogdiagSymbolCategory *self)
+{
+ /* TODO: use _new_full, correct equal and specify destroy functions. */
+ /* XXX: How's the situation with subcategory names and symbol names
+ * within the same hashtable?
+ */
+ self->children = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+static void
+logdiag_symbol_category_finalize (GObject *gobject)
+{
+ LogdiagSymbolCategory *self;
+
+ self = LOGDIAG_SYMBOL_CATEGORY (gobject);
+
+ if (self->name)
+ g_free (self->name);
+ if (self->image_path)
+ g_free (self->image_path);
+
+ g_object_unref (self->parent);
+ g_hash_table_destroy (self->children);
+
+ /* Chain up to the parent class. */
+ G_OBJECT_CLASS (logdiag_symbol_category_parent_class)->finalize (gobject);
+}
+
+/**
+ * logdiag_symbol_category_new:
+ * @parent: The parent library for this category.
+ *
+ * Create an instance.
+ */
+LogdiagSymbolCategory *
+logdiag_symbol_category_new (LogdiagSymbolLibrary *parent)
+{
+ LogdiagSymbolCategory *cat;
+
+ cat = g_object_new (LOGDIAG_TYPE_SYMBOL_CATEGORY, NULL);
+
+ cat->parent = parent;
+ g_object_ref (parent);
+
+ return cat;
+}
+
+
+/* ===== Symbol ============================================================ */
+
+/**
+ * SECTION:ld-symbol
+ * @short_description: A symbol.
+ * @see_also: #LogdiagDocument, #LogdiagCanvas
+ *
+ * #LogdiagSymbol represents a symbol in the #LogdiagDocument that is in turn
+ * drawn onto the #LogdiagCanvas.
+ */
+
+/*
+ * LogdiagSymbolPrivate:
+ * @library: The parent LogdiagSymbolLibrary.
+ * The library contains the real function for rendering.
+ */
+struct _LogdiagSymbolPrivate
+{
+ LogdiagSymbolLibrary *library;
+};
+
+G_DEFINE_TYPE (LogdiagSymbol, logdiag_symbol, G_TYPE_OBJECT);
+
+static void
+logdiag_symbol_finalize (GObject *gobject);
+
+
+static void
+logdiag_symbol_class_init (LogdiagSymbolClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = logdiag_symbol_finalize;
+
+ g_type_class_add_private (klass, sizeof (LogdiagSymbolPrivate));
+}
+
+static void
+logdiag_symbol_init (LogdiagSymbol *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE
+ (self, LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolPrivate);
+}
+
+static void
+logdiag_symbol_finalize (GObject *gobject)
+{
+ LogdiagSymbol *self;
+
+ self = LOGDIAG_SYMBOL (gobject);
+ g_object_unref (self->priv->library);
+
+ /* Chain up to the parent class. */
+ G_OBJECT_CLASS (logdiag_symbol_parent_class)->finalize (gobject);
+}
+
+/**
+ * logdiag_symbol_new:
+ * @library: A library object.
+ * @filename: The file from which the symbol will be loaded.
+ *
+ * Load a symbol from a file into the library.
+ */
+LogdiagSymbol *logdiag_symbol_new (LogdiagSymbolLibrary *library,
+ const gchar *filename)
+{
+ LogdiagSymbol *symbol;
+
+ symbol = g_object_new (LOGDIAG_TYPE_SYMBOL, NULL);
+ /* TODO: Use the filename, Luke. */
+
+ symbol->priv->library = library;
+ g_object_ref (library);
+}
+
+/**
+ * logdiag_symbol_build_identifier:
+ * @self: A symbol object.
+ *
+ * Build an identifier for the symbol.
+ * The identifier is in the format "Category/Category/Symbol".
+ */
+char *
+logdiag_symbol_build_identifier (LogdiagSymbol *self)
+{
+ return NULL;
+}
+
+/**
+ * logdiag_symbol_draw:
+ * @self: A symbol object.
+ * @surface: A cairo surface to be drawn on.
+ * @param: Parameters for the symbol in a table.
+ * @x: The X coordinate on the surface.
+ * @y: The Y coordinate on the surface.
+ * @zoom: Zoom ratio.
+ *
+ * Draw the symbol onto a Cairo surface.
+ */
+void
+logdiag_symbol_draw (LogdiagSymbol *self, cairo_t *surface,
+ GHashTable *param, gint x, gint y, gdouble zoom)
+{
+ return;
+}
diff --git a/src/ld-symbol-library.h b/src/ld-symbol-library.h
new file mode 100644
index 0000000..11350ba
--- /dev/null
+++ b/src/ld-symbol-library.h
@@ -0,0 +1,69 @@
+/*
+ * ld-symbol-library.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __SYMBOL_LIBRARY_H__
+#define __SYMBOL_LIBRARY_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_SYMBOL_LIBRARY (logdiag_symbol_library_get_type ())
+#define LOGDIAG_SYMBOL_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibrary))
+#define LOGDIAG_SYMBOL_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibraryClass))
+#define LOGDIAG_IS_SYMBOL_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_SYMBOL_LIBRARY))
+#define LOGDIAG_IS_SYMBOL_LIBRARY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_SYMBOL_LIBRARY))
+#define LOGDIAG_SYMBOL_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_SYMBOL_LIBRARY, LogdiagSymbolLibraryClass))
+
+typedef struct _LogdiagSymbolLibrary LogdiagSymbolLibrary;
+typedef struct _LogdiagSymbolLibraryPrivate LogdiagSymbolLibraryPrivate;
+typedef struct _LogdiagSymbolLibraryClass LogdiagSymbolLibraryClass;
+
+
+/**
+ * LogdiagSymbolLibrary:
+ * @categories: Lists all the categories (#LogdiagSymbolCategory).
+ *
+ * Object structure.
+ */
+struct _LogdiagSymbolLibrary
+{
+/*< private >*/
+ GObject parent_instance;
+ LogdiagSymbolLibraryPrivate *priv;
+
+/*< public >*/
+ GHashTable *categories;
+};
+
+struct _LogdiagSymbolLibraryClass
+{
+/*< private >*/
+ GObjectClass parent_class;
+ guint changed_signal;
+};
+
+
+GType logdiag_symbol_library_get_type (void) G_GNUC_CONST;
+
+LogdiagSymbolLibrary *logdiag_symbol_library_new (void);
+gboolean logdiag_symbol_library_load (LogdiagSymbolLibrary *self,
+ const char *directory);
+void logdiag_symbol_library_clear (LogdiagSymbolLibrary *self);
+
+
+G_END_DECLS
+
+#endif /* ! __SYMBOL_LIBRARY_H__ */
+
diff --git a/src/ld-symbol.h b/src/ld-symbol.h
new file mode 100644
index 0000000..c1fd65c
--- /dev/null
+++ b/src/ld-symbol.h
@@ -0,0 +1,69 @@
+/*
+ * ld-symbol.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __SYMBOL_H__
+#define __SYMBOL_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_SYMBOL (logdiag_symbol_get_type ())
+#define LOGDIAG_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_SYMBOL, LogdiagSymbol))
+#define LOGDIAG_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_SYMBOL, LogdiagSymbolClass))
+#define LOGDIAG_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_SYMBOL))
+#define LOGDIAG_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_SYMBOL))
+#define LOGDIAG_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_SYMBOL, LogdiagSymbolClass))
+
+typedef struct _LogdiagSymbol LogdiagSymbol;
+typedef struct _LogdiagSymbolPrivate LogdiagSymbolPrivate;
+typedef struct _LogdiagSymbolClass LogdiagSymbolClass;
+
+
+/**
+ * LogdiagSymbol:
+ * @name: The name of this symbol.
+ */
+struct _LogdiagSymbol
+{
+/*< private >*/
+ GObject parent_instance;
+ LogdiagSymbolPrivate *priv;
+
+/*< public >*/
+ gchar *name;
+};
+
+struct _LogdiagSymbolClass
+{
+ GObjectClass parent_class;
+};
+
+
+GType logdiag_symbol_get_type (void) G_GNUC_CONST;
+
+LogdiagSymbol *logdiag_symbol_new (LogdiagSymbolLibrary *library,
+ const gchar *filename);
+char *logdiag_symbol_build_identifier (LogdiagSymbol *self);
+void logdiag_symbol_draw (LogdiagSymbol *self, cairo_t *surface,
+ GHashTable *param, gint x, gint y, gdouble zoom);
+
+/* TODO: Funkce pro získání terminálů. */
+
+
+
+G_END_DECLS
+
+#endif /* ! __SYMBOL_H__ */
+
diff --git a/src/ld-window-main.c b/src/ld-window-main.c
new file mode 100644
index 0000000..db83869
--- /dev/null
+++ b/src/ld-window-main.c
@@ -0,0 +1,351 @@
+/*
+ * window-main.c
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#include
+
+#include "config.h"
+
+#include "ld-window-main.h"
+#include "ld-canvas.h"
+#include "ld-document.h"
+#include "ld-symbol-library.h"
+#include "ld-symbol-category.h"
+#include "ld-symbol.h"
+
+
+/**
+ * SECTION:ld-window-main
+ * @short_description: The main application window.
+ *
+ * #LogdiagWindowMain is the main window of the application.
+ */
+/* NOTE: The main window should not maybe be included in either
+ * the documentation or the static library.
+ */
+
+
+/* Private members of the window. */
+struct _LogdiagWindowMainPrivate
+{
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *menu;
+ GtkWidget *toolbar;
+
+ LogdiagSymbolLibrary *library;
+ LogdiagCanvas *canvas;
+
+ GtkWidget *statusbar;
+ guint statusbar_menu_context_id;
+};
+
+struct DocumentData
+{
+ LogdiagDocument *document;
+ const gchar *file_name;
+ /* Canvas viewport settings (for multitabbed) */
+};
+
+/* Define the type. */
+G_DEFINE_TYPE (LogdiagWindowMain, logdiag_window_main, GTK_TYPE_WINDOW);
+
+
+/* ===== Local functions =================================================== */
+
+/*
+ * cb_load_category:
+ *
+ * A hashtable foreach callback for adding categories into the toolbar.
+ */
+static void
+cb_load_category (gpointer key, gpointer value, gpointer user_data);
+
+/*
+ * load_toolbar:
+ *
+ * Load symbols from the library into the toolbar.
+ */
+static void
+load_toolbar (LogdiagWindowMain *self);
+
+/*
+ * cb_ui_proxy_connected:
+ *
+ * An item was connected to the manager.
+ */
+static void
+cb_ui_proxy_connected (GtkUIManager *ui, GtkAction *action,
+ GtkWidget *proxy, LogdiagWindowMain *window);
+
+/*
+ * cb_ui_proxy_disconnected:
+ *
+ * An item was disconnected from the manager.
+ */
+static void
+cb_ui_proxy_disconnected (GtkUIManager *ui, GtkAction *action,
+ GtkWidget *proxy, LogdiagWindowMain *window);
+
+/* A menu item was selected. */
+static void
+cb_menu_item_selected (GtkWidget *item, LogdiagWindowMain *window);
+
+/* A menu item was deselected. */
+static void
+cb_menu_item_deselected (GtkItem *item, LogdiagWindowMain *window);
+
+/* Show the about dialog. */
+static void
+cb_show_about_dialog (GtkAction *action, LogdiagWindowMain *window);
+
+
+/* ===== Local variables =================================================== */
+
+/* Actions for menus, toolbars, accelerators. */
+static GtkActionEntry mw_actionEntries[] =
+{
+ {"FileMenu", NULL, Q_("_File")},
+ {"New", GTK_STOCK_NEW, NULL, NULL,
+ Q_("Create a new document"), NULL},
+ {"Open", GTK_STOCK_OPEN, NULL, NULL,
+ Q_("Open a document"), NULL},
+ {"Save", GTK_STOCK_SAVE, NULL, NULL,
+ Q_("Save the current document"), NULL},
+ {"SaveAs", GTK_STOCK_SAVE_AS, NULL, NULL,
+ Q_("Save the current document with another name"), NULL},
+ {"Export", NULL, Q_("_Export"), NULL,
+ Q_("Export the document"), NULL},
+ {"Quit", GTK_STOCK_QUIT, NULL, NULL,
+ Q_("Quit the program"), NULL},
+
+ {"EditMenu", NULL, Q_("_Edit")},
+ {"Cut", GTK_STOCK_CUT, NULL, NULL, NULL, NULL},
+ {"Copy", GTK_STOCK_COPY, NULL, NULL, NULL, NULL},
+ {"Paste", GTK_STOCK_PASTE, NULL, NULL, NULL, NULL},
+ {"Delete", GTK_STOCK_DELETE, NULL, NULL, NULL, NULL},
+ {"SelectAll", GTK_STOCK_SELECT_ALL, NULL, NULL, NULL, NULL},
+
+ {"HelpMenu", NULL, Q_("_Help")},
+ {"About", GTK_STOCK_ABOUT, NULL, NULL, NULL,
+ G_CALLBACK(cb_show_about_dialog)}
+};
+
+
+
+/**
+ * logdiag_window_main_new:
+ *
+ * Create an instance.
+ */
+GtkWidget *
+logdiag_window_main_new (void)
+{
+ return g_object_new (LOGDIAG_TYPE_WINDOW_MAIN, NULL);
+}
+
+static void
+logdiag_window_main_class_init (LogdiagWindowMainClass *klass)
+{
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ widget_class = GTK_WIDGET_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (LogdiagWindowMainPrivate));
+}
+
+static void
+logdiag_window_main_init (LogdiagWindowMain *self)
+{
+ LogdiagWindowMainPrivate *priv;
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+ GError *error;
+
+ self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE
+ (self, LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMainPrivate);
+
+ priv->vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (self), priv->vbox);
+
+
+ ui_manager = gtk_ui_manager_new ();
+
+ /* TODO: Show tooltips in the statusbar:
+ * http://git.gnome.org/browse/glade3/tree/src/glade-window.c : 2165
+ */
+ g_signal_connect (ui_manager, "connect-proxy",
+ G_CALLBACK (cb_ui_proxy_connected), self);
+ g_signal_connect (ui_manager, "disconnect-proxy",
+ G_CALLBACK (cb_ui_proxy_disconnected), self);
+
+ /* Prepare our actions. */
+ action_group = gtk_action_group_new ("MainActions");
+ gtk_action_group_add_actions (action_group,
+ mw_actionEntries, G_N_ELEMENTS (mw_actionEntries), self);
+ gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
+
+ error = NULL;
+ gtk_ui_manager_add_ui_from_file
+ (ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
+ if (error)
+ {
+ g_message (_("Building UI failed: %s"), error->message);
+ g_error_free (error);
+ }
+
+ /* Load keyboard accelerators into the window. */
+ gtk_window_add_accel_group
+ (GTK_WINDOW (self), gtk_ui_manager_get_accel_group (ui_manager));
+
+ priv->menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+ gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0);
+
+ priv->hbox = gtk_hbox_new(FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, TRUE, TRUE, 0);
+
+ /* Add the symbol toolbar. */
+ priv->toolbar = gtk_toolbar_new ();
+ /* NOTE: For GTK 2.16+, s/toolbar/orientable/ */
+ gtk_toolbar_set_orientation
+ (GTK_TOOLBAR (priv->toolbar), GTK_ORIENTATION_VERTICAL);
+ gtk_toolbar_set_icon_size
+ (GTK_TOOLBAR (priv->toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR);
+ gtk_toolbar_set_style
+ (GTK_TOOLBAR (priv->toolbar), GTK_TOOLBAR_ICONS);
+
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->toolbar, FALSE, FALSE, 0);
+
+ /* Symbol library. */
+ priv->library = logdiag_symbol_library_new ();
+ logdiag_symbol_library_load (priv->library, PROJECT_SHARE_DIR "library");
+
+ load_toolbar (self);
+
+ /* Canvas. */
+ priv->canvas = logdiag_canvas_new ();
+ gtk_box_pack_start (GTK_BOX (priv->hbox), GTK_WIDGET (priv->canvas),
+ FALSE, FALSE, 0);
+
+ /* TODO: GtkHPaned */
+
+ priv->statusbar = gtk_statusbar_new ();
+ priv->statusbar_menu_context_id = gtk_statusbar_get_context_id
+ (GTK_STATUSBAR (priv->statusbar), "menu");
+ gtk_box_pack_end (GTK_BOX (priv->vbox), priv->statusbar, FALSE, FALSE, 0);
+
+
+ /* TODO: Do this on disposal. */
+ /* g_object_unref(ui_manager); */
+
+ /* Proceed to showing the window. */
+ g_signal_connect (self, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+ gtk_window_set_default_size (GTK_WINDOW (self), 500, 400);
+ gtk_widget_show_all (GTK_WIDGET (self));
+}
+
+static void
+cb_load_category (gpointer key, gpointer value, gpointer user_data)
+{
+ const gchar *name;
+ LogdiagSymbolCategory *cat;
+ LogdiagWindowMain *self;
+ GdkPixbuf *pbuf;
+ GtkWidget *img;
+ GtkToolItem *item;
+
+ name = key;
+ cat = value;
+ self = user_data;
+
+ g_return_if_fail (key != NULL);
+ g_return_if_fail (LOGDIAG_IS_SYMBOL_CATEGORY (cat));
+
+ /* XXX: Hardcoded icon width, unref? */
+ pbuf = gdk_pixbuf_new_from_file_at_size (cat->image_path, 32, -1, NULL);
+ if (!pbuf)
+ return;
+ img = gtk_image_new_from_pixbuf (pbuf);
+ g_object_unref (pbuf);
+
+ item = gtk_tool_button_new (img, name);
+ gtk_tool_item_set_tooltip_text (item, name);
+ gtk_toolbar_insert (GTK_TOOLBAR (self->priv->toolbar), item, 0);
+}
+
+static void
+load_toolbar (LogdiagWindowMain *self)
+{
+ /* TODO: Clear the toolbar first, if there was already something in it. */
+
+ g_hash_table_foreach (self->priv->library->categories,
+ cb_load_category, self);
+}
+
+static void
+cb_ui_proxy_connected (GtkUIManager *ui, GtkAction *action,
+ GtkWidget *proxy, LogdiagWindowMain *window)
+{
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_connect (proxy, "select",
+ G_CALLBACK (cb_menu_item_selected), window);
+ g_signal_connect (proxy, "deselect",
+ G_CALLBACK (cb_menu_item_deselected), window);
+ }
+}
+
+static void
+cb_ui_proxy_disconnected (GtkUIManager *ui, GtkAction *action,
+ GtkWidget *proxy, LogdiagWindowMain *window)
+{
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_handlers_disconnect_by_func
+ (proxy, G_CALLBACK (cb_menu_item_selected), window);
+ g_signal_handlers_disconnect_by_func
+ (proxy, G_CALLBACK (cb_menu_item_deselected), window);
+ }
+}
+
+static void
+cb_menu_item_selected (GtkWidget *item, LogdiagWindowMain *window)
+{
+ GtkAction *action;
+ gchar *tooltip;
+
+ action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (item));
+ g_object_get (G_OBJECT (action), "tooltip", &tooltip, NULL);
+
+ if (tooltip != NULL)
+ gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar),
+ window->priv->statusbar_menu_context_id, tooltip);
+
+ g_free (tooltip);
+}
+
+static void
+cb_menu_item_deselected (GtkItem *item, LogdiagWindowMain *window)
+{
+ gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar),
+ window->priv->statusbar_menu_context_id);
+}
+
+static void
+cb_show_about_dialog (GtkAction *action, LogdiagWindowMain *window)
+{
+ gtk_show_about_dialog (GTK_WINDOW (window),
+ "program-name", PROJECT_NAME,
+ "version", PROJECT_VERSION,
+ "copyright", "Copyright Přemysl Janouch 2010",
+ NULL);
+}
+
diff --git a/src/ld-window-main.h b/src/ld-window-main.h
new file mode 100644
index 0000000..a637a1b
--- /dev/null
+++ b/src/ld-window-main.h
@@ -0,0 +1,60 @@
+/*
+ * ld-window-main.h
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#ifndef __WINDOW_MAIN_H__
+#define __WINDOW_MAIN_H__
+
+G_BEGIN_DECLS
+
+
+#define LOGDIAG_TYPE_WINDOW_MAIN (logdiag_window_main_get_type ())
+#define LOGDIAG_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMain))
+#define LOGDIAG_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
+ ((klass), LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMainClass))
+#define LOGDIAG_IS_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), LOGDIAG_TYPE_WINDOW_MAIN))
+#define LOGDIAG_IS_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((klass), LOGDIAG_TYPE_WINDOW_MAIN))
+#define LOGDIAG_WINDOW_MAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), LOGDIAG_WINDOW_MAIN, LogdiagWindowMainClass))
+
+typedef struct _LogdiagWindowMain LogdiagWindowMain;
+typedef struct _LogdiagWindowMainPrivate LogdiagWindowMainPrivate;
+typedef struct _LogdiagWindowMainClass LogdiagWindowMainClass;
+
+
+/**
+ * LogdiagWindowMain:
+ *
+ * Object structure.
+ */
+struct _LogdiagWindowMain
+{
+/*< private >*/
+ GtkWindow parent_instance;
+ LogdiagWindowMainPrivate *priv;
+};
+
+struct _LogdiagWindowMainClass
+{
+ GtkWindowClass parent_class;
+};
+
+
+GType logdiag_window_main_get_type (void) G_GNUC_CONST;
+
+GtkWidget *logdiag_window_main_new (void);
+
+
+G_END_DECLS
+
+#endif /* ! __WINDOW_MAIN_H__ */
+
diff --git a/src/logdiag.c b/src/logdiag.c
new file mode 100644
index 0000000..4f69916
--- /dev/null
+++ b/src/logdiag.c
@@ -0,0 +1,39 @@
+/*
+ * logdiag.c -- logdiag main source file.
+ *
+ * This file is a part of logdiag.
+ * Copyright Přemysl Janouch 2010. All rights reserved.
+ *
+ * See the file LICENSE for licensing information.
+ *
+ */
+
+#include
+
+#include "config.h"
+
+#include "ld-window-main.h"
+
+
+int main (int argc, char *argv[])
+{
+ GtkWidget *wnd;
+
+#ifdef HAVE_GETTEXT
+ setlocale (LC_ALL, "");
+
+ bindtextdomain (GETTEXT_DOMAIN, GETTEXT_DIRNAME);
+ textdomain (GETTEXT_DOMAIN);
+#endif
+
+ /* For custom command line arguments, see:
+ * http://git.gnome.org/browse/glade3/tree/src/main.c
+ */
+
+ gtk_init (&argc, &argv);
+ wnd = logdiag_window_main_new ();
+ gtk_main ();
+
+ return 0;
+}
+
diff --git a/src/main.c b/src/main.c
deleted file mode 100644
index 5c9723f..0000000
--- a/src/main.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * main.c -- logdiag main source file.
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#include
-
-#include "config.h"
-
-#include "window-main.h"
-
-
-int main (int argc, char *argv[])
-{
- GtkWidget *wnd;
-
-#ifdef HAVE_GETTEXT
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_DOMAIN, GETTEXT_DIRNAME);
- textdomain (GETTEXT_DOMAIN);
-#endif
-
- /* For custom command line arguments, see:
- * http://git.gnome.org/browse/glade3/tree/src/main.c
- */
-
- gtk_init (&argc, &argv);
- wnd = logdiag_window_main_new ();
- gtk_main ();
-
- return 0;
-}
-
diff --git a/src/symbol-category.h b/src/symbol-category.h
deleted file mode 100644
index 51ccb78..0000000
--- a/src/symbol-category.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * symbol-category.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __SYMBOL_CATEGORY_H__
-#define __SYMBOL_CATEGORY_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_SYMBOL_CATEGORY (logdiag_symbol_category_get_type ())
-#define LOGDIAG_SYMBOL_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_SYMBOL_CATEGORY, LogdiagSymbolCategory))
-#define LOGDIAG_SYMBOL_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_SYMBOL_CATEGORY, LogdiagSymbolCategoryClass))
-#define LOGDIAG_IS_SYMBOL_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_SYMBOL_CATEGORY))
-#define LOGDIAG_IS_SYMBOL_CATEGORY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_SYMBOL_CATEGORY))
-#define LOGDIAG_SYMBOL_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_SYMBOL_CATEGORY, LogdiagSymbolCategoryClass))
-
-typedef struct _LogdiagSymbolCategory LogdiagSymbolCategory;
-typedef struct _LogdiagSymbolCategoryClass LogdiagSymbolCategoryClass;
-
-
-/**
- * LogdiagSymbolCategory:
- * @parent: The parent object, may be LogdiagSymbolLibrary
- * or another LogdiagSymbolCategory.
- * @name: The name of the category.
- * @image_path: Path to the image for this category.
- * @children: Children of this category.
- */
-struct _LogdiagSymbolCategory
-{
-/*< private >*/
- GObject parent_instance;
-
-/*< public >*/
- gpointer parent;
- gchar *name;
- gchar *image_path;
- GHashTable *children;
-};
-
-struct _LogdiagSymbolCategoryClass
-{
- GObjectClass parent_class;
-};
-
-
-GType logdiag_symbol_category_get_type (void) G_GNUC_CONST;
-
-LogdiagSymbolCategory *
-logdiag_symbol_category_new (LogdiagSymbolLibrary *parent);
-
-
-G_END_DECLS
-
-#endif /* ! __SYMBOL_CATEGORY_H__ */
-
diff --git a/src/symbol-library.c b/src/symbol-library.c
deleted file mode 100644
index 679a068..0000000
--- a/src/symbol-library.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * symbol-library.c
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#include
-#include
-/* #include */
-
-#include "config.h"
-
-#include "symbol-library.h"
-#include "symbol-category.h"
-#include "symbol.h"
-
-/* ===== Symbol library ==================================================== */
-
-/**
- * SECTION:symbol-library
- * @short_description: A symbol library.
- * @see_also: #LogdiagSymbol, #LogdiagSymbolCategory
- *
- * #LogdiagSymbolLibrary is used for loading symbols from their files.
- */
-
-/*
- * LogdiagSymbolLibraryPrivate:
- * @lua_state: Lua state.
- */
-struct _LogdiagSymbolLibraryPrivate
-{
- lua_State *lua_state;
-};
-
-G_DEFINE_TYPE (LogdiagSymbolLibrary, logdiag_symbol_library, G_TYPE_OBJECT);
-
-static void
-logdiag_symbol_library_finalize (GObject *gobject);
-
-
-static void
-logdiag_symbol_library_class_init (LogdiagSymbolLibraryClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = logdiag_symbol_library_finalize;
-
-/**
- * LogdiagSymbolLibrary::changed:
- * @library: The library object.
- *
- * Contents of the library have changed.
- */
- klass->changed_signal = g_signal_new
- ("changed", G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
- 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
- g_type_class_add_private (klass, sizeof (LogdiagSymbolLibraryPrivate));
-}
-
-static void
-logdiag_symbol_library_init (LogdiagSymbolLibrary *self)
-{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibraryPrivate);
-
- /* TODO: lua */
- self->priv->lua_state = NULL;
-
- self->categories = g_hash_table_new_full (g_str_hash, g_str_equal,
- (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref);
-}
-
-static void
-logdiag_symbol_library_finalize (GObject *gobject)
-{
- LogdiagSymbolLibrary *self;
-
- self = LOGDIAG_SYMBOL_LIBRARY (gobject);
-
- g_hash_table_destroy (self->categories);
-
- /* Chain up to the parent class. */
- G_OBJECT_CLASS (logdiag_symbol_library_parent_class)->finalize (gobject);
-}
-
-/**
- * logdiag_symbol_library_new:
- *
- * Create an instance.
- */
-LogdiagSymbolLibrary *
-logdiag_symbol_library_new (void)
-{
- return g_object_new (LOGDIAG_TYPE_SYMBOL_LIBRARY, NULL);
-}
-
-/*
- * load_category:
- * @self: A symbol library object.
- * @path: The path to the category.
- * @name: The default name of the category.
- *
- * Loads a category into the library.
- */
-static LogdiagSymbolCategory *
-load_category (LogdiagSymbolLibrary *self, const char *path, const char *name)
-{
- LogdiagSymbolCategory *cat;
- gchar *icon_file;
-
- g_return_val_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self), NULL);
- g_return_val_if_fail (path != NULL, NULL);
- g_return_val_if_fail (name != NULL, NULL);
-
- if (!g_file_test (path, G_FILE_TEST_IS_DIR))
- return NULL;
-
- icon_file = g_build_filename (path, "icon.svg", NULL);
- if (!g_file_test (icon_file, G_FILE_TEST_IS_REGULAR))
- {
- g_warning ("The category in %s has no icon.", path);
- g_free (icon_file);
- return NULL;
- }
-
- /* TODO: Search for category.json and read the category name from it. */
- /* TODO: Search for xyz.lua and load the objects into the category. */
-
- cat = logdiag_symbol_category_new (self);
- cat->name = g_strdup (name);
- cat->image_path = icon_file;
- return cat;
-}
-
-/**
- * logdiag_symbol_library_load:
- * @self: A symbol library object.
- * @directory: A directory to be loaded.
- *
- * Load the contents of a directory into the library.
- */
-gboolean
-logdiag_symbol_library_load (LogdiagSymbolLibrary *self, const char *path)
-{
- GDir *dir;
- const gchar *item;
-
- g_return_val_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self), FALSE);
- g_return_val_if_fail (path != NULL, FALSE);
-
- dir = g_dir_open (path, 0, NULL);
- if (!dir)
- return FALSE;
-
- while ((item = g_dir_read_name (dir)))
- {
- LogdiagSymbolCategory *cat;
- gchar *categ_path;
-
- categ_path = g_build_filename (path, item, NULL);
- cat = load_category (self, categ_path, item);
- if (cat)
- g_hash_table_insert (self->categories, cat->name, cat);
- g_free (categ_path);
- }
- g_dir_close (dir);
- return TRUE;
-}
-
-/**
- * logdiag_symbol_library_clear:
- * @self: A symbol library object.
- *
- * Clears all the contents.
- */
-void
-logdiag_symbol_library_clear (LogdiagSymbolLibrary *self)
-{
- g_return_if_fail (LOGDIAG_IS_SYMBOL_LIBRARY (self));
-
- g_hash_table_remove_all (self->categories);
- return;
-}
-
-
-/* ===== Symbol category =================================================== */
-
-/**
- * SECTION:symbol-category
- * @short_description: A category of symbols.
- * @see_also: #LogdiagSymbol, #LogdiagSymbolLibrary
- *
- * #LogdiagSymbolCategory represents a category of #LogdiagSymbol objects.
- */
-
-G_DEFINE_TYPE (LogdiagSymbolCategory, logdiag_symbol_category, G_TYPE_OBJECT);
-
-static void
-logdiag_symbol_category_finalize (GObject *gobject);
-
-
-static void
-logdiag_symbol_category_class_init (LogdiagSymbolCategoryClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = logdiag_symbol_category_finalize;
-}
-
-static void
-logdiag_symbol_category_init (LogdiagSymbolCategory *self)
-{
- /* TODO: use _new_full, correct equal and specify destroy functions. */
- /* XXX: How's the situation with subcategory names and symbol names
- * within the same hashtable?
- */
- self->children = g_hash_table_new (g_str_hash, g_str_equal);
-}
-
-static void
-logdiag_symbol_category_finalize (GObject *gobject)
-{
- LogdiagSymbolCategory *self;
-
- self = LOGDIAG_SYMBOL_CATEGORY (gobject);
-
- if (self->name)
- g_free (self->name);
- if (self->image_path)
- g_free (self->image_path);
-
- g_object_unref (self->parent);
- g_hash_table_destroy (self->children);
-
- /* Chain up to the parent class. */
- G_OBJECT_CLASS (logdiag_symbol_category_parent_class)->finalize (gobject);
-}
-
-/**
- * logdiag_symbol_category_new:
- * @parent: The parent library for this category.
- *
- * Create an instance.
- */
-LogdiagSymbolCategory *
-logdiag_symbol_category_new (LogdiagSymbolLibrary *parent)
-{
- LogdiagSymbolCategory *cat;
-
- cat = g_object_new (LOGDIAG_TYPE_SYMBOL_CATEGORY, NULL);
-
- cat->parent = parent;
- g_object_ref (parent);
-
- return cat;
-}
-
-
-/* ===== Symbol ============================================================ */
-
-/**
- * SECTION:symbol
- * @short_description: A symbol.
- * @see_also: #LogdiagDocument, #LogdiagCanvas
- *
- * #LogdiagSymbol represents a symbol in the #LogdiagDocument that is in turn
- * drawn onto the #LogdiagCanvas.
- */
-
-/*
- * LogdiagSymbolPrivate:
- * @library: The parent LogdiagSymbolLibrary.
- * The library contains the real function for rendering.
- */
-struct _LogdiagSymbolPrivate
-{
- LogdiagSymbolLibrary *library;
-};
-
-G_DEFINE_TYPE (LogdiagSymbol, logdiag_symbol, G_TYPE_OBJECT);
-
-static void
-logdiag_symbol_finalize (GObject *gobject);
-
-
-static void
-logdiag_symbol_class_init (LogdiagSymbolClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = logdiag_symbol_finalize;
-
- g_type_class_add_private (klass, sizeof (LogdiagSymbolPrivate));
-}
-
-static void
-logdiag_symbol_init (LogdiagSymbol *self)
-{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolPrivate);
-}
-
-static void
-logdiag_symbol_finalize (GObject *gobject)
-{
- LogdiagSymbol *self;
-
- self = LOGDIAG_SYMBOL (gobject);
- g_object_unref (self->priv->library);
-
- /* Chain up to the parent class. */
- G_OBJECT_CLASS (logdiag_symbol_parent_class)->finalize (gobject);
-}
-
-/**
- * logdiag_symbol_new:
- * @library: A library object.
- * @filename: The file from which the symbol will be loaded.
- *
- * Load a symbol from a file into the library.
- */
-LogdiagSymbol *logdiag_symbol_new (LogdiagSymbolLibrary *library,
- const gchar *filename)
-{
- LogdiagSymbol *symbol;
-
- symbol = g_object_new (LOGDIAG_TYPE_SYMBOL, NULL);
- /* TODO: Use the filename, Luke. */
-
- symbol->priv->library = library;
- g_object_ref (library);
-}
-
-/**
- * logdiag_symbol_build_identifier:
- * @self: A symbol object.
- *
- * Build an identifier for the symbol.
- * The identifier is in the format "Category/Category/Symbol".
- */
-char *
-logdiag_symbol_build_identifier (LogdiagSymbol *self)
-{
- return NULL;
-}
-
-/**
- * logdiag_symbol_draw:
- * @self: A symbol object.
- * @surface: A cairo surface to be drawn on.
- * @param: Parameters for the symbol in a table.
- * @x: The X coordinate on the surface.
- * @y: The Y coordinate on the surface.
- * @zoom: Zoom ratio.
- *
- * Draw the symbol onto a Cairo surface.
- */
-void
-logdiag_symbol_draw (LogdiagSymbol *self, cairo_t *surface,
- GHashTable *param, gint x, gint y, gdouble zoom)
-{
- return;
-}
diff --git a/src/symbol-library.h b/src/symbol-library.h
deleted file mode 100644
index 5091453..0000000
--- a/src/symbol-library.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * symbol-library.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __SYMBOL_LIBRARY_H__
-#define __SYMBOL_LIBRARY_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_SYMBOL_LIBRARY (logdiag_symbol_library_get_type ())
-#define LOGDIAG_SYMBOL_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibrary))
-#define LOGDIAG_SYMBOL_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_SYMBOL_LIBRARY, LogdiagSymbolLibraryClass))
-#define LOGDIAG_IS_SYMBOL_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_SYMBOL_LIBRARY))
-#define LOGDIAG_IS_SYMBOL_LIBRARY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_SYMBOL_LIBRARY))
-#define LOGDIAG_SYMBOL_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_SYMBOL_LIBRARY, LogdiagSymbolLibraryClass))
-
-typedef struct _LogdiagSymbolLibrary LogdiagSymbolLibrary;
-typedef struct _LogdiagSymbolLibraryPrivate LogdiagSymbolLibraryPrivate;
-typedef struct _LogdiagSymbolLibraryClass LogdiagSymbolLibraryClass;
-
-
-/**
- * LogdiagSymbolLibrary:
- * @categories: Lists all the categories (#LogdiagSymbolCategory).
- *
- * Object structure.
- */
-struct _LogdiagSymbolLibrary
-{
-/*< private >*/
- GObject parent_instance;
- LogdiagSymbolLibraryPrivate *priv;
-
-/*< public >*/
- GHashTable *categories;
-};
-
-struct _LogdiagSymbolLibraryClass
-{
-/*< private >*/
- GObjectClass parent_class;
- guint changed_signal;
-};
-
-
-GType logdiag_symbol_library_get_type (void) G_GNUC_CONST;
-
-LogdiagSymbolLibrary *logdiag_symbol_library_new (void);
-gboolean logdiag_symbol_library_load (LogdiagSymbolLibrary *self,
- const char *directory);
-void logdiag_symbol_library_clear (LogdiagSymbolLibrary *self);
-
-
-G_END_DECLS
-
-#endif /* ! __SYMBOL_LIBRARY_H__ */
-
diff --git a/src/symbol.h b/src/symbol.h
deleted file mode 100644
index 046786a..0000000
--- a/src/symbol.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * symbol.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __SYMBOL_H__
-#define __SYMBOL_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_SYMBOL (logdiag_symbol_get_type ())
-#define LOGDIAG_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_SYMBOL, LogdiagSymbol))
-#define LOGDIAG_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_SYMBOL, LogdiagSymbolClass))
-#define LOGDIAG_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_SYMBOL))
-#define LOGDIAG_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_SYMBOL))
-#define LOGDIAG_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_SYMBOL, LogdiagSymbolClass))
-
-typedef struct _LogdiagSymbol LogdiagSymbol;
-typedef struct _LogdiagSymbolPrivate LogdiagSymbolPrivate;
-typedef struct _LogdiagSymbolClass LogdiagSymbolClass;
-
-
-/**
- * LogdiagSymbol:
- * @name: The name of this symbol.
- */
-struct _LogdiagSymbol
-{
-/*< private >*/
- GObject parent_instance;
- LogdiagSymbolPrivate *priv;
-
-/*< public >*/
- gchar *name;
-};
-
-struct _LogdiagSymbolClass
-{
- GObjectClass parent_class;
-};
-
-
-GType logdiag_symbol_get_type (void) G_GNUC_CONST;
-
-LogdiagSymbol *logdiag_symbol_new (LogdiagSymbolLibrary *library,
- const gchar *filename);
-char *logdiag_symbol_build_identifier (LogdiagSymbol *self);
-void logdiag_symbol_draw (LogdiagSymbol *self, cairo_t *surface,
- GHashTable *param, gint x, gint y, gdouble zoom);
-
-/* TODO: Funkce pro získání terminálů. */
-
-
-
-G_END_DECLS
-
-#endif /* ! __SYMBOL_H__ */
-
diff --git a/src/window-main.c b/src/window-main.c
deleted file mode 100644
index 89714a5..0000000
--- a/src/window-main.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * window-main.c
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#include
-
-#include "config.h"
-
-#include "window-main.h"
-#include "canvas.h"
-#include "document.h"
-#include "symbol-library.h"
-#include "symbol-category.h"
-#include "symbol.h"
-
-
-/**
- * SECTION:window-main
- * @short_description: The main application window.
- *
- * #LogdiagWindowMain is the main window of the application.
- */
-/* NOTE: The main window should not maybe be included in either
- * the documentation or the static library.
- */
-
-
-/* Private members of the window. */
-struct _LogdiagWindowMainPrivate
-{
- GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *menu;
- GtkWidget *toolbar;
-
- LogdiagSymbolLibrary *library;
- LogdiagCanvas *canvas;
-
- GtkWidget *statusbar;
- guint statusbar_menu_context_id;
-};
-
-struct DocumentData
-{
- LogdiagDocument *document;
- const gchar *file_name;
- /* Canvas viewport settings (for multitabbed) */
-};
-
-/* Define the type. */
-G_DEFINE_TYPE (LogdiagWindowMain, logdiag_window_main, GTK_TYPE_WINDOW);
-
-
-/* ===== Local functions =================================================== */
-
-/*
- * cb_load_category:
- *
- * A hashtable foreach callback for adding categories into the toolbar.
- */
-static void
-cb_load_category (gpointer key, gpointer value, gpointer user_data);
-
-/*
- * load_toolbar:
- *
- * Load symbols from the library into the toolbar.
- */
-static void
-load_toolbar (LogdiagWindowMain *self);
-
-/*
- * cb_ui_proxy_connected:
- *
- * An item was connected to the manager.
- */
-static void
-cb_ui_proxy_connected (GtkUIManager *ui, GtkAction *action,
- GtkWidget *proxy, LogdiagWindowMain *window);
-
-/*
- * cb_ui_proxy_disconnected:
- *
- * An item was disconnected from the manager.
- */
-static void
-cb_ui_proxy_disconnected (GtkUIManager *ui, GtkAction *action,
- GtkWidget *proxy, LogdiagWindowMain *window);
-
-/* A menu item was selected. */
-static void
-cb_menu_item_selected (GtkWidget *item, LogdiagWindowMain *window);
-
-/* A menu item was deselected. */
-static void
-cb_menu_item_deselected (GtkItem *item, LogdiagWindowMain *window);
-
-/* Show the about dialog. */
-static void
-cb_show_about_dialog (GtkAction *action, LogdiagWindowMain *window);
-
-
-/* ===== Local variables =================================================== */
-
-/* Actions for menus, toolbars, accelerators. */
-static GtkActionEntry mw_actionEntries[] =
-{
- {"FileMenu", NULL, Q_("_File")},
- {"New", GTK_STOCK_NEW, NULL, NULL,
- Q_("Create a new document"), NULL},
- {"Open", GTK_STOCK_OPEN, NULL, NULL,
- Q_("Open a document"), NULL},
- {"Save", GTK_STOCK_SAVE, NULL, NULL,
- Q_("Save the current document"), NULL},
- {"SaveAs", GTK_STOCK_SAVE_AS, NULL, NULL,
- Q_("Save the current document with another name"), NULL},
- {"Export", NULL, Q_("_Export"), NULL,
- Q_("Export the document"), NULL},
- {"Quit", GTK_STOCK_QUIT, NULL, NULL,
- Q_("Quit the program"), NULL},
-
- {"EditMenu", NULL, Q_("_Edit")},
- {"Cut", GTK_STOCK_CUT, NULL, NULL, NULL, NULL},
- {"Copy", GTK_STOCK_COPY, NULL, NULL, NULL, NULL},
- {"Paste", GTK_STOCK_PASTE, NULL, NULL, NULL, NULL},
- {"Delete", GTK_STOCK_DELETE, NULL, NULL, NULL, NULL},
- {"SelectAll", GTK_STOCK_SELECT_ALL, NULL, NULL, NULL, NULL},
-
- {"HelpMenu", NULL, Q_("_Help")},
- {"About", GTK_STOCK_ABOUT, NULL, NULL, NULL,
- G_CALLBACK(cb_show_about_dialog)}
-};
-
-
-
-/**
- * logdiag_window_main_new:
- *
- * Create an instance.
- */
-GtkWidget *
-logdiag_window_main_new (void)
-{
- return g_object_new (LOGDIAG_TYPE_WINDOW_MAIN, NULL);
-}
-
-static void
-logdiag_window_main_class_init (LogdiagWindowMainClass *klass)
-{
- GObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = G_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (LogdiagWindowMainPrivate));
-}
-
-static void
-logdiag_window_main_init (LogdiagWindowMain *self)
-{
- LogdiagWindowMainPrivate *priv;
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
- GError *error;
-
- self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMainPrivate);
-
- priv->vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (self), priv->vbox);
-
-
- ui_manager = gtk_ui_manager_new ();
-
- /* TODO: Show tooltips in the statusbar:
- * http://git.gnome.org/browse/glade3/tree/src/glade-window.c : 2165
- */
- g_signal_connect (ui_manager, "connect-proxy",
- G_CALLBACK (cb_ui_proxy_connected), self);
- g_signal_connect (ui_manager, "disconnect-proxy",
- G_CALLBACK (cb_ui_proxy_disconnected), self);
-
- /* Prepare our actions. */
- action_group = gtk_action_group_new ("MainActions");
- gtk_action_group_add_actions (action_group,
- mw_actionEntries, G_N_ELEMENTS (mw_actionEntries), self);
- gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-
- error = NULL;
- gtk_ui_manager_add_ui_from_file
- (ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
- if (error)
- {
- g_message (_("Building UI failed: %s"), error->message);
- g_error_free (error);
- }
-
- /* Load keyboard accelerators into the window. */
- gtk_window_add_accel_group
- (GTK_WINDOW (self), gtk_ui_manager_get_accel_group (ui_manager));
-
- priv->menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
- gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0);
-
- priv->hbox = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, TRUE, TRUE, 0);
-
- /* Add the symbol toolbar. */
- priv->toolbar = gtk_toolbar_new ();
- /* NOTE: For GTK 2.16+, s/toolbar/orientable/ */
- gtk_toolbar_set_orientation
- (GTK_TOOLBAR (priv->toolbar), GTK_ORIENTATION_VERTICAL);
- gtk_toolbar_set_icon_size
- (GTK_TOOLBAR (priv->toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_toolbar_set_style
- (GTK_TOOLBAR (priv->toolbar), GTK_TOOLBAR_ICONS);
-
- gtk_box_pack_start (GTK_BOX (priv->hbox), priv->toolbar, FALSE, FALSE, 0);
-
- /* Symbol library. */
- priv->library = logdiag_symbol_library_new ();
- logdiag_symbol_library_load (priv->library, PROJECT_SHARE_DIR "library");
-
- load_toolbar (self);
-
- /* Canvas. */
- priv->canvas = logdiag_canvas_new ();
- gtk_box_pack_start (GTK_BOX (priv->hbox), GTK_WIDGET (priv->canvas),
- FALSE, FALSE, 0);
-
- /* TODO: GtkHPaned */
-
- priv->statusbar = gtk_statusbar_new ();
- priv->statusbar_menu_context_id = gtk_statusbar_get_context_id
- (GTK_STATUSBAR (priv->statusbar), "menu");
- gtk_box_pack_end (GTK_BOX (priv->vbox), priv->statusbar, FALSE, FALSE, 0);
-
-
- /* TODO: Do this on disposal. */
- /* g_object_unref(ui_manager); */
-
- /* Proceed to showing the window. */
- g_signal_connect (self, "destroy", G_CALLBACK (gtk_main_quit), NULL);
- gtk_window_set_default_size (GTK_WINDOW (self), 500, 400);
- gtk_widget_show_all (GTK_WIDGET (self));
-}
-
-static void
-cb_load_category (gpointer key, gpointer value, gpointer user_data)
-{
- const gchar *name;
- LogdiagSymbolCategory *cat;
- LogdiagWindowMain *self;
- GdkPixbuf *pbuf;
- GtkWidget *img;
- GtkToolItem *item;
-
- name = key;
- cat = value;
- self = user_data;
-
- g_return_if_fail (key != NULL);
- g_return_if_fail (LOGDIAG_IS_SYMBOL_CATEGORY (cat));
-
- /* XXX: Hardcoded icon width, unref? */
- pbuf = gdk_pixbuf_new_from_file_at_size (cat->image_path, 32, -1, NULL);
- if (!pbuf)
- return;
- img = gtk_image_new_from_pixbuf (pbuf);
- g_object_unref (pbuf);
-
- item = gtk_tool_button_new (img, name);
- gtk_tool_item_set_tooltip_text (item, name);
- gtk_toolbar_insert (GTK_TOOLBAR (self->priv->toolbar), item, 0);
-}
-
-static void
-load_toolbar (LogdiagWindowMain *self)
-{
- /* TODO: Clear the toolbar first, if there was already something in it. */
-
- g_hash_table_foreach (self->priv->library->categories,
- cb_load_category, self);
-}
-
-static void
-cb_ui_proxy_connected (GtkUIManager *ui, GtkAction *action,
- GtkWidget *proxy, LogdiagWindowMain *window)
-{
- if (GTK_IS_MENU_ITEM (proxy))
- {
- g_signal_connect (proxy, "select",
- G_CALLBACK (cb_menu_item_selected), window);
- g_signal_connect (proxy, "deselect",
- G_CALLBACK (cb_menu_item_deselected), window);
- }
-}
-
-static void
-cb_ui_proxy_disconnected (GtkUIManager *ui, GtkAction *action,
- GtkWidget *proxy, LogdiagWindowMain *window)
-{
- if (GTK_IS_MENU_ITEM (proxy))
- {
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (cb_menu_item_selected), window);
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (cb_menu_item_deselected), window);
- }
-}
-
-static void
-cb_menu_item_selected (GtkWidget *item, LogdiagWindowMain *window)
-{
- GtkAction *action;
- gchar *tooltip;
-
- action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (item));
- g_object_get (G_OBJECT (action), "tooltip", &tooltip, NULL);
-
- if (tooltip != NULL)
- gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar),
- window->priv->statusbar_menu_context_id, tooltip);
-
- g_free (tooltip);
-}
-
-static void
-cb_menu_item_deselected (GtkItem *item, LogdiagWindowMain *window)
-{
- gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar),
- window->priv->statusbar_menu_context_id);
-}
-
-static void
-cb_show_about_dialog (GtkAction *action, LogdiagWindowMain *window)
-{
- gtk_show_about_dialog (GTK_WINDOW (window),
- "program-name", PROJECT_NAME,
- "version", PROJECT_VERSION,
- "copyright", "Copyright Přemysl Janouch 2010",
- NULL);
-}
-
diff --git a/src/window-main.h b/src/window-main.h
deleted file mode 100644
index 28b3024..0000000
--- a/src/window-main.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * window-main.h
- *
- * This file is a part of logdiag.
- * Copyright Přemysl Janouch 2010. All rights reserved.
- *
- * See the file LICENSE for licensing information.
- *
- */
-
-#ifndef __WINDOW_MAIN_H__
-#define __WINDOW_MAIN_H__
-
-G_BEGIN_DECLS
-
-
-#define LOGDIAG_TYPE_WINDOW_MAIN (logdiag_window_main_get_type ())
-#define LOGDIAG_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMain))
-#define LOGDIAG_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
- ((klass), LOGDIAG_TYPE_WINDOW_MAIN, LogdiagWindowMainClass))
-#define LOGDIAG_IS_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), LOGDIAG_TYPE_WINDOW_MAIN))
-#define LOGDIAG_IS_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
- ((klass), LOGDIAG_TYPE_WINDOW_MAIN))
-#define LOGDIAG_WINDOW_MAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), LOGDIAG_WINDOW_MAIN, LogdiagWindowMainClass))
-
-typedef struct _LogdiagWindowMain LogdiagWindowMain;
-typedef struct _LogdiagWindowMainPrivate LogdiagWindowMainPrivate;
-typedef struct _LogdiagWindowMainClass LogdiagWindowMainClass;
-
-
-/**
- * LogdiagWindowMain:
- *
- * Object structure.
- */
-struct _LogdiagWindowMain
-{
-/*< private >*/
- GtkWindow parent_instance;
- LogdiagWindowMainPrivate *priv;
-};
-
-struct _LogdiagWindowMainClass
-{
- GtkWindowClass parent_class;
-};
-
-
-GType logdiag_window_main_get_type (void) G_GNUC_CONST;
-
-GtkWidget *logdiag_window_main_new (void);
-
-
-G_END_DECLS
-
-#endif /* ! __WINDOW_MAIN_H__ */
-
--
cgit v1.2.3-70-g09d2