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::getInstance()
29 {
30 ExtensionsPanel &instance = *new ExtensionsPanel();
32 instance.rescan();
34 return instance;
35 }
39 /**
40 * Constructor
41 */
42 ExtensionsPanel::ExtensionsPanel() :
43 _showAll(false)
44 {
45 Gtk::ScrolledWindow* scroller = new Gtk::ScrolledWindow();
47 _view.set_editable(false);
49 scroller->add(_view);
50 add(*scroller);
52 rescan();
54 show_all_children();
55 }
57 void ExtensionsPanel::set_full(bool full)
58 {
59 if ( full != _showAll ) {
60 _showAll = full;
61 rescan();
62 }
63 }
65 void ExtensionsPanel::listCB( Inkscape::Extension::Extension * in_plug, gpointer in_data )
66 {
67 ExtensionsPanel * self = (ExtensionsPanel*)in_data;
69 const char* stateStr;
70 Extension::state_t state = in_plug->get_state();
71 switch ( state ) {
72 case Extension::STATE_LOADED:
73 {
74 stateStr = "loaded";
75 }
76 break;
77 case Extension::STATE_UNLOADED:
78 {
79 stateStr = "unloaded";
80 }
81 break;
82 case Extension::STATE_DEACTIVATED:
83 {
84 stateStr = "deactivated";
85 }
86 break;
87 default:
88 stateStr = "unknown";
89 }
91 if ( self->_showAll || in_plug->deactivated() ) {
92 // gchar* line = g_strdup_printf( " extension %c %c %s |%s|%s|",
93 // (in_plug->loaded() ? 'X' : '-'),
94 // (in_plug->deactivated() ? 'X' : '-'),
95 // stateStr, in_plug->get_id(),
96 // in_plug->get_name() );
97 gchar* line = g_strdup_printf( "%s %s\n \"%s\"", stateStr, in_plug->get_name(), in_plug->get_id() );
99 self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), line );
100 self->_view.get_buffer()->insert( self->_view.get_buffer()->end(), "\n" );
101 //g_message( "%s", line );
102 }
106 return;
107 }
109 void ExtensionsPanel::rescan()
110 {
111 _view.get_buffer()->set_text("Extensions:\n");
112 // g_message("/------------------");
114 Inkscape::Extension::db.foreach(listCB, (gpointer)this);
116 // g_message("\\------------------");
117 }
121 } //namespace Dialogs
122 } //namespace UI
123 } //namespace Inkscape