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;
104 }
106 void ExtensionsPanel::rescan()
107 {
108 _view.get_buffer()->set_text("Extensions:\n");
109 // g_message("/------------------");
111 Inkscape::Extension::db.foreach(listCB, (gpointer)this);
113 // g_message("\\------------------");
114 }
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 :