Code

by default, try square arrangement, not 1 row as before
[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::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;
109 void ExtensionsPanel::rescan()
111     _view.get_buffer()->set_text("Extensions:\n");
112 //     g_message("/------------------");
114     Inkscape::Extension::db.foreach(listCB, (gpointer)this);
116 //     g_message("\\------------------");
121 } //namespace Dialogs
122 } //namespace UI
123 } //namespace Inkscape