From 6afeb93e67737cc01f7bc57b111b730552061c3c Mon Sep 17 00:00:00 2001
From: Renaud Le Gac <legac@cppm.in2p3.fr>
Date: Fri, 17 Apr 2015 15:49:51 +0200
Subject: [PATCH] Add hyperlink to the Ext JS documentation.

---
 docs/api/extjs_links.txt     | 104 +++++++++++++++++++
 docs/api/user_interface.rst  |   2 +
 modules/plugin_dbui/extjs.py | 188 +++++++++++++++++++++++++++++------
 3 files changed, 261 insertions(+), 33 deletions(-)
 create mode 100644 docs/api/extjs_links.txt

diff --git a/docs/api/extjs_links.txt b/docs/api/extjs_links.txt
new file mode 100644
index 00000000..46f2d348
--- /dev/null
+++ b/docs/api/extjs_links.txt
@@ -0,0 +1,104 @@
+..
+    Links to the Ext JS classes
+
+
+.. _ExtJS: http://docs-origin.sencha.com/extjs/4.2.1/#!/api
+
+.. _Ext.data.ArrayStore:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.data.ArrayStore
+
+.. _Ext.form.field.Checkbox:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Checkbox
+
+.. _App.form.field.CombBox:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.form.field.CombBox
+
+.. _App.data.DirectStore:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.data.DirectStore
+
+.. _Ext.form.field.Field:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Field
+
+.. _App.form.field.AceEditor:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.form.field.AceEditor
+
+.. _Ext.form.FieldContainer:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.FieldContainer
+
+.. _Ext.form.field.Date:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Date
+
+.. _App.form.field.Dict:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.form.field.Dict
+
+.. _App.form.field.List:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.form.field.List
+
+.. _Ext.form.field.Number:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Number
+
+.. _Ext.form.FieldSet:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.FieldSet
+
+.. _Ext.form.field.Text:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Text
+
+.. _Ext.form.field.TextArea:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.TextArea
+
+.. _Ext.form.field.Time:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Time
+
+.. _App.form.Panel:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.form.Panel
+
+.. _Ext.grid.Column:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.grid.Column
+
+.. _Ext.grid.ColumnModel:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.grid.ColumnModel
+
+.. _App.grid.Filter:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.grid.Filter
+
+.. _App.grid.Panel:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.grid.Panel
+
+.. _Ext.grid.Panel:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.grid.Panel
+
+.. _Ext.grid.column.RowNumberer:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.grid.column.RowNumberer
+
+.. _Ext.grid.TemplateColumn:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.grid.TemplateColumn
+
+.. _App.panel.GridWithFilter:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.panel.GridWithFilter
+
+.. _Ext.data.JsonStore:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.data.JsonStore
+
+.. _Ext.data.Model:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.data.Model
+
+.. _Ext.panel.Panel:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.panel.Panel
+
+.. _App.panel.WithUrlSelector:
+   https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.panel.WithUrlSelector
+
+.. _Ext.data.Store:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store
+
+.. _Ext.tab.Panel:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.tab.Panel
+
+.. _App.container.Viewport:
+    https://marprod.in2p3.fr/plugin_dbui_book/static/plugin_dbui/docs/jsduck/index.html#!/api/App.container.Viewport
+
+.. _Ext.Window:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.Window
+
+.. _Ext.data.XmlStore:
+   http://docs-origin.sencha.com/extjs/4.2.1/#!/api/Ext.data.XmlStore
diff --git a/docs/api/user_interface.rst b/docs/api/user_interface.rst
index a6051430..6bcdc28a 100644
--- a/docs/api/user_interface.rst
+++ b/docs/api/user_interface.rst
@@ -98,6 +98,8 @@ Convert database fields to widgets
 Ext JS widget mappings
 ^^^^^^^^^^^^^^^^^^^^^^
 
+.. include:: extjs_links.txt
+
 .. currentmodule:: plugin_dbui.extjs
 
 .. autosummary::
diff --git a/modules/plugin_dbui/extjs.py b/modules/plugin_dbui/extjs.py
index 54db6b3d..572842d4 100644
--- a/modules/plugin_dbui/extjs.py
+++ b/modules/plugin_dbui/extjs.py
@@ -78,71 +78,121 @@ class Base(Storage):
 
 
 class ArrayStore(Base):
-    """Configurator for the ``Ext.data.ArrayStore``."""
+    """Configurator for the `Ext.data.ArrayStore`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'arraystore'
 
 
 class CheckBox(Base):
-    """Configurator for ``Ext.form.field.Checkbox``."""
+    """Configurator for `Ext.form.field.Checkbox`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'checkbox'
 
 
 class ComboBox(Base):
-    """Configurator for ``App.form.field.CombBox``."""
+    """Configurator for `App.form.field.CombBox`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xcombobox'
 
 
 class DirectStore(Base):
-    """Configurator for ``App.data.DirectStore``."""
+    """Configurator for `App.data.DirectStore`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xdirectstore'
 
 
 class Field(Base):
-    """Configurator for ``Ext.form.field.Field``."""
+    """Configurator for `Ext.form.field.Field`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'field'
 
 
 class FieldAceEditor(Base):
-    """Configurator for the ``App.form.field.AceEditor``."""
+    """Configurator for `App.form.field.AceEditor`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xaceeditorfield'
 
 
 class FieldContainer(Base):
-    """Configurator for ``Ext.form.FieldContainer``."""
+    """Configurator for `Ext.form.FieldContainer`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'fieldcontainer'
 
 
 class FieldDate(Base):
-    """Configurator for ``Ext.form.field.Date``."""
+    """Configurator for `Ext.form.field.Date`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'datefield'
 
 
 class FieldDict(Base):
-    """Configurator for ``App.form.field.Dict``."""
+    """Configurator for `App.form.field.Dict`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xdictfield'
 
 
 class FieldList(Base):
-    """Configurator for ``App.form.field.List``."""
+    """Configurator for `App.form.field.List`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xlistfield'
 
 
 class FieldNumber(Base):
-    """Configurator for ``Ext.form.field.Number``."""
+    """Configurator for `Ext.form.field.Number`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'numberfield'
 
 
 class FieldSet(Base):
-    """Configurator for ``Ext.form.FieldSet``."""
+    """Configurator for `Ext.form.FieldSet`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'fieldset'
 
 
 class FieldText(Base):
-    """Configurator for ``Ext.form.field.Text``.
+    """Configurator for `Ext.form.field.Text`_.
 
     Note:
         Regular expression for the validation can be written as a string.
 
+    .. include:: ../../../docs/api/extjs_links.txt
+
     """
     xtype = 'textfield'
 
@@ -152,11 +202,13 @@ class FieldText(Base):
 
 
 class FieldTextArea(Base):
-    """Configurator for ``Ext.form.field.TextArea``.
+    """Configurator for `Ext.form.field.TextArea`_.
 
-    .. note::
+    Note:
         Regular expression for the validation can be written as a string.
 
+    .. include:: ../../../docs/api/extjs_links.txt
+
     """
     xtype = 'textarea'
 
@@ -166,60 +218,102 @@ class FieldTextArea(Base):
 
 
 class FieldTime(Base):
-    """Configurator for ``Ext.form.field.Time``."""
+    """Configurator for `Ext.form.field.Time`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'timefield'
 
 
 class FormPanel(Base):
-    """Configurator for ``App.form.Panel``."""
+    """Configurator for `App.form.Panel`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xform'
 
 
 class GridColumn(dict):
-    """Configurator for ``Ext.grid.Column``."""
+    """Configurator for `Ext.grid.Column`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
 
 
 class GridColumnModel(list):
-    """Configurator for ``Ext.grid.ColumnModel``.
+    """Configurator for `Ext.grid.ColumnModel`_.
 
     Note:
         It is  implemented as a ``list`` of :class:`.GridColumn`.
 
+    .. include:: ../../../docs/api/extjs_links.txt
+
     """
 
 
 class GridFilter(Base):
-    """Configurator for ``App.grid.Filter``."""
+    """Configurator for `App.grid.Filter`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xgridfilter'
 
 
 class GridPanel(Base):
-    """Configurator for ``App.grid.Panel``."""
+    """Configurator for `App.grid.Panel`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xgrid'
 
 
 class GridRowNumberer(Base):
-    """Configurator for ``Ext.grid.column.RowNumberer``."""
+    """Configurator for `Ext.grid.column.RowNumberer`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'rownumberer'
 
 
 class GridTemplateColumn(Base):
-    """Configurator for ``Ext.grid.TemplateColumn``."""
+    """Configurator for `Ext.grid.TemplateColumn`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'templatecolumn'
 
 
 class GridWithFilter(Base):
-    """Configurator for ``App.panel.GridWithFilter``."""
+    """Configurator for `App.panel.GridWithFilter`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xgridwithfilter'
 
 
 class JsonStore(Base):
-    """Configurator for the ``Ext.data.JsonStore``."""
+    """Configurator for `Ext.data.JsonStore`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'jsonstore'
 
 
 class Model(dict):
-    """Configurator for the ``Ext.data.Model``. """
+    """Configurator for `Ext.data.Model`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
 
     def __init__(self, **kwargs):
         dict.__init__(self, **kwargs)
@@ -227,35 +321,63 @@ class Model(dict):
 
 
 class Panel(Base):
-    """Configurator for ``Ext.panel.Panel``."""
+    """Configurator for `Ext.panel.Panel`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'panel'
 
 
 class PanelWithUrlSelector(Base):
-    """Configurator for ``App.panel.WithUrlSelector``."""
+    """Configurator for `App.panel.WithUrlSelector`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xpanelwithurlselector'
 
 
 class Store(Base):
-    """Configurator for the ``Ext.data.Store``."""
+    """Configurator for `Ext.data.Store`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'store'
 
 
 class TabPanel(Base):
-    """Configurator for ``Ext.tab.Panel``."""
+    """Configurator for `Ext.tab.Panel`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'tabpanel'
 
 
 class Viewport(Base):
-    """Configurator for ``App.viewport.Viewport``."""
+    """Configurator for `App.container.Viewport`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xviewport'
 
 
 class Window(Base):
-    """Configurator for ``Ext.Window``."""
+    """Configurator for `Ext.Window`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'window'
 
 
 class XmlStore(Base):
-    """Configurator for the ``Ext.data.XmlStore``."""
+    """Configurator for `Ext.data.XmlStore`_.
+
+    .. include:: ../../../docs/api/extjs_links.txt
+
+    """
     xtype = 'xmlstore'
-- 
GitLab