X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=cut-n-paste%2Ftoolbar-editor%2Fegg-toolbars-model.c;h=27dbedf627e34a5a46065eec683f4d76e0d7c461;hb=212d9a536bc60e711b779feb5e8aa33db654997d;hp=f0a5b0fa0fb5ebe9ddf1ca00ef272d175ce0c345;hpb=88f0701b10f70b8aede0f7e23014875ab72c2e26;p=evince.git diff --git a/cut-n-paste/toolbar-editor/egg-toolbars-model.c b/cut-n-paste/toolbar-editor/egg-toolbars-model.c index f0a5b0fa..27dbedf6 100644 --- a/cut-n-paste/toolbar-editor/egg-toolbars-model.c +++ b/cut-n-paste/toolbar-editor/egg-toolbars-model.c @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * $Id$ */ @@ -28,10 +28,8 @@ #include #include #include -#include +#include -static void egg_toolbars_model_class_init (EggToolbarsModelClass *klass); -static void egg_toolbars_model_init (EggToolbarsModel *model); static void egg_toolbars_model_finalize (GObject *object); enum @@ -57,8 +55,6 @@ typedef struct static guint signals[LAST_SIGNAL] = { 0 }; -static GObjectClass *parent_class = NULL; - #define EGG_TOOLBARS_MODEL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EGG_TYPE_TOOLBARS_MODEL, EggToolbarsModelPrivate)) struct EggToolbarsModelPrivate @@ -68,36 +64,7 @@ struct EggToolbarsModelPrivate GHashTable *flags; }; -GType -egg_toolbars_model_get_type (void) -{ - static GType type = 0; - - if (G_UNLIKELY (type == 0)) - { - static const GTypeInfo our_info = { - sizeof (EggToolbarsModelClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) egg_toolbars_model_class_init, - NULL, - NULL, /* class_data */ - sizeof (EggToolbarsModel), - 0, /* n_preallocs */ - (GInstanceInitFunc) egg_toolbars_model_init - }; - volatile GType flags_type; /* work around gcc's optimiser */ - - /* make sure the flags type is known */ - flags_type = EGG_TYPE_TB_MODEL_FLAGS; - - type = g_type_register_static (G_TYPE_OBJECT, - "EggToolbarsModel", - &our_info, 0); - } - - return type; -} +G_DEFINE_TYPE (EggToolbarsModel, egg_toolbars_model, G_TYPE_OBJECT) static xmlDocPtr egg_toolbars_model_to_xml (EggToolbarsModel *model) @@ -136,7 +103,7 @@ egg_toolbars_model_to_xml (EggToolbarsModel *model) node = xmlNewChild (tnode, NULL, (const xmlChar*) "separator", NULL); continue; } - + node = xmlNewChild (tnode, NULL, (const xmlChar*) "toolitem", NULL); xmlSetProp (node, (const xmlChar*) "name", (const xmlChar*) item->name); @@ -149,13 +116,13 @@ egg_toolbars_model_to_xml (EggToolbarsModel *model) { xmlNodePtr dnode; char *tmp; - + tmp = type->get_data (type, item->name); if (tmp != NULL) { dnode = xmlNewTextChild (node, NULL, (const xmlChar*) "data", (const xmlChar*) tmp); g_free (tmp); - + tmp = gdk_atom_name (type->type); xmlSetProp (dnode, (const xmlChar*) "type", (const xmlChar*) tmp); g_free (tmp); @@ -247,8 +214,8 @@ is_unique (EggToolbarsModel *model, { EggToolbarsItem *idata2; GNode *toolbar, *item; - - + + for(toolbar = g_node_first_child (model->priv->toolbars); toolbar != NULL; toolbar = g_node_next_sibling (toolbar)) { @@ -256,14 +223,14 @@ is_unique (EggToolbarsModel *model, item != NULL; item = g_node_next_sibling (item)) { idata2 = item->data; - + if (idata != idata2 && strcmp (idata->name, idata2->name) == 0) { return FALSE; } } } - + return TRUE; } @@ -324,7 +291,7 @@ toolbar_node_free (GNode *toolbar_node, EggToolbarsModel *model) g_node_children_foreach (toolbar_node, G_TRAVERSE_ALL, (GNodeForeachFunc) item_node_free, model); - + g_free (toolbar->name); g_free (toolbar); @@ -374,14 +341,14 @@ egg_toolbars_model_get_data (EggToolbarsModel *model, EggToolbarsItemType *t; char *data = NULL; GList *l; - + if (type == GDK_NONE || type == gdk_atom_intern (EGG_TOOLBAR_ITEM_TYPE, FALSE)) { g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (*name != 0, NULL); return strdup (name); } - + for (l = model->priv->types; l != NULL; l = l->next) { t = l->data; @@ -391,7 +358,7 @@ egg_toolbars_model_get_data (EggToolbarsModel *model, if (data != NULL) break; } } - + return data; } @@ -404,14 +371,14 @@ egg_toolbars_model_get_name (EggToolbarsModel *model, EggToolbarsItemType *t; char *name = NULL; GList *l; - + if (type == GDK_NONE || type == gdk_atom_intern (EGG_TOOLBAR_ITEM_TYPE, FALSE)) { g_return_val_if_fail (data, NULL); g_return_val_if_fail (*data, NULL); return strdup (data); } - + if (create) { for (l = model->priv->types; name == NULL && l != NULL; l = l->next) @@ -420,7 +387,7 @@ egg_toolbars_model_get_name (EggToolbarsModel *model, if (t->type == type && t->new_name != NULL) name = t->new_name (t, data); } - + return name; } else @@ -431,9 +398,9 @@ egg_toolbars_model_get_name (EggToolbarsModel *model, if (t->type == type && t->get_name != NULL) name = t->get_name (t, data); } - + return name; - } + } } static gboolean @@ -504,20 +471,20 @@ parse_data_list (EggToolbarsModel *model, { xmlChar *type = xmlGetProp (child, (const xmlChar*) "type"); xmlChar *data = xmlNodeGetContent (child); - + if (type != NULL) { GdkAtom atom = gdk_atom_intern ((const char*) type, TRUE); name = egg_toolbars_model_get_name (model, atom, (const char*) data, create); } - + xmlFree (type); xmlFree (data); } - + child = child->next; } - + return name; } @@ -539,25 +506,25 @@ parse_item_list (EggToolbarsModel *model, { name = parse_data_list (model, child->children, TRUE); } - + /* If that fails, try to use the name. */ if (name == NULL) { xmlChar *type = xmlGetProp (child, (const xmlChar*) "type"); xmlChar *data = xmlGetProp (child, (const xmlChar*) "name"); GdkAtom atom = type ? gdk_atom_intern ((const char*) type, TRUE) : GDK_NONE; - + /* If an old format, try to use it. */ name = egg_toolbars_model_get_name (model, atom, (const char*) data, FALSE); if (name == NULL) { name = egg_toolbars_model_get_name (model, atom, (const char*) data, TRUE); } - + xmlFree (type); xmlFree (data); } - + if (name != NULL) { egg_toolbars_model_add_item (model, position, -1, name); @@ -606,7 +573,7 @@ parse_toolbars (EggToolbarsModel *model, xmlFree (string); egg_toolbars_model_set_flags (model, position, flags); - + parse_item_list (model, child->children, position); } @@ -645,7 +612,7 @@ parse_available_list (EggToolbarsModel *model, xmlNodePtr child) { gint flags; - + while (child) { if (xmlStrEqual (child->name, (const xmlChar*) "toolitem")) @@ -708,8 +675,10 @@ static void egg_toolbars_model_class_init (EggToolbarsModelClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + volatile GType flags_type; /* work around gcc's optimiser */ - parent_class = g_type_class_peek_parent (klass); + /* make sure the flags type is known */ + flags_type = EGG_TYPE_TB_MODEL_FLAGS; object_class->finalize = egg_toolbars_model_finalize; @@ -761,7 +730,7 @@ egg_toolbars_model_init (EggToolbarsModel *model) model->priv->toolbars = g_node_new (NULL); model->priv->flags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - egg_toolbars_model_set_name_flags (model, "_separator", + egg_toolbars_model_set_name_flags (model, "_separator", EGG_TB_MODEL_NAME_KNOWN | EGG_TB_MODEL_NAME_INFINITE); } @@ -776,7 +745,7 @@ egg_toolbars_model_finalize (GObject *object) g_node_destroy (model->priv->toolbars); g_hash_table_destroy (model->priv->flags); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (egg_toolbars_model_parent_class)->finalize (object); } EggToolbarsModel * @@ -870,22 +839,22 @@ egg_toolbars_model_delete_item (EggToolbarsModel *model, int tpos, ipos; g_return_if_fail (EGG_IS_TOOLBARS_MODEL (model)); - + toolbar = g_node_first_child (model->priv->toolbars); tpos = 0; - + while (toolbar != NULL) { item = g_node_first_child (toolbar); ipos = 0; - + /* Don't delete toolbars that were already empty */ if (item == NULL) { toolbar = g_node_next_sibling (toolbar); continue; } - + while (item != NULL) { next = g_node_next_sibling (item); @@ -901,10 +870,10 @@ egg_toolbars_model_delete_item (EggToolbarsModel *model, { ipos++; } - + item = next; } - + next = g_node_next_sibling (toolbar); tdata = toolbar->data; if (!(tdata->flags & EGG_TB_MODEL_NOT_REMOVABLE) && @@ -920,7 +889,7 @@ egg_toolbars_model_delete_item (EggToolbarsModel *model, { tpos++; } - + toolbar = next; } }