mirror of
https://gitlab.gnome.org/GNOME/glade.git
synced 2025-12-07 00:03:12 -05:00
* Reorganised package structure, moved a lot of files and directories. Modified the Makefile.am in most directories. * po/POTFILES.in, po/POTFILES.skip: Update for reorganisation. * configure.ac: Add files to AC_CONFIG_FILES. Change AC_CONFIG_SRCDIR. svn path=/trunk/; revision=1050
212 lines
7.1 KiB
C
212 lines
7.1 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
#ifndef __GLADE_EDITOR_H__
|
|
#define __GLADE_EDITOR_H__
|
|
|
|
#include "glade-signal-editor.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
|
|
#define GLADE_TYPE_EDITOR (glade_editor_get_type ())
|
|
#define GLADE_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_EDITOR, GladeEditor))
|
|
#define GLADE_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_EDITOR, GladeEditorClass))
|
|
#define GLADE_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_EDITOR))
|
|
#define GLADE_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_EDITOR))
|
|
#define GLADE_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_EDITOR, GladeEditorClass))
|
|
|
|
#define GLADE_EDITOR_TABLE(t) ((GladeEditorTable *)t)
|
|
#define GLADE_IS_EDITOR_TABLE(t) (t != NULL)
|
|
|
|
typedef struct _GladeEditor GladeEditor;
|
|
typedef struct _GladeEditorClass GladeEditorClass;
|
|
typedef struct _GladeEditorTable GladeEditorTable;
|
|
|
|
typedef enum _GladeEditorTableType
|
|
{
|
|
TABLE_TYPE_GENERAL,
|
|
TABLE_TYPE_COMMON,
|
|
TABLE_TYPE_PACKING,
|
|
TABLE_TYPE_ATK,
|
|
TABLE_TYPE_QUERY
|
|
} GladeEditorTableType;
|
|
|
|
/* The GladeEditor is a window that is used to display and modify widget
|
|
* properties. The glade editor contains the details of the selected
|
|
* widget for the selected project
|
|
*/
|
|
struct _GladeEditor
|
|
{
|
|
GtkVBox vbox; /* The editor is a vbox */
|
|
|
|
GtkWidget *notebook; /* The notebook widget */
|
|
|
|
GladeWidget *loaded_widget; /* A handy pointer to the GladeWidget
|
|
* that is loaded in the editor. NULL
|
|
* if no widgets are selected
|
|
*/
|
|
|
|
GladeWidgetAdaptor *loaded_adaptor; /* A pointer to the loaded
|
|
* GladeWidgetAdaptor. Note that we can
|
|
* have a class loaded without a
|
|
* loaded_widget. For this reason we
|
|
* can't use loaded_widget->adaptor.
|
|
* When a widget is selected we load
|
|
* this class in the editor first and
|
|
* then fill the values of the inputs
|
|
* with the GladeProperty items.
|
|
* This is usefull for not having
|
|
* to redraw/container_add the widgets
|
|
* when we switch from widgets of the
|
|
* same class
|
|
*/
|
|
|
|
|
|
/* The editor has (at this moment) four tabs; these are pointers to the
|
|
* widget inside each tab. The widgets are wrapped into a scrolled window.
|
|
* The page_* widgets are deparented and parented with
|
|
* ((GladeEditorTable *)etable)->table_widget when a widget is selected and
|
|
* the correct editor table is found. The exception is `page_signals' which
|
|
* always contains the same signal editor widget which simply reloads when
|
|
* loading a widget.
|
|
*/
|
|
GtkWidget *page_widget;
|
|
GtkWidget *page_packing;
|
|
GtkWidget *page_common;
|
|
GtkWidget *page_signals;
|
|
GtkWidget *page_atk;
|
|
|
|
GladeSignalEditor *signal_editor; /* The signal editor packed into vbox_signals
|
|
*/
|
|
|
|
GList *widget_tables; /* A list of GladeEditorTable. We have a table
|
|
* (gtktable) for each GladeWidgetClass, if
|
|
* we don't have one yet, we create it when
|
|
* we are asked to load a widget of a particular
|
|
* GladeWidgetClass
|
|
*/
|
|
|
|
GladeEditorTable *packing_etable; /* Packing pages are dynamicly created each
|
|
* selection, this pointer is only to free
|
|
* the last packing page.
|
|
*/
|
|
|
|
GList *packing_eprops; /* Current list of packing GladeEditorProperties
|
|
*/
|
|
|
|
gboolean loading; /* Use when loading a GladeWidget into the editor
|
|
* we set this flag so that we can ignore the
|
|
* "changed" signal of the name entry text since
|
|
* the name has not really changed, just a new name
|
|
* was loaded.
|
|
*/
|
|
|
|
GtkWidget *launch_button; /* Button used to launch custom editors implemented
|
|
* through the plugin backend.
|
|
*/
|
|
|
|
gulong project_closed_signal_id; /* Unload widget when widget's project closes.
|
|
*/
|
|
|
|
GtkWidget *reset_button; /* The reset button
|
|
*/
|
|
|
|
GtkWidget *info_button; /* The actual informational button
|
|
*/
|
|
|
|
gboolean show_info; /* Whether or not to show an informational button
|
|
*/
|
|
gboolean show_context_info; /* Whether or not to show an informational
|
|
* button for each property and signal.
|
|
*/
|
|
};
|
|
|
|
struct _GladeEditorClass
|
|
{
|
|
GtkVBoxClass parent_class;
|
|
|
|
void (*add_signal) (GladeEditor *editor, const char *id_widget,
|
|
GType type_widget, guint id_signal,
|
|
const char *callback_name);
|
|
|
|
void (*gtk_doc_search) (GladeEditor *,
|
|
const gchar *,
|
|
const gchar *,
|
|
const gchar *);
|
|
|
|
};
|
|
|
|
/* For each glade widget class that we have modified, we create a
|
|
* GladeEditorTable. A GladeEditorTable is mainly a gtk_table with all the
|
|
* widgets to edit a particular GladeWidgetClass (well the first tab of the
|
|
* gtk notebook). When a widget of is selected
|
|
* and going to be edited, we create a GladeEditorTable, when another widget
|
|
* of the same class is loaded so that it can be edited, we just update the
|
|
* contents of the editor table to relfect the values of that GladeWidget
|
|
*/
|
|
struct _GladeEditorTable
|
|
{
|
|
GladeEditor *editor; /* Handy pointer that avoids havving to pass the
|
|
* editor arround.
|
|
*/
|
|
|
|
GladeWidgetAdaptor *adaptor; /* The GladeWidgetAdaptor this
|
|
* table belongs to.
|
|
*/
|
|
|
|
GtkWidget *table_widget; /* This widget is a gtk_vbox that is displayed
|
|
* in the glade-editor when a widget of this
|
|
* class is selected. It is hiden when another
|
|
* type is selected. When we select a widget
|
|
* we load into the inputs inside this table
|
|
* the information about the selected widget.
|
|
*/
|
|
|
|
GtkWidget *name_entry; /* A pointer to the gtk_entry that holds
|
|
* the name of the widget. This is the
|
|
* first item _pack'ed to the table_widget.
|
|
* We have a pointer here because it is an
|
|
* entry which will not be created from a
|
|
* GladeProperty but rather from code.
|
|
*/
|
|
|
|
GList *properties; /* A list of GladeEditorPropery items.
|
|
* For each row in the gtk_table, there is a
|
|
* corrsponding GladeEditorProperty struct.
|
|
*/
|
|
|
|
GladeEditorTableType type; /* Is this table to be used in the common tab, ?
|
|
* the general tab, a packing tab or the query popup ?
|
|
*/
|
|
|
|
gint rows;
|
|
};
|
|
|
|
LIBGLADEUI_API
|
|
GType glade_editor_get_type (void);
|
|
LIBGLADEUI_API
|
|
GladeEditor *glade_editor_new (void);
|
|
LIBGLADEUI_API
|
|
void glade_editor_load_widget (GladeEditor *editor,
|
|
GladeWidget *widget);
|
|
LIBGLADEUI_API
|
|
void glade_editor_refresh (GladeEditor *editor);
|
|
LIBGLADEUI_API
|
|
void glade_editor_update_widget_name (GladeEditor *editor);
|
|
LIBGLADEUI_API
|
|
gboolean glade_editor_query_dialog (GladeEditor *editor,
|
|
GladeWidget *widget);
|
|
LIBGLADEUI_API
|
|
void glade_editor_show_info (GladeEditor *editor);
|
|
LIBGLADEUI_API
|
|
void glade_editor_show_context_info (GladeEditor *editor);
|
|
LIBGLADEUI_API
|
|
void glade_editor_hide_info (GladeEditor *editor);
|
|
LIBGLADEUI_API
|
|
void glade_editor_hide_context_info (GladeEditor *editor);
|
|
|
|
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __GLADE_EDITOR_H__ */
|