Code

Merge from fe-moved
[inkscape.git] / src / dialogs / extensions.cpp
1 /** @file
2  * @brief A simple dialog with information about extensions
3  */
4 /* Authors:
5  *   Jon A. Cruz
6  *
7  * Copyright (C) 2005 Jon A. Cruz
8  *
9  * Released under GNU GPL, read the file 'COPYING' for more information
10  */
12 #include <gtk/gtkdialog.h> //for GTK_RESPONSE* types
13 #include <gtkmm/scrolledwindow.h>
15 #include "extension/db.h"
16 #include "extensions.h"
19 namespace Inkscape {
20 namespace UI {
21 namespace Dialogs {
23 using Inkscape::Extension::Extension;
25 ExtensionsPanel &ExtensionsPanel::getInstance()
26 {
27     ExtensionsPanel &instance = *new ExtensionsPanel();
29     instance.rescan();
31     return instance;
32 }
36 /**
37  * Constructor
38  */
39 ExtensionsPanel::ExtensionsPanel() :
40         _showAll(false)
41 {
42     Gtk::ScrolledWindow* scroller = new Gtk::ScrolledWindow();
44     _view.set_editable(false);
46     scroller->add(_view);
47     add(*scroller);
49     rescan();
51     show_all_children();
52 }
54 void ExtensionsPanel::set_full(bool full)
55 {
56     if ( full != _showAll ) {
57         _showAll = full;
58         rescan();
59     }
60 }
62 void ExtensionsPanel::listCB( Inkscape::Extension::Extension * in_plug, gpointer in_data )
63 {
64     ExtensionsPanel * self = (ExtensionsPanel*)in_data;
66     const char* stateStr;
67     Extension::state_t state = in_plug->get_state();
68     switch ( state ) {
69         case Extension::STATE_LOADED:
70         {
71             stateStr = "loaded";
72         }
73         break;
74         case Extension::STATE_UNLOADED:
75         {
76             stateStr = "unloaded";
77         }
78         break;
79         case Extension::STATE_DEACTIVATED:
80         {
81             stateStr = "deactivated";
82         }
83         break;
84         default:
85             stateStr = "unknown";
86     }
88     if ( self->_showAll || in_plug->deactivated() ) {
89 //         gchar* line = g_strdup_printf( " extension   %c %c  %s   |%s|%s|",
90 //                                        (in_plug->loaded() ? 'X' : '-'),
91 //                                        (in_plug->deactivated() ? 'X' : '-'),
92 //                                        stateStr, in_plug->get_id(),
93 //                                        in_plug->get_name() );
94         gchar* line = g_strdup_printf( "%s   %s\n        \"%s\"", stateStr, in_plug->get_name(), in_plug->get_id() );
96         self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), line );
97         self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), "\n" );
98         //g_message( "%s", line );
99     }
103     return;
106 void ExtensionsPanel::rescan()
108     _view.get_buffer()->set_text("Extensions:\n");
109 //     g_message("/------------------");
111     Inkscape::Extension::db.foreach(listCB, (gpointer)this);
113 //     g_message("\\------------------");
116 } //namespace Dialogs
117 } //namespace UI
118 } //namespace Inkscape
120 /*
121   Local Variables:
122   mode:c++
123   c-file-style:"stroustrup"
124   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
125   indent-tabs-mode:nil
126   fill-column:99
127   End:
128 */
129 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :