<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://composer.telemidia.puc-rio.br/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://composer.telemidia.puc-rio.br/feed.php">
        <title> en:docs:tutorial</title>
        <description></description>
        <link>http://composer.telemidia.puc-rio.br/</link>
        <image rdf:resource="http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-05-19T13:39:28-03:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/getting_started_guide"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code_0.1.x"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run_multidevice"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.1.x"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.2.x"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_release_ncl_composer_from_source_code"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/index"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/ncl_composer_architecture"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico">
        <title></title>
        <link>http://composer.telemidia.puc-rio.br/</link>
        <url>http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/getting_started_guide">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>Getting Started with NCL Composer</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/getting_started_guide</link>
        <description>&lt;div class=&quot;notewarning&quot;&gt;This page is a draft!!
&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;getting_started_with_ncl_composer&quot;&gt;Getting Started with NCL Composer&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
This document presents a very fast introduction that allows you to start the development of interactive applications for digital TV using &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer.
&lt;/p&gt;

&lt;p&gt;
Here, we consider that you already have a &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer installation working. If not, please go to &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/download&quot; class=&quot;wikilink1&quot; title=&quot;en:download&quot;&gt;download&lt;/a&gt; page, get the latest version of &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer and install it.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;Getting Started with NCL Composer&quot; [46-425] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;first_steps&quot;&gt;First steps&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;First steps&quot; [426-449] --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;creating_a_new_project&quot;&gt;1. Creating a new project&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When you start &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer the following screen is presented to you. In order to create a new project, click &lt;em&gt;New Project&lt;/em&gt; button or go to &lt;em&gt;File→New Project&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
TODO: Printscreen.
&lt;/p&gt;

&lt;p&gt;
TODO: What? Where? How? When?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;1. Creating a new project&quot; [450-702] --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;what_adding_media_objects&quot;&gt;2. What? Adding media objects&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
After created a new project you will be presented to the various Views of &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer. Each view allows you to focus on a specific task while creating your application.
&lt;/p&gt;

&lt;p&gt;
For example, let&amp;#039;s start adding our media objects. For that you can go to &lt;em&gt;Structural View&lt;/em&gt; and click with right button on the canvas area and then &lt;em&gt;Insert→Media&lt;/em&gt;. You can also drag your media files from your file system and drop in the &lt;em&gt;Structural View&lt;/em&gt; drawing area.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;2. What? Adding media objects&quot; [703-1190] --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;where_creating_regions&quot;&gt;3. Where? Creating regions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
TODO: All
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;3. Where? Creating regions&quot; [1191-1238] --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;how_working_with_properties_or_descriptors&quot;&gt;4. How? Working with properties or descriptors&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
TODO: All
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;4. How? Working with properties or descriptors&quot; [1239-1306] --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;when_links&quot;&gt;5. When? Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
TODO: All
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;5. When? Links&quot; [1307-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/d/da71e3d186ef2d409d795fb8f1b0ef57.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to: build NCL Composer from source code</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_tobuild_ncl_composer_from_source_code&quot;&gt;How to: build NCL Composer from source code&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;noteclassic&quot;&gt;For previous versions (&lt;= 0.1.x) go to: &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_build_ncl_composer_from_source_code&quot;&gt; How to build NCL Composer from source code (&amp;lt;= 0.1.x)&lt;/a&gt; tutorial.

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to: build NCL Composer from source code&quot; [1-232] --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;requirements&quot;&gt;Requirements&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Git (&amp;gt;= 1.7.x) &lt;a href=&quot;http://git-scm.com/&quot; class=&quot;urlextern&quot; title=&quot;http://git-scm.com/&quot; rel=&quot;nofollow&quot;&gt;http://git-scm.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Qt (&amp;gt;=4.7.x) &lt;a href=&quot;http://qt.nokia.com/downloads/&quot; class=&quot;urlextern&quot; title=&quot;http://qt.nokia.com/downloads/&quot; rel=&quot;nofollow&quot;&gt;http://qt.nokia.com/downloads/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Requirements&quot; [233-343] --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;getting_source_code&quot;&gt;Getting Source Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;about_git_from_sourceforgenet&quot;&gt;About Git (from sourceforge.net)&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Git is a &lt;em&gt;Source Code Management&lt;/em&gt; (SCM) tool for software developers which supports collaborative development of software within a team, and the tracking of changes to software source code over time.
&lt;/p&gt;

&lt;p&gt;
Git is used by developers, and advanced users who need the very latest changes to the software (before releases occur). Software users generally do not need Git; typically they will download official file releases made available by the project instead.
&lt;/p&gt;

&lt;p&gt;
Developers should familiarize themselves with Git by reading the &lt;a href=&quot;http://git-scm.com/documentation&quot; class=&quot;urlextern&quot; title=&quot;http://git-scm.com/documentation&quot; rel=&quot;nofollow&quot;&gt;Git Documentation&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;ncl_composer_s_git_access&quot;&gt;NCL Composer&amp;#039;s Git access&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
From command line, you just need to execute the following to get the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer source code:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git clone http://git.telemidia.puc-rio.br/nclcomposer.git&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Getting Source Code&quot; [344-1194] --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;compiling_source_code&quot;&gt;Compiling Source Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
From command line, you just need to execute the following lines to compile the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ qmake
$ make install&lt;/pre&gt;
&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on Windows, you probably must change &lt;em&gt;&amp;#039;make&amp;#039;&lt;/em&gt; to: 
&lt;pre class=&quot;code&quot;&gt;$ mingw32-make&lt;/pre&gt;

&lt;p&gt;
and &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ mingw32-make install&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on Debian (or Ubuntu, or Linux Mint, etc.), you probably must change &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;pre class=&quot;code&quot;&gt;$ sudo make install&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on MAC, you probably must change &lt;em&gt;&amp;#039;qmake&amp;#039;&lt;/em&gt; to 
&lt;pre class=&quot;code&quot;&gt;$ qmake -spec macx-g++&lt;/pre&gt;

&lt;p&gt;
and &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Compiling Source Code&quot; [1195-1908] --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;compiling_with_remote_run_feature&quot;&gt;Compiling with &amp;quot;Remote Run&amp;quot; feature&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
By default, you will not compile &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer with “Remote Run” support. We do this in order to not include the &lt;a href=&quot;http://www.libssh2.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.libssh2.org&quot; rel=&quot;nofollow&quot;&gt;libssh2&lt;/a&gt; dependencies inside our source code. However, if you want to use that feature, you must to follow these steps, before compiling &lt;em&gt;composer-gui&lt;/em&gt; subproject:
&lt;/p&gt;

&lt;p&gt;
1. Get LIBSSH2 related libraries:
&lt;/p&gt;
&lt;div class=&quot;noteclassic&quot;&gt;On Ubuntu/Debian you can install these dependencies through:&lt;pre class=&quot;code&quot;&gt;$ sudo apt-get install libssh2-1-dev libgcrypt11-dev&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;On Windows you can download them from:
&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&quot; class=&quot;urlextern&quot; title=&quot;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&quot; rel=&quot;nofollow&quot;&gt;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
and uncompress that file inside &lt;em&gt;src/gui&lt;/em&gt; directory. you should finish with something like that (see the to libssh folder): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  + src
    + core
        ...
    + gui
      + data
      + deps
        + libssh2-1.3.0
      + images
      + src
      + translations
         ...
    + plugins
        ...&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;On Mac &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X you need first to install a software called &lt;strong&gt;port&lt;/strong&gt; (&lt;a href=&quot;http://www.macports.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.macports.org/&quot; rel=&quot;nofollow&quot;&gt;http://www.macports.org/&lt;/a&gt;) , which is basically a package management system that simplifies the installation of software on the Mac &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X. Then you can install the dependencies with the following command:
&lt;pre class=&quot;code&quot;&gt;$ sudo port install libssh2 libgcrypt&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;
2. Replace the qmake call above with: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  $ qmake RUNSSHON=true&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;Compiling with Remote Run feature&quot; [1909-3294] --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;testing&quot;&gt;Testing&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
In order to test the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer, you need to execute on:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Windows:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ C:\composer.exe&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Linux&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ /usr/local/bin/composer&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAC &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ open /Applications/Composer.app&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;Testing&quot; [3295-3534] --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;problems&quot;&gt;Problems ?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
If you have problems with any of the previous steps see the &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/faq&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:faq&quot;&gt;FAQ section&lt;/a&gt;, and if this does not resolve your problem, &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/contact&quot; class=&quot;wikilink1&quot; title=&quot;en:contact&quot;&gt;contact us&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;Problems ?&quot; [3535-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/0/06e7c9410145b91fc0324643d5b73d38.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code_0.1.x">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to: build NCL Composer from source code (</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code_0.1.x</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_tobuild_ncl_composer_from_source_code_01x&quot;&gt;How to: build NCL Composer from source code (&amp;lt;= 0.1.x)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;noteclassic&quot;&gt;For newer versions (&amp;gt;= 0.2.x) go to: &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code_0.2.x&quot; class=&quot;wikilink2&quot; title=&quot;en:docs:tutorial:how_to_build_ncl_composer_from_source_code_0.2.x&quot; rel=&quot;nofollow&quot;&gt; How to build NCL Composer from source code (&amp;gt;= 0.2.x)&lt;/a&gt; tutorial.

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to: build NCL Composer from source code (&lt;= 0.1.x)&quot; [1-247] --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;requirements&quot;&gt;Requirements&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Git (&amp;gt;= 1.7.x) &lt;a href=&quot;http://git-scm.com/&quot; class=&quot;urlextern&quot; title=&quot;http://git-scm.com/&quot; rel=&quot;nofollow&quot;&gt;http://git-scm.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Qt (&amp;gt;=4.7.x) &lt;a href=&quot;http://qt.nokia.com/downloads/&quot; class=&quot;urlextern&quot; title=&quot;http://qt.nokia.com/downloads/&quot; rel=&quot;nofollow&quot;&gt;http://qt.nokia.com/downloads/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Requirements&quot; [248-359] --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;getting_source_code&quot;&gt;Getting Source Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;about_git_from_sourceforgenet&quot;&gt;About Git (from sourceforge.net)&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Git is a &lt;em&gt;Source Code Management&lt;/em&gt; (SCM) tool for software developers which supports collaborative development of software within a team, and the tracking of changes to software source code over time.
&lt;/p&gt;

&lt;p&gt;
Git is used by developers, and advanced users who need the very latest changes to the software (before releases occur). Software users generally do not need Git; typically they will download official file releases made available by the project instead.
&lt;/p&gt;

&lt;p&gt;
Developers should familiarize themselves with Git by reading the &lt;a href=&quot;http://git-scm.com/documentation&quot; class=&quot;urlextern&quot; title=&quot;http://git-scm.com/documentation&quot; rel=&quot;nofollow&quot;&gt;Git Documentation&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;ncl_composer_s_git_access&quot;&gt;NCL Composer&amp;#039;s Git access&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
From command line, you just need to execute the following to get the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer source code:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git clone http://git.telemidia.puc-rio.br/composer-core.git
$ git clone http://git.telemidia.puc-rio.br/composer-gui.git
$ git clone http://git.telemidia.puc-rio.br/composer-plugins.git&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Getting Source Code&quot; [360-1338] --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;compiling_source_code&quot;&gt;Compiling Source Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
From command line, you just need to execute the following lines, for each directory created above, to compile the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ qmake
$ make
$ make install&lt;/pre&gt;
&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on Windows, you probably must change &lt;em&gt;&amp;#039;make&amp;#039;&lt;/em&gt; to: 
&lt;pre class=&quot;code&quot;&gt;$ mingw32-make&lt;/pre&gt;

&lt;p&gt;
and &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ mingw32-make install&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on Debian (or Ubuntu, or Linux Mint, etc.), you probably must change &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;pre class=&quot;code&quot;&gt;$ sudo make install&lt;/pre&gt;

&lt;p&gt;
Additionally, in some new Ubuntu and Mint versions, you probably must change &lt;em&gt;&amp;#039;qmake&amp;#039;&lt;/em&gt; to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ qmake-qt4&lt;/pre&gt;

&lt;p&gt;
This last one, is because &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer uses Qt 4.x, and not the new version 5.x, that is not supported in many distro yet.
&lt;/p&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;If you are compiling on MAC, you probably must change &lt;em&gt;&amp;#039;qmake&amp;#039;&lt;/em&gt; to 
&lt;pre class=&quot;code&quot;&gt;$ qmake -spec macx-g++&lt;/pre&gt;

&lt;p&gt;
and &lt;em&gt;&amp;#039;make install&amp;#039;&lt;/em&gt; to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Compiling Source Code&quot; [1339-2337] --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;compiling_with_remote_run_feature&quot;&gt;Compiling with &amp;quot;Remote Run&amp;quot; feature&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
By default, you will not compile &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer with “Remote Run” support. We do this in order to not include the &lt;a href=&quot;http://www.libssh2.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.libssh2.org&quot; rel=&quot;nofollow&quot;&gt;libssh2&lt;/a&gt; dependencies inside our source code. However, if you want to use that feature, you must to follow these steps, before compiling &lt;em&gt;composer-gui&lt;/em&gt; subproject:
&lt;/p&gt;

&lt;p&gt;
1. Get LIBSSH2 related libraries:
&lt;/p&gt;
&lt;div class=&quot;noteclassic&quot;&gt;On Ubuntu/Debian you can install these dependencies through:&lt;pre class=&quot;code&quot;&gt;$ sudo apt-get install libssh2-1-dev libgcrypt11-dev&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;On Windows you can download them from:
&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&quot; class=&quot;urlextern&quot; title=&quot;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&quot; rel=&quot;nofollow&quot;&gt;http://composer.telemidia.puc-rio.br/downloads/deps/nclcomposer-gui-0.1.1-deps.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
and uncompress that file inside &lt;em&gt;composer-gui&lt;/em&gt; directory. you will have something like that (attetion to libssh folder): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  + composer-core
      ...
  + composer-gui
    + data
    + deps
      + libssh2-1.3.0
    + images
    + include
    + translations
    ...
  + composer-plugins
      ...&lt;/pre&gt;

&lt;/div&gt;&lt;div class=&quot;noteclassic&quot;&gt;On Mac &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X you need first to install a software called &lt;strong&gt;port&lt;/strong&gt; (&lt;a href=&quot;http://www.macports.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.macports.org/&quot; rel=&quot;nofollow&quot;&gt;http://www.macports.org/&lt;/a&gt;) , which is basically a package management system that simplifies the installation of software on the Mac &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X. Then you can install the dependencies with the following command:
&lt;pre class=&quot;code&quot;&gt;$ sudo port install libssh2 libgcrypt&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;
2. Replace the qmake call above with: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  $ qmake RUNSSHON=true&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;Compiling with Remote Run feature&quot; [2338-3716] --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;testing&quot;&gt;Testing&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
In order to test the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer, you need to execute on:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Windows:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ C:\composer.exe&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Linux&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ /usr/local/bin/composer&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAC &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; X&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ open /Applications/Composer.app&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;Testing&quot; [3717-3956] --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;problems&quot;&gt;Problems ?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
If you have problems with any of the previous steps see the &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/faq&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:faq&quot;&gt;FAQ section&lt;/a&gt;, and if this does not resolve your problem, &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/contact&quot; class=&quot;wikilink1&quot; title=&quot;en:contact&quot;&gt;contact us&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;Problems ?&quot; [3957-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/a/abf9a0ed2859ae4bfd1540d2802b21fd.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to configure NCL Composer to run an NCL Application</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_to_configure_ncl_composer_to_run_an_ncl_application&quot;&gt;How to configure NCL Composer to run an NCL Application&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
There are two ways of running your &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; application from &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From a local Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; player (e.g. Ginga4Windows); or&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From a Virtual Machine (e.g. &lt;a href=&quot;http://www.softwarepublico.gov.br&quot; class=&quot;urlextern&quot; title=&quot;http://www.softwarepublico.gov.br&quot; rel=&quot;nofollow&quot;&gt;Ginga Virtual Set-top Box&lt;/a&gt;);&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to configure NCL Composer to run an NCL Application&quot; [1-299] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;running_from_local_ginga-ncl&quot;&gt;Running from local Ginga-NCL&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To configure &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer to run the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; application from the loca Ginga you must select the Menu: &lt;em&gt;Edit→Preferences→Run Configuration&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
The following screen will be presented:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/detail.php/tutorial/running_ncl_app_local.png?id=en%3Adocs%3Atutorial%3Ahow_to_configure_run&quot; class=&quot;media&quot; title=&quot;tutorial:running_ncl_app_local.png&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/tutorial/running_ncl_app_local.png?w=600&amp;amp;tok=abe6e1&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
In this screen, mark the option &lt;em&gt;Local: Ginga Player&lt;/em&gt; and fill the text box &lt;em&gt;Command&lt;/em&gt; with the path to the Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; binary.
&lt;/p&gt;

&lt;p&gt;
The text box &lt;em&gt;Arguments&lt;/em&gt; can be filled with parameters to the Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; binary. You mus put each parameter in a different line.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Running from local Ginga-NCL&quot; [300-829] --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;running_from_ginga_virtual_set-top_box&quot;&gt;Running from Ginga Virtual Set-top Box&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To run your application in the Ginga Virtual Set-top Box choose the option: &lt;em&gt;Remote: Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Virtual Set-top Box&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/detail.php/tutorial/running_ncl_app_remote.png?id=en%3Adocs%3Atutorial%3Ahow_to_configure_run&quot; class=&quot;media&quot; title=&quot;tutorial:running_ncl_app_remote.png&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/tutorial/running_ncl_app_remote.png?w=600&amp;amp;tok=163f1b&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Usually, the only parameter to be changed is the IP address of the virtual machine. We suggest you do not change the other parameters, unless you know exactly what you are doing
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Running from Ginga Virtual Set-top Box&quot; [830-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/c/ccb6a3e52afae74bd6493ca154310ee8.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run_multidevice">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to Run Applications on Multiple Devices</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run_multidevice</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_to_run_applications_on_multiple_devices&quot;&gt;How to Run Applications on Multiple Devices&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; provides support for multimedia applications on multiple devices.&lt;br/&gt;

Using &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer you can create and play applications that use secondary devices.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to Run Applications on Multiple Devices&quot; [1-222] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;creating&quot;&gt;Creating&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To play a media on a secondary device you simply put it in a region inside a regionBase with a specified secondary class.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/systemscreen.jpg&quot; class=&quot;media&quot; title=&quot;en:doc:tutorial:systemscreen.jpg&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/systemscreen.jpg?w=600&amp;amp;tok=bafdcd&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Creating&quot; [223-420] --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;playing&quot;&gt;Playing&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Clicking the small arrow near the &lt;em&gt;Run &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Project&lt;/em&gt; button you can choose to open instances of Ginga acting as either a secondary active device or a secondary passive device waiting for the primary device.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/runmultidevice.jpg&quot; class=&quot;media&quot; title=&quot;en:doc:tutorial:runmultidevice.jpg&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/runmultidevice.jpg?w=600&amp;amp;tok=650782&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
After choosing &lt;em&gt;Passive&lt;/em&gt; or &lt;em&gt;Active&lt;/em&gt; some extra information will be asked (like the number of secondary devices) . After pressing Ok the window(s) representing the secondary devices will appear and wait for content.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/captura_de_tela_de_2015-12-23_14_29_06.png&quot; class=&quot;media&quot; title=&quot;en:doc:tutorial:captura_de_tela_de_2015-12-23_14_29_06.png&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/captura_de_tela_de_2015-12-23_14_29_06.png?w=200&amp;amp;tok=537213&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Then you can click &lt;em&gt;Run &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Project&lt;/em&gt;  to execute and the content for secondary devices will be visible when the application playback demands it.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/runningmulti.jpg&quot; class=&quot;media&quot; title=&quot;en:doc:tutorial:runningmulti.jpg&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/runningmulti.jpg?w=600&amp;amp;tok=c94e15&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Playing&quot; [421-1205] --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;extra_options&quot;&gt;Extra options&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In &lt;em&gt;Edit→Preferences→Run Configuration&lt;/em&gt; it is possible to add or change parameters to the Ginga-&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; binary in the &lt;em&gt;Arguments&lt;/em&gt; box.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/preferences.png&quot; class=&quot;media&quot; title=&quot;en:doc:tutorial:preferences.png&quot;&gt;&lt;img src=&quot;http://composer.telemidia.puc-rio.br/lib/exe/fetch.php/en/doc/tutorial/preferences.png?w=600&amp;amp;tok=923019&quot; class=&quot;mediaright&quot; align=&quot;right&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Extra options&quot; [1206-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/d/d2e9d76114afed8acfe03dd224320d19.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.1.x">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to: Create an NCL Composer Plugin</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.1.x</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_tocreate_an_ncl_composer_plugin&quot;&gt;How to: Create an NCL Composer Plugin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;notewarning&quot;&gt;This page is a draft
&lt;/div&gt;&lt;div class=&quot;noteimportant&quot;&gt;This tutorial assumes you are familiar with C/C++ programming languages and have basic knowledge about Qt framework (mainly the &lt;a href=&quot;http://doc.qt.nokia.com/4.7/qmake-tutorial.html&quot; class=&quot;urlextern&quot; title=&quot;http://doc.qt.nokia.com/4.7/qmake-tutorial.html&quot; rel=&quot;nofollow&quot;&gt;qmake build system&lt;/a&gt; and &lt;a href=&quot;http://doc.qt.nokia.com/4.7/signalsandslots.html&quot; class=&quot;urlextern&quot; title=&quot;http://doc.qt.nokia.com/4.7/signalsandslots.html&quot; rel=&quot;nofollow&quot;&gt;signals &amp;amp; slots mechanism&lt;/a&gt;).

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to: Create an NCL Composer Plugin&quot; [1-404] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;what_is_a_plugin&quot;&gt;What is a Plugin?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
A plugin is a piece of software distributed separated from other software (the main or host) aiming to extend its functionalities. In order to allow extensions and customizations &lt;em&gt;&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer&lt;/em&gt; architecture is based on plugins.
&lt;/p&gt;

&lt;p&gt;
A common way to extend the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer functionalities is creating new Views to documents being developed. A View is a plugin that brings out a representation of this document (e.g. showing its entities in a tree, or showing how this document is represented in a timeline, etc.).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;What is a Plugin?&quot; [405-947] --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;ncl_composer_plugins&quot;&gt;NCL Composer Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
An &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer plugins is based on two main C++ interfaces that must to be implemented: &lt;em&gt;IPluginFactory&lt;/em&gt; and &lt;em&gt;IPlugin&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;ipluginfactory&quot;&gt;IPluginFactory&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
The IPluginFactory is responsible to create new instances of IPlugin&amp;#039;s, and keep global informations about the plugin, like its vendor, version, etc. Every time a document is open, the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer will try to create a new instance of the plugin calling IPluginFactory&amp;#039;s method. But if your plugin is a singleton, you can always returns the same instance.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;iplugin&quot;&gt;IPlugin&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
The IPlugin is the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer plugin itself. When a document is open by &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer, a new instance of the plugin will be required by &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer. The IPlugin is linked with the Document instance and will be called every time this document is changed. Likewise, the IPlugin is also able to require changes in the Document.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;NCL Composer Plugins&quot; [948-1826] --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;an_exampledebug_plugin&quot;&gt;An example: Debug Plugin&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As a simple example, let&amp;#039;s create a Debug Plugin. This plugin will print all the messages that it receives from &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer core.
&lt;/p&gt;

&lt;p&gt;
First of all, let&amp;#039;s create our DebugConsolePlugin.h:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifndef DEBUGCONSOLEPLUGIN_H&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DEBUGCONSOLEPLUGIN_H&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;QObject&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;core/extensions/IPlugin.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;extension&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DebugConsolePlugin &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; IPlugin
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        Q_OBJECT
    &lt;span class=&quot;kw2&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
        QWidget &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;window&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;explicit&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        ~DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; getWidget&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; slots&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityAdded&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityChanged&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityRemoved&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, QString entityID&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; errorMessage&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString error&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#endif // DEBUGCONSOLEPLUGIN_H&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
And the DebugConsole.cpp:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsolePlugin.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;DebugConsolePlugin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;~DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;getWidget&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/*This tell to NCL Composer that our plugin doesn't have a GUI*/&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityAdded&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;entity&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;PLUGIN (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) added the Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
                   entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getType&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; - &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getUniqueId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;errorMessage&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString error&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ERROR:&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; error&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityChanged&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; entity&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;PLUGIN (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) changed the Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
                    entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getType&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; - &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getUniqueId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityRemoved&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString ID, QString entityID&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;PLUGIN (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) removed Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
                   entityID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
In order to &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer know how to create new instances of our DebugPlugin, we have to provide a Factory class:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifndef DEBUGCONSOLE_H&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DEBUGCONSOLE_H&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsole_global.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsolePlugin.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;core/extensions/IPluginFactory.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;extension&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DebugConsoleFactory &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; QObject,
                            &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; IPluginFactory
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    Q_OBJECT
    Q_INTERFACES&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPluginFactory&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
         DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         ~DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         IPlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; createPluginInstance&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; releasePluginInstance&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;coMULTI&quot;&gt;/* Global information about DebugPlugin. */&lt;/span&gt;
         QString id&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;br.puc-rio.telemidia.DebugPlugin&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         QString name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Plugin&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
         QString version&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString compatVersion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString vendor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Telemidia Lab&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString copyright&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Telemidia/PUC-Rio&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString description&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Console View prints all the messages send by NCL Composer to plugins.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString url&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://composer.telemidia.puc-rio.br/debug&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
         QString category&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsoleFactory.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; debug &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;DebugConsoleFactory&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;~DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
IPlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;createPluginInstance&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;new&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;releasePluginInstance&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;plugin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    DebugConsolePlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; qobject_cast&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;DebugConsolePlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;plugin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;debug&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;delete&lt;/span&gt; debug&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// This is very important, and will allow to Qt framework recognize your&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// plugin&lt;/span&gt;
Q_EXPORT_PLUGIN2&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DebugConsole,DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//end namespace&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;An example: Debug Plugin&quot; [1827-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/7/702bd6db2920ab49835e0d344c511d64.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.2.x">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>How to: Create an NCL Composer Plugin</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.2.x</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;how_tocreate_an_ncl_composer_plugin&quot;&gt;How to: Create an NCL Composer Plugin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;notewarning&quot;&gt;This page is a draft
&lt;/div&gt;&lt;div class=&quot;notewarning&quot;&gt;This page describe &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer plug-in &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; since version 0.2.x. If you are looking this tutorial for a previous version, please look at &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.1.x&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_create_a_plugin_to_ncl_composer_0.1.x&quot;&gt;this page&lt;/a&gt;.
&lt;/div&gt;&lt;div class=&quot;noteimportant&quot;&gt;This tutorial assumes you are familiar with C/C++ programming languages and have basic knowledge about Qt framework (mainly the &lt;a href=&quot;http://doc.qt.io/qt-4.8/qmake-tutorial.html&quot; class=&quot;urlextern&quot; title=&quot;http://doc.qt.io/qt-4.8/qmake-tutorial.html&quot; rel=&quot;nofollow&quot;&gt;qmake build system&lt;/a&gt; and &lt;a href=&quot;http://doc.qt.io/qt-4.8/signalsandslots.html&quot; class=&quot;urlextern&quot; title=&quot;http://doc.qt.io/qt-4.8/signalsandslots.html&quot; rel=&quot;nofollow&quot;&gt;signals &amp;amp; slots mechanism&lt;/a&gt;).

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;How to: Create an NCL Composer Plugin&quot; [1-617] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;what_is_a_plugin&quot;&gt;What is a Plugin?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
A plugin is a piece of software distributed separated from other software (the main or host) aiming to extend its functionalities. In order to allow extensions and customizations &lt;em&gt;&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer&lt;/em&gt; architecture is based on plugins.
&lt;/p&gt;

&lt;p&gt;
A common way to extend the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer functionalities is creating new Views to documents being developed. A View is a plugin that brings out a representation of this document (e.g. showing its entities in a tree, or showing how this document is represented in a timeline, etc.).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;What is a Plugin?&quot; [618-1160] --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;ncl_composer_plugins&quot;&gt;NCL Composer Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Since version 0.2.x &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer plugins are based on Qt5 plug-in system. A plug-in is composed of one C++ interface (IPlug-in) implementation and a .json file that describe this plug-in.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;NCL Composer Plugins&quot; [1161-1382] --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;an_exampledebug_plugin&quot;&gt;An example: Debug Plugin&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As a simple example, let&amp;#039;s create a Debug Plugin. This plugin will print all the messages that it receives from &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer core.
&lt;/p&gt;

&lt;p&gt;
First of all, let&amp;#039;s create our DebugConsolePlugin.h:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifndef DEBUGCONSOLEPLUGIN_H&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DEBUGCONSOLEPLUGIN_H&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;QObject&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;core/extensions/IPlugin.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;extension&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DebugConsolePlugin &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; IPlugin
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  Q_OBJECT
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
  QWidget &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;window&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;explicit&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  ~DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; getWidget&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; slots&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityAdded&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityChanged&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; onEntityRemoved&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, QString entityID&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; errorMessage&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString error&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#endif // DEBUGCONSOLEPLUGIN_H&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
And the DebugConsole.cpp:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsolePlugin.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;DebugConsolePlugin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;~DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEBUG MESSAGE:IT STARTED&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;getWidget&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*No window to return,
  This tells to NCL Composer that our plugin doesn't have a GUI*/&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityAdded&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;entity&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEBUG MESSAGE:PLUGIN (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; pluginID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) added the Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
      entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getType&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; - &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getUniqueId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;errorMessage&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString error&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEBUG MESSAGE:ERROR - &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; error&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityChanged&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, Entity &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; entity&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEBUG MESSAGE: PLUGIN (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; pluginID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) changed the Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
      entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getType&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; - &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; entity&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;getUniqueId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;onEntityRemoved&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;QString pluginID, QString entityID&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  QString line &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEBUG MESSAGE: (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; pluginID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;) removed Entity (&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;
      entityID &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  qDebug&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; line &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
In order to &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer know how to create new instances of our DebugPlugin, we have to provide a Factory class: 
a DebugConsoleFactory.h
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifndef DEBUGCONSOLE_H&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DEBUGCONSOLE_H&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsole_global.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsolePlugin.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;core/extensions/IPluginFactory.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;extension&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DebugConsoleFactory &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; QObject,
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; IPluginFactory
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  Q_OBJECT
  Q_INTERFACES&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPluginFactory&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#if QT_VERSION &amp;gt;= 0x050000&lt;/span&gt;
  Q_PLUGIN_METADATA&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IID IPluginFactory_iid &lt;span class=&quot;kw4&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DebugConsole.json&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
  DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  ~DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  IPlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; createPluginInstance&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; releasePluginInstance&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  QList&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;LanguageType&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; getSupportedLanguages&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  QString id&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  QIcon icon&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; getPreferencePageWidget&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#if QT_VERSION &amp;lt; 0x050000&lt;/span&gt;
  QString name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; tr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Console&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString version&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; NCLCOMPOSER_PLUGINS_VERSION&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString compatVersion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString vendor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Telemidia Lab&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString copyright&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Telemidia/PUC-Rio&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString license&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LGPL&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString description&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; tr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Console View prints all the &amp;quot;&lt;/span&gt;
                                   &lt;span class=&quot;st0&quot;&gt;&amp;quot; messages send by composer-core to plugins.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString url&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://composer.telemidia.puc-rio.br/debug&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  QString category&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; tr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;General&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif // DEBUGCONSOLE_H&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and its DebugConsoleFactory.cpp
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;DebugConsoleFactory.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;DebugConsoleFactory&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;~DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//Do nothing&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
IPlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;createPluginInstance&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;new&lt;/span&gt; DebugConsolePlugin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;releasePluginInstance&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IPlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;plugin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  DebugConsolePlugin &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; qobject_cast&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;DebugConsolePlugin&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;plugin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;debug&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;delete&lt;/span&gt; debug&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QList&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;LanguageType&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;getSupportedLanguages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  QList&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;LanguageType&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; lTypes&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  lTypes.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;NCL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lTypes&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QString DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;br.puc-rio.telemidia.DebugConsole&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QIcon DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;icon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; QIcon&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;:/images/icon.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
QWidget&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; DebugConsoleFactory&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;getPreferencePageWidget&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#if QT_VERSION &amp;lt; 0x050000&lt;/span&gt;
Q_EXPORT_PLUGIN2&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DebugConsole,DebugConsoleFactory&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
the DebugConsole_global.h used by the factory file:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifndef DEBUGCONSOLE_GLOBAL_H&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DEBUGCONSOLE_GLOBAL_H&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;QtCore/qglobal.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#if defined(DEBUGCONSOLE_LIBRARY)&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#  define DEBUGCONSOLESHARED_EXPORT Q_DECL_EXPORT&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#else&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#  define DEBUGCONSOLESHARED_EXPORT Q_DECL_IMPORT&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#endif // DEBUGCONSOLE_GLOBAL_H&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Additionally, you will also need to define the &lt;em&gt;debugplugin.json&lt;/em&gt; file describing your plug-in:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Console Plug-in&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;version&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0.2.0&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;compatVersion&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0.2.0&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;vendor&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TeleMidia Lab&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;description&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug Console View prints all the messages sent by NCL Composer to plugins.&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;url&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://composer.telemidia.puc-rio.br/plugin/debug&amp;quot;&lt;/span&gt;,
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;category&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Debug&amp;quot;&lt;/span&gt;  
  &lt;span class=&quot;st0&quot;&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;An example: Debug Plugin&quot; [1383-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/4/49ea8c0433ecbb318d2a05cd0501ff91.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_release_ncl_composer_from_source_code">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>Check List for Release NCL Composer</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_release_ncl_composer_from_source_code</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;check_list_for_release_ncl_composer&quot;&gt;Check List for Release NCL Composer&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Change version inside .pro files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Update translations&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Check update message id&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tag source&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Release source&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Release Win32 version (zip)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Release Win32 version (Installer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Release Linux version (deb)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Release MacOS version (dmg)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Update download page (en)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Update download page (pt-br)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Create a new blog post (Blog)&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/5/599910550b4dcd54be926decf2f38165.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/index">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>Tutorials</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/index</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;tutorials&quot;&gt;Tutorials&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;Tutorials&quot; [1-25] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;for_users&quot;&gt;For Users&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/news/ncl_composer_0.1.1_intro_video&quot; class=&quot;wikilink1&quot; title=&quot;en:news:ncl_composer_0.1.1_intro_video&quot;&gt;An introductory video on how to develop an applications with NCL Composer&lt;/a&gt; (portuguese only)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/contributing&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:contributing&quot;&gt;How to contribute to NCL Composer&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_configure_run&quot;&gt;How to configure NCL Composer to run your application&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_configure_run_multidevice&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_configure_run_multidevice&quot;&gt;How to run NCL applications on multiple devices&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;For Users&quot; [26-435] --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;for_developers&quot;&gt;For Developers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/contributing&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:contributing&quot;&gt;How to contribute to NCL Composer&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/ncl_composer_architecture&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:ncl_composer_architecture&quot;&gt;NCL Composer Architecture&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_build_ncl_composer_from_source_code&quot;&gt;How to build NCL Composer from source code&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/project_file&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:project_file&quot;&gt;Project File Specification (.cpr)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.1.x&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_create_a_plugin_to_ncl_composer_0.1.x&quot;&gt;How to create a Plugin to NCL Composer&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/submitting_patches&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:submitting_patches&quot;&gt;How to submit a PATCH to NCL Composer&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/tutorial/how_to_translate_an_ncl_composer_plugin&quot; class=&quot;wikilink2&quot; title=&quot;tutorial:how_to_translate_an_ncl_composer_plugin&quot; rel=&quot;nofollow&quot;&gt;How to translate an NCL Composer Plugin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_extend_through_script_javascript_python_lua_etc_languages&quot; class=&quot;wikilink2&quot; title=&quot;en:docs:tutorial:how_to_extend_through_script_javascript_python_lua_etc_languages&quot; rel=&quot;nofollow&quot;&gt;How to extend through Script (Javascript, Python, Lua, etc) languages&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;For Developers&quot; [436-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/9/9963fa4be1342b7d8eaf04f2c112e2ea.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/ncl_composer_architecture">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:18-03:00</dc:date>
        <title>NCL Composer Architecture Overview</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/ncl_composer_architecture</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ncl_composer_architecture_overview&quot;&gt;NCL Composer Architecture Overview&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;noteclassic&quot;&gt;A complete description of &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer architecture can be found in the &lt;a href=&quot;http://link.springer.com/article/10.1007/s11042-012-1216-8/fulltext.html&quot; class=&quot;urlextern&quot; title=&quot;http://link.springer.com/article/10.1007/s11042-012-1216-8/fulltext.html&quot; rel=&quot;nofollow&quot;&gt;MTAP paper&lt;/a&gt; below. 
&lt;/div&gt;
&lt;p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;http://link.springer.com/article/10.1007/s11042-012-1216-8/fulltext.html&quot;&gt;&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/f/fa7415d73aaa945815fbb080ffea1889.xhtml used --&gt;
</description>
    </item>
</rdf:RDF>
