Code

welcome to 0.44+devel
[inkscape.git] / src / dialogs / extensions.cpp
1 /*
2  * A simple dialog for previewing icon representation.
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  */
11 #ifdef HAVE_CONFIG_H
12 # include <config.h>
13 #endif
15 #include <gtk/gtkdialog.h> //for GTK_RESPONSE* types
16 #include <gtkmm/scrolledwindow.h>
18 #include "extension/db.h"
19 #include "extensions.h"
22 namespace Inkscape {
23 namespace UI {
24 namespace Dialogs {
26 using Inkscape::Extension::Extension;
28 ExtensionsPanel* ExtensionsPanel::instance = 0;
31 ExtensionsPanel& ExtensionsPanel::getInstance()
32 {
33     if ( !instance ) {
34         instance = new ExtensionsPanel();
35     }
37     instance->rescan();
39     return *instance;
40 }
44 /**
45  * Constructor
46  */
47 ExtensionsPanel::ExtensionsPanel() :
48         _showAll(false)
49 {
50     Gtk::ScrolledWindow* scroller = new Gtk::ScrolledWindow();
52     _view.set_editable(false);
54     scroller->add(_view);
55     add(*scroller);
57     rescan();
59     show_all_children();
60 }
62 void ExtensionsPanel::set_full(bool full)
63 {
64     if ( full != _showAll ) {
65         _showAll = full;
66         rescan();
67     }
68 }
70 void ExtensionsPanel::listCB( Inkscape::Extension::Extension * in_plug, gpointer in_data )
71 {
72     ExtensionsPanel * self = (ExtensionsPanel*)in_data;
74     const char* stateStr;
75     Extension::state_t state = in_plug->get_state();
76     switch ( state ) {
77         case Extension::STATE_LOADED:
78         {
79             stateStr = "loaded";
80         }
81         break;
82         case Extension::STATE_UNLOADED:
83         {
84             stateStr = "unloaded";
85         }
86         break;
87         case Extension::STATE_DEACTIVATED:
88         {
89             stateStr = "deactivated";
90         }
91         break;
92         default:
93             stateStr = "unknown";
94     }
96     if ( self->_showAll || in_plug->deactivated() ) {
97 //         gchar* line = g_strdup_printf( " extension   %c %c  %s   |%s|%s|",
98 //                                        (in_plug->loaded() ? 'X' : '-'),
99 //                                        (in_plug->deactivated() ? 'X' : '-'),
100 //                                        stateStr, in_plug->get_id(),
101 //                                        in_plug->get_name() );
102         gchar* line = g_strdup_printf( "%s   %s\n        \"%s\"", stateStr, in_plug->get_name(), in_plug->get_id() );
104         self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), line );
105         self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), "\n" );
106         //g_message( "%s", line );
107     }
111     return;
114 void ExtensionsPanel::rescan()
116     _view.get_buffer()->set_text("Extensions:\n");
117 //     g_message("/------------------");
119     Inkscape::Extension::db.foreach(listCB, (gpointer)this);
121 //     g_message("\\------------------");
126 } //namespace Dialogs
127 } //namespace UI
128 } //namespace Inkscape