1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-

   baul-sidebar.c: Interface for baul sidebar plugins

   Copyright (C) 2004 Red Hat Inc.

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   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., 51 Franklin St, Fifth Floor,
   Boston, MA 02110-1301, USA.

   Author: Alexander Larsson <alexl@redhat.com>
*/

#include <config.h>
#include "baul-sidebar.h"

enum
{
    TAB_ICON_CHANGED,
    ZOOM_PARAMETERS_CHANGED,
    ZOOM_LEVEL_CHANGED,
    LAST_SIGNAL
};

static guint baul_sidebar_signals[LAST_SIGNAL] = { 0 };

static void
baul_sidebar_base_init (gpointer g_class G_GNUC_UNUSED)
{
    static gboolean initialized = FALSE;

    if (! initialized)
    {
        baul_sidebar_signals[TAB_ICON_CHANGED] =
            g_signal_new ("tab_icon_changed",
                          BAUL_TYPE_SIDEBAR,
                          G_SIGNAL_RUN_LAST,
                          G_STRUCT_OFFSET (BaulSidebarIface, tab_icon_changed),
                          NULL, NULL,
                          g_cclosure_marshal_VOID__VOID,
                          G_TYPE_NONE, 0);

        initialized = TRUE;
    }
}

GType
baul_sidebar_get_type (void)<--- The function 'baul_sidebar_get_type' should have static linkage since it is not used outside of its translation unit.
{
    static GType type = 0;

    if (!type)
    {
        const GTypeInfo info =
        {
            sizeof (BaulSidebarIface),
            baul_sidebar_base_init,
            NULL,
            NULL,
            NULL,
            NULL,
            0,
            0,
            NULL
        };

        type = g_type_register_static (G_TYPE_INTERFACE,
                                       "BaulSidebar",
                                       &info, 0);
        g_type_interface_add_prerequisite (type, CTK_TYPE_WIDGET);
    }

    return type;
}


const char *
baul_sidebar_get_sidebar_id (BaulSidebar *sidebar)
{
    g_return_val_if_fail (BAUL_IS_SIDEBAR (sidebar), NULL);

    return (* BAUL_SIDEBAR_GET_IFACE (sidebar)->get_sidebar_id) (sidebar);
}

char *
baul_sidebar_get_tab_label (BaulSidebar *sidebar)
{
    g_return_val_if_fail (BAUL_IS_SIDEBAR (sidebar), NULL);

    return (* BAUL_SIDEBAR_GET_IFACE (sidebar)->get_tab_label) (sidebar);
}

char *
baul_sidebar_get_tab_tooltip (BaulSidebar *sidebar)
{
    g_return_val_if_fail (BAUL_IS_SIDEBAR (sidebar), NULL);

    return (* BAUL_SIDEBAR_GET_IFACE (sidebar)->get_tab_tooltip) (sidebar);
}

GdkPixbuf *
baul_sidebar_get_tab_icon (BaulSidebar *sidebar)
{
    g_return_val_if_fail (BAUL_IS_SIDEBAR (sidebar), NULL);

    return (* BAUL_SIDEBAR_GET_IFACE (sidebar)->get_tab_icon) (sidebar);
}

void
baul_sidebar_is_visible_changed (BaulSidebar *sidebar,
                                 gboolean         is_visible)
{
    g_return_if_fail (BAUL_IS_SIDEBAR (sidebar));

    (* BAUL_SIDEBAR_GET_IFACE (sidebar)->is_visible_changed) (sidebar,
            is_visible);
}