From b927d41c8264b86ceccc87dbcfc6dd72dc199168 Mon Sep 17 00:00:00 2001 From: tux091 <renaud.legac@free.fr> Date: Wed, 28 Sep 2011 22:06:34 +0200 Subject: [PATCH] Backport the 0.5.x Spacer class. --- models/db_widgets.py | 6 +++--- modules/plugin_dbui/__init__.py | 1 + modules/plugin_dbui/cfgsvc.py | 16 ++++++---------- modules/plugin_dbui/formmodifier.py | 9 --------- modules/plugin_dbui/modifier.py | 17 +++++++++++++++++ 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/models/db_widgets.py b/models/db_widgets.py index 210d62fe..0b7ca837 100755 --- a/models/db_widgets.py +++ b/models/db_widgets.py @@ -73,7 +73,7 @@ formModifier.merge_fields('conference_title', 'conference_town', 'id_countries', 'conference_speaker', - spacer=26*3, + dbui.Spacer(height=26*3), title=T('Conference'), flex=1) @@ -82,13 +82,13 @@ formModifier.merge_fields('authors_cppm', 'id_teams', 'id_projects', 'id_categories_aeres', - spacer= 26*5, + dbui.Spacer(height=26*5), title='CPPM', flex=1) formModifier.merge_fields('report_numbers', 'id_reports', - spacer=220, + dbui.Spacer(height=220), title=T('Report'), flex=1) diff --git a/modules/plugin_dbui/__init__.py b/modules/plugin_dbui/__init__.py index 5ff870ca..4c6c5068 100755 --- a/modules/plugin_dbui/__init__.py +++ b/modules/plugin_dbui/__init__.py @@ -15,4 +15,5 @@ from helper import (get_js_files, get_reference_paths, get_script_path) from mapper import map_default, map_tabpanel +from modifier import Spacer, Widget from viewportmodifier import VIEWPORT_DP, ViewportModifier \ No newline at end of file diff --git a/modules/plugin_dbui/cfgsvc.py b/modules/plugin_dbui/cfgsvc.py index d43727b5..5a6b47dc 100755 --- a/modules/plugin_dbui/cfgsvc.py +++ b/modules/plugin_dbui/cfgsvc.py @@ -10,6 +10,7 @@ from basesvc import BaseSvc from foreignfield import ForeignField from helper import encode_field from mapper import map_default +from modifier import Widget from setfield import SetField FIELD_IN_DBFIELD = "Field %s already in the dbFields list." @@ -64,6 +65,10 @@ class CfgSvc(BaseSvc): See the documentation of the Ext.form.Compositefield class for details. """ + # handle spacer and simple text widget + if isinstance(fieldname, Widget): + li.append(fieldname.extjs) + return # handle composite field and fieldsets field_modifiers = self.environment['plugins'].dbui.field_modifiers @@ -291,18 +296,9 @@ class CfgSvc(BaseSvc): self._append_form_field(tablename, fieldname, cfg['items']) if fieldname == 'id': id_is_not_used = False - - # protection when applying Ext JS configuration parameters - # NOTE: if the user submit a list of items they are append at the - # end of the current list. - # It is a way to add spacer and to fine tune the layout - extjs = dict(fieldset.extjs) - if 'items' in extjs: - cfg['items'].extend(extjs['items']) - del extjs['items'] # Apply the remaining Ext JS configuration options - cfg.update(extjs) + cfg.update(fieldset.extjs) fielditems.append(cfg) # append the field Id diff --git a/modules/plugin_dbui/formmodifier.py b/modules/plugin_dbui/formmodifier.py index b1a293d2..1c8366dc 100644 --- a/modules/plugin_dbui/formmodifier.py +++ b/modules/plugin_dbui/formmodifier.py @@ -59,15 +59,6 @@ class FormModifier(Modifier): extjs = {'defaults': {'anchor': '100%'}} extjs.update(kwargs) - if 'spacer' in extjs: - di = {'xtype': 'spacer', 'height': extjs['spacer']} - if 'items' in extjs: - items.append(di) - else: - extjs['items'] = [di] - - del extjs['spacer'] - di = Storage(fields=fields, extjs= extjs) self.data.field_sets.append(di) diff --git a/modules/plugin_dbui/modifier.py b/modules/plugin_dbui/modifier.py index d2b4c20d..e4bf7c8a 100644 --- a/modules/plugin_dbui/modifier.py +++ b/modules/plugin_dbui/modifier.py @@ -84,3 +84,20 @@ class Modifier(object): """ self.data.extjs.update(extjs) + +class Widget(object): + """Base class defining a the configuration of an ExtJS widget. + + """ + def __init__(self, xtype, **kwargs): + self.extjs = dict(xtype=xtype, **kwargs) + + +class Spacer(Widget): + """Define a spacer which can be add when combining fields in fieldset + or in field container. + + """ + def __init__(self, **kwargs): + Widget.__init__(self, 'spacer', **kwargs) + -- GitLab