~elementary-apps/noise/trunk

« back to all changes in this revision

Viewing changes to core/PluginManager.vala

  • Committer: xapantu
  • Date: 2012-02-17 21:03:47 UTC
  • Revision ID: xapantu@gmail.com-20120217210347-57n8ernudh5yeify
Add a podcast module in order to move podcasts stuff there later

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
    }
58
58
}
59
59
 
60
 
public interface BeatBox.Plugins.Activatable {
61
 
    public abstract Interface plugins_iface { private set; owned get; }
 
60
public interface BeatBox.Plugins.Activatable : Object {
 
61
    public abstract Iface object { set; owned get; }
62
62
    public abstract void activate ();
63
63
    public abstract void deactivate ();
64
64
}
98
98
 
99
99
        /* Let's load the builtin ones */
100
100
 
101
 
        settings.bind(settings_field, engine, "loaded-plugins", SettingsBindFlags.DEFAULT);
 
101
        //settings.bind(settings_field, engine, "loaded-plugins", SettingsBindFlags.DEFAULT);
102
102
 
103
103
        /* Our extension set */
104
 
        Parameter param = Parameter();
105
 
        param.value = plugin_iface;
106
 
        param.name = "object";
107
 
        exts = new Peas.ExtensionSet (engine, typeof(Activatable), "object", plugin_iface, null);
 
104
        exts = new Peas.ExtensionSet (engine, typeof(Activatable), null);
108
105
 
109
106
        exts.extension_added.connect(on_extension_added);
110
107
        exts.extension_removed.connect(on_extension_removed);
111
108
        peas_extension_set_foreach(exts, on_extension_added, null);
112
 
 
 
109
            
 
110
        var core_list = engine.get_plugin_list ().copy ();
 
111
        string[] core_plugins = new string[core_list.length()];
 
112
 
 
113
        for (int i = 0; i < core_list.length(); i++) {
 
114
            core_plugins[i] = core_list.nth_data (i).get_module_name ();
 
115
        }
 
116
        engine.loaded_plugins = core_plugins;
 
117
 
 
118
#if 0
113
119
        
114
120
        if (e != null) {
115
121
            /* The core now */
131
137
 
132
138
            peas_extension_set_foreach(exts_core, on_extension_added, null);
133
139
        }
 
140
#endif
134
141
    }
135
142
 
136
143
    public Gtk.Widget get_view () {
143
150
    }
144
151
 
145
152
    void on_extension_added(Peas.PluginInfo info, Object extension) {
146
 
        ((Peas.Activatable)extension).activate();
 
153
        ((Activatable)extension).object = new Iface ();
 
154
        plugin_iface.register_iface (((Activatable)extension).object);
 
155
        ((Activatable)extension).activate();
147
156
    }
148
157
    void on_extension_removed(Peas.PluginInfo info, Object extension) {
149
 
        ((Peas.Activatable)extension).deactivate();
 
158
        ((Activatable)extension).deactivate();
150
159
    }
151
160
}
152
161