<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Factor</id>
		<title>Synfig Studio :: Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Factor"/>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/Special:Contributions/Factor"/>
		<updated>2026-05-07T01:11:37Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6843</id>
		<title>Dev:Adding a Panel - Part II</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6843"/>
				<updated>2008-04-21T08:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This example will show how to add widgets to the boring panel that was made in Part I.&lt;br /&gt;
&lt;br /&gt;
 [[Source:Adding_a_Panel-Part_I]]&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;gtkmm dir&amp;gt;dockable.h file, The only widgets defined are the &amp;quot;toolbar&amp;quot; and &amp;quot;toolbarbutton&amp;quot; so I will show these first. Then use some of the other widgets in the &amp;quot;canvasarea&amp;quot; and show how the toolbutton(s) can work together with the widgets in the &amp;quot;canvasarea&amp;quot; to modify, change or create items or parameters in Synfig Studio.  &lt;br /&gt;
&lt;br /&gt;
===ADDING A TOOL BAR BUTTON===&lt;br /&gt;
To use a toolbar button in your panel add this section of code to the class and function. &lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.h====&lt;br /&gt;
====   CLASS: class Dock_BoringEdit : public Dockable====&lt;br /&gt;
 &lt;br /&gt;
 void on_add_pressed();&lt;br /&gt;
&lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.cpp====&lt;br /&gt;
====FUNCTION: dock_BoringEdit::Dock_BoringEdit()====&lt;br /&gt;
The button icon can be changed to any of the stock id icons. Here we have it set to &amp;quot;gtk-add&amp;quot;.&lt;br /&gt;
The link shows the GTK name, just use &amp;quot;gtk-about&amp;quot;, &amp;quot;gtk-bold&amp;quot;, &amp;quot;gtk-apply&amp;quot; in that fashion etc..&lt;br /&gt;
 http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/namespaceGtk_1_1Stock.html#bf965c1d305e2880ac77f830477bb282&lt;br /&gt;
&lt;br /&gt;
This function can be added as many times as you want. The widget will create a drop down box if widget(s) are larger than GUI allows.&lt;br /&gt;
&lt;br /&gt;
 add_button(&lt;br /&gt;
 		Gtk::StockID(&amp;quot;gtk-add&amp;quot;),&lt;br /&gt;
 		_(&amp;quot;ADD&amp;quot;)&lt;br /&gt;
 	)-&amp;gt;signal_clicked().connect(&lt;br /&gt;
 		sigc::mem_fun(&lt;br /&gt;
 			*this,&lt;br /&gt;
 			&amp;amp;Dock_BoringEdit::on_add_pressed&lt;br /&gt;
 		)&lt;br /&gt;
 	);&lt;br /&gt;
 &lt;br /&gt;
Then add this stub function &amp;quot;on_add_pressed&amp;quot; which will do noting except be a place holder for the signal of button(s).&lt;br /&gt;
&lt;br /&gt;
 void Dock_BoringEdit::on_add_pressed()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NOT FINISHED YET..==&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6840</id>
		<title>Dev:Adding a Panel - Part II</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6840"/>
				<updated>2008-04-21T08:34:35Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This example will show how to add widgets to the boring panel that was made in Part I.&lt;br /&gt;
&lt;br /&gt;
 http://www.synfig.org/index.php?title=Source:Adding_a_Panel-Part_I&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;gtkmm dir&amp;gt;dockable.h file, The only widgets defined are the &amp;quot;toolbar&amp;quot; and &amp;quot;toolbarbutton&amp;quot; so I will show these first. Then use some of the other widgets in the &amp;quot;canvasarea&amp;quot; and show how the toolbutton(s) can work together with the widgets in the &amp;quot;canvasarea&amp;quot; to modify, change or create items or parameters in Synfig Studio.  &lt;br /&gt;
&lt;br /&gt;
===ADDING A TOOL BAR BUTTON===&lt;br /&gt;
To use a toolbar button in your panel add this section of code to the class and function. &lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.h====&lt;br /&gt;
====   CLASS: class Dock_BoringEdit : public Dockable====&lt;br /&gt;
 &lt;br /&gt;
 void on_add_pressed();&lt;br /&gt;
&lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.cpp====&lt;br /&gt;
====FUNCTION: dock_BoringEdit::Dock_BoringEdit()====&lt;br /&gt;
The button icon can be changed to any of the stock id icons. Here we have it set to &amp;quot;gtk-add&amp;quot;.&lt;br /&gt;
The link shows the GTK name, just use &amp;quot;gtk-about&amp;quot;, &amp;quot;gtk-bold&amp;quot;, &amp;quot;gtk-apply&amp;quot; in that fashion etc..&lt;br /&gt;
 http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/namespaceGtk_1_1Stock.html#bf965c1d305e2880ac77f830477bb282&lt;br /&gt;
&lt;br /&gt;
This function can be added as many times as you want. The widget will create a drop down box if widget(s) are larger than GUI allows.&lt;br /&gt;
&lt;br /&gt;
 add_button(&lt;br /&gt;
 		Gtk::StockID(&amp;quot;gtk-add&amp;quot;),&lt;br /&gt;
 		_(&amp;quot;Get Bline&amp;quot;)&lt;br /&gt;
 	)-&amp;gt;signal_clicked().connect(&lt;br /&gt;
 		sigc::mem_fun(&lt;br /&gt;
 			*this,&lt;br /&gt;
 			&amp;amp;Dock_BoringEdit::on_add_pressed&lt;br /&gt;
 		)&lt;br /&gt;
 	);&lt;br /&gt;
 &lt;br /&gt;
Then add this stub function &amp;quot;on_add_pressed&amp;quot; which will do noting except be a place holder for the signal of button(s).&lt;br /&gt;
&lt;br /&gt;
 void Dock_BoringEdit::on_add_pressed()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NOT FINISHED YET..==&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6839</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6839"/>
				<updated>2008-04-21T08:32:13Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted &lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_BoringEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This will be described in the next part of adding a panel.&lt;br /&gt;
&lt;br /&gt;
 http://www.synfig.org/Source:Adding_a_Panel-Part_II&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6838</id>
		<title>Dev:Adding a Panel - Part II</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=6838"/>
				<updated>2008-04-21T08:29:06Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: New page: == Adding Widgets ==  This example will show how to add widgets to the boring panel that was made in Part I.   http://www.synfig.org/index.php?title=Source:Adding_a_Panel-Part_I  Defined i...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This example will show how to add widgets to the boring panel that was made in Part I.&lt;br /&gt;
&lt;br /&gt;
 http://www.synfig.org/index.php?title=Source:Adding_a_Panel-Part_I&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;gtkmm dir&amp;gt;dockable.h file, The only widgets defined are the &amp;quot;toolbar&amp;quot; and &amp;quot;toolbarbutton&amp;quot; so I will show these first. Then use some of the other widgets in the &amp;quot;canvasarea&amp;quot; and show how the toolbutton(s) can work together with the widgets in the &amp;quot;canvasarea&amp;quot; to modify, change or create items or parameters in Synfig Studio.  &lt;br /&gt;
&lt;br /&gt;
===ADDING A TOOL BAR BUTTON===&lt;br /&gt;
To use a toolbar button in your panel add this section of code to the class and function. &lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.h====&lt;br /&gt;
====   CLASS: class Dock_BoringEdit : public Dockable====&lt;br /&gt;
 &lt;br /&gt;
 void on_add_pressed();&lt;br /&gt;
&lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.cpp====&lt;br /&gt;
====FUNCTION: dock_BoringEdit::Dock_BoringEdit()====&lt;br /&gt;
The button icon can be changed to any of the stock id icons. here we have it set to &amp;quot;gtk-add&amp;quot;.&lt;br /&gt;
The link shows the GTK name, just use &amp;quot;gtk-about&amp;quot;, &amp;quot;gtk-bold&amp;quot;, &amp;quot;gtk-apply&amp;quot; in that fashion etc..&lt;br /&gt;
 http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/namespaceGtk_1_1Stock.html#bf965c1d305e2880ac77f830477bb282&lt;br /&gt;
&lt;br /&gt;
This function can be added as many times as you want. The widget will create a drop down box if widget(s) are larger than GUI allows.&lt;br /&gt;
&lt;br /&gt;
 add_button(&lt;br /&gt;
 		Gtk::StockID(&amp;quot;gtk-add&amp;quot;),&lt;br /&gt;
 		_(&amp;quot;Get Bline&amp;quot;)&lt;br /&gt;
 	)-&amp;gt;signal_clicked().connect(&lt;br /&gt;
 		sigc::mem_fun(&lt;br /&gt;
 			*this,&lt;br /&gt;
 			&amp;amp;Dock_BoringEdit::on_add_pressed&lt;br /&gt;
 		)&lt;br /&gt;
 	);&lt;br /&gt;
 &lt;br /&gt;
Then add this stub function &amp;quot;on_add_pressed&amp;quot; which will do noting except be a place holder for the signal of button(s).&lt;br /&gt;
&lt;br /&gt;
 void Dock_BoringEdit::on_add_pressed()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NOT FINISHED YET..==&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6837</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6837"/>
				<updated>2008-04-21T01:59:56Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted &lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_BoringEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6836</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6836"/>
				<updated>2008-04-21T01:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted &lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_BoringEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6835</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6835"/>
				<updated>2008-04-21T01:54:26Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted, and section 2, &amp;quot;The Description&amp;quot; will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_BoringEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6834</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6834"/>
				<updated>2008-04-21T01:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted, and section 2, &amp;quot;The Description&amp;quot; will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_PalEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6833</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6833"/>
				<updated>2008-04-21T01:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted, and section 2, &amp;quot;The Description&amp;quot; will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_PalEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_3.jpg&amp;diff=6832</id>
		<title>File:Adding a panel I 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_3.jpg&amp;diff=6832"/>
				<updated>2008-04-21T01:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6831</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6831"/>
				<updated>2008-04-21T01:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: /* The Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted, and section 2, &amp;quot;The Description&amp;quot; will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_PalEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|100px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6830</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=6830"/>
				<updated>2008-04-21T01:25:56Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: New page: Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts addi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted, and section 2, &amp;quot;The Description&amp;quot; will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the modul and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_PalEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And we edit &amp;lt;gtkmm dir&amp;gt;/mod_boring/app.cpp.  Add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_2.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
[[Image:adding_a_panel_I_3.jpg|100px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
 This will be described in the next part of adding a panel.&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_2.jpg&amp;diff=6829</id>
		<title>File:Adding a panel I 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_2.jpg&amp;diff=6829"/>
				<updated>2008-04-21T01:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_1.jpg&amp;diff=6828</id>
		<title>File:Adding a panel I 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Adding_a_panel_I_1.jpg&amp;diff=6828"/>
				<updated>2008-04-21T01:22:40Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=People&amp;diff=6678</id>
		<title>People</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=People&amp;diff=6678"/>
				<updated>2008-04-08T23:53:47Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: /* Community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;!-- ALPHABTICAL ORDER PLEASEE!!! --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DOOGLUS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Dooglus2.jpg|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User: dooglus | dooglus]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
He's an alien, a legal alien, he's an Englishman in New York.  Or Czechoslovakia.  Or some such.  Dooglus is the resident chief programmer and greatest contributer to Synfig since its release to GPL (1500+ commits and going strong).  He favours Linux as an OS, but has been known to run Windows on occasion.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- DYLOXYN --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Diloxyn.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[http://synfig.org/FAQ#Why_doesn.27t_dyloxin_talk_on_the_Synfig_IRC_channel.3F Dyloxin]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
dyloxin is a bot that sits in the [[Communication|Synfig IRC channel]] and stores the [[Communication|IRC logs]], not a human. It has no commands, so you won't get any response out of it either.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- GENETE --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Genete-2.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Genete|Genete]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Open source enthusiast interested in animation and computer graphics in general. Always glad to help others and to learn new things. Favourite phrase: ''dooglus: guess what? ... it opens a new world!!!''. Spanish translator of synfig and synfigstudio, sparse icon designer and rare ocassional coder. Wrote some wiki tutorials. Ubuntu user. &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- ICARUS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Factor.gif|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:factor|Icarus Factor]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Tangents, green lines and ducks. Likes 2d and 3d animation, not to good at the 2d animation yet, but working on it. Debian GNU/Linux user  &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- KIBI --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:KiBi.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;KiBi&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- PABS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Pabs3.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:PaulWise|pabs]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Helping out with synfig since it was GPLed. Debian packager, sysadmin, occasional coder, wiki editor, not much of an artist.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- PIXELGEEK --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Pixelgeek-2.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:pxegeek|Pixelgeek]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
He's an alien, a legal alien, he's an Englishman in New York.  Or Oregon.  Or some such. Ask him questions about how Synfig works under Windows.  &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- RORE --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Avatar_rore.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:rore|Rore]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
She's not an alien, just a French person that hates wine (and love cheese). Better at doing still images than animations. Help a bit with the wiki. Debian user.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ulrikboden --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Magnifiedulrik.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Ulrik|Ulrikboden]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- YACO --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Yaco.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Yaco|Yaco]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
He never sleep. Legend told that he has a twin brother that works on Synfig in the night. He is guilty for making this wiki a nasty thing if you use low screen resolutions. GNU hacker and GNU user :-).&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- Yoyobuae --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:yoyobuae.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Yoyobuae|Yoyobuae]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
An occasional contributer with a couple of submitted patches here and there.  Still learning to handle himself with the code, but willing to answer any questions to the best of his knowledge. Also a novice artist, mainly interested dragons, birds and furry art in general.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- ZELGADIS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:zelgadis.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Zelgadis|Zelgadis]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Kidadult, freak and outsider. By nature. Have a dream to make full-length anime movie with open source software (guess which? ^_^). Likes do animation, roller-skating and paint graffiti.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- You! --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:none.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Your name here!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''You. Yes, you, my dear reader.''' If you contribute to the project, please join with us into making this possible. We do need your help.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Also semi-frequent visitors - [[User:Zelig|Zelig]],[[User:Atrus|Atrus]],[[User:Madsen|Madsen]], [[User:Bombe |Bombe]], TMM, Tokyo, Zipola, [[User:zotz|zotz]], [[User:Omry|Omry]], [[User:Riggzy|Riggzy]], AkHil.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software Credits ==&lt;br /&gt;
&lt;br /&gt;
=== Original developers ===&lt;br /&gt;
&lt;br /&gt;
*Robert B. Quattlebaum Jr (darco)&lt;br /&gt;
*Adrian Bentley&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&lt;br /&gt;
*Adrian Winchell (SnapSilverlight)&lt;br /&gt;
*Andreas Jochens&lt;br /&gt;
*Carlos López González (genete)&lt;br /&gt;
*Chris Moore (dooglus)&lt;br /&gt;
*Chris Norman (pixelgeek)&lt;br /&gt;
*Daniel Fort&lt;br /&gt;
*David Roden (Bombe)&lt;br /&gt;
*Dmitriy Pomerantsev (Atrus)&lt;br /&gt;
*Douglas Lau&lt;br /&gt;
*Gerald Young (Yoyobuae)&lt;br /&gt;
*IL'dar AKHmetgaleev (AkhIL)&lt;br /&gt;
*Luka Pravica&lt;br /&gt;
*Martin Michlmayr (tbm)&lt;br /&gt;
*Miguel Gea Milvaques (xerakko)&lt;br /&gt;
*Paul Wise (pabs)&lt;br /&gt;
*Ralf Corsepius&lt;br /&gt;
*Yue Shi Lai&lt;br /&gt;
&lt;br /&gt;
=== Translators ===&lt;br /&gt;
&lt;br /&gt;
*Catalan: Miguel Gea Milvaques (xerakko)&lt;br /&gt;
*Français: Aurore D (rore)&lt;br /&gt;
*Español: Carlos López González (genete)&lt;br /&gt;
&lt;br /&gt;
=== Artists ===&lt;br /&gt;
&lt;br /&gt;
*Chris Norman (pixelgeek)&lt;br /&gt;
*Carlos López González (genete)&lt;br /&gt;
*Aurore D (rore)&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=People&amp;diff=6522</id>
		<title>People</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=People&amp;diff=6522"/>
				<updated>2008-04-06T05:54:38Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If I've missed anyone - it's a wiki - you know what to do!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| http://www.museumca.org/satelite/images/pabs.jpg&lt;br /&gt;
| [[Image:Dooglus2.jpg]]&lt;br /&gt;
| [[Image:Genete.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:PaulWise | pabs3]]&lt;br /&gt;
| [[User: dooglus | dooglus]]&lt;br /&gt;
| [[User:Genete|Genete]]&lt;br /&gt;
|-&lt;br /&gt;
| http://home.comcast.net/~pxegeek/synfig/pxegeek.png&lt;br /&gt;
| [[Image:Avatar_rore.png]]&lt;br /&gt;
| &amp;lt;picture&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[User:pxegeek|PXEGeek aka Pixelgeek]]&lt;br /&gt;
| Rore&lt;br /&gt;
| KiBi&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Magnifiedulrik.png]]&lt;br /&gt;
| &amp;lt;Yaco's picture&amp;gt;&lt;br /&gt;
| [[Image:Factor.gif|alt Icarus Factor]]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Ulrik|Ulrikboden]]&lt;br /&gt;
| &amp;lt;Yaco&amp;gt;&lt;br /&gt;
| [[User:factor|icarus factor]]&lt;br /&gt;
|-&lt;br /&gt;
| http://openclipart.org/people/johnny_automatic/johnny_automatic_toy_robot.png&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ#Why_doesn.27t_dyloxin_talk_on_the_Synfig_IRC_channel.5D.3F |dyloxin]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also semi-frequent visitors - [[User:Zelig|Zelig]],[[User:Atrus|Atrus]],[[User:Madsen|Madsen]], [[User:Bombe |Bombe]], TMM, Tokyo, Zipola, [[User:zotz|zotz]], [[User:Omry|Omry]], [[User:Riggzy|Riggzy]]&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=People&amp;diff=6521</id>
		<title>People</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=People&amp;diff=6521"/>
				<updated>2008-04-06T05:29:47Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If I've missed anyone - it's a wiki - you know what to do!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| http://www.museumca.org/satelite/images/pabs.jpg&lt;br /&gt;
| [[Image:Dooglus2.jpg]]&lt;br /&gt;
| [[Image:Genete.gif]]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:PaulWise | pabs3]]&lt;br /&gt;
| [[User: dooglus | dooglus]]&lt;br /&gt;
| [[User:Genete|Genete]]&lt;br /&gt;
|-&lt;br /&gt;
| http://home.comcast.net/~pxegeek/synfig/pxegeek.png&lt;br /&gt;
| [[Image:Avatar_rore.png]]&lt;br /&gt;
| &amp;lt;picture&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[User:pxegeek|PXEGeek aka Pixelgeek]]&lt;br /&gt;
| Rore&lt;br /&gt;
| KiBi&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Magnifiedulrik.png]]&lt;br /&gt;
| &amp;lt;Yaco's picture&amp;gt;&lt;br /&gt;
| [[Image:Factor.gif|alt Icarus Factor]]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Ulrik|Ulrikboden]]&lt;br /&gt;
| &amp;lt;Yaco&amp;gt;&lt;br /&gt;
| &amp;lt;Factor&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| http://openclipart.org/people/johnny_automatic/johnny_automatic_toy_robot.png&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ#Why_doesn.27t_dyloxin_talk_on_the_Synfig_IRC_channel.5D.3F |dyloxin]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also semi-frequent visitors - [[User:Zelig|Zelig]],[[User:Atrus|Atrus]],[[User:Madsen|Madsen]], [[User:Bombe |Bombe]], TMM, Tokyo, Zipola, [[User:zotz|zotz]], [[User:Omry|Omry]], [[User:Riggzy|Riggzy]]&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Factor.gif&amp;diff=6520</id>
		<title>File:Factor.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Factor.gif&amp;diff=6520"/>
				<updated>2008-04-06T05:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Factor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Factor</name></author>	</entry>

	</feed>