openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #02643
[Merge] lp:~tempo-openerp/openobject-client-web/gantt-grip-pane into lp:openobject-client-web
jftempo has proposed merging lp:~tempo-openerp/openobject-client-web/gantt-grip-pane into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~tempo-openerp/openobject-client-web/gantt-grip-pane/+merge/47546
Gantt view: add a grip to resize the left pane.
--
https://code.launchpad.net/~tempo-openerp/openobject-client-web/gantt-grip-pane/+merge/47546
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~tempo-openerp/openobject-client-web/gantt-grip-pane into lp:openobject-client-web.
=== modified file 'addons/openerp/controllers/impex.py'
--- addons/openerp/controllers/impex.py 2011-01-18 21:32:29 +0000
+++ addons/openerp/controllers/impex.py 2011-01-26 16:15:12 +0000
@@ -40,7 +40,7 @@
def export_csv(fields, result):
try:
fp = StringIO.StringIO()
- writer = csv.writer(fp)
+ writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
writer.writerow(fields)
=== modified file 'addons/openerp/controllers/search.py'
--- addons/openerp/controllers/search.py 2011-01-21 09:10:48 +0000
+++ addons/openerp/controllers/search.py 2011-01-26 16:15:12 +0000
@@ -54,7 +54,7 @@
return dict(form=form, params=params, form_name = form.screen.widget.name)
@expose()
- def new(self, model, source=None, kind=0, text=None, domain=[], context={}, **kw):
+ def new(self, model, source=None, kind=0, text=None, domain=None, context=None, **kw):
"""Create new search view...
@param model: the model
@@ -68,8 +68,8 @@
params = TinyDict()
params.model = model
- params.domain = domain
- params.context = context
+ params.domain = domain or []
+ params.context = context or {}
params.source = source
params.selectable = kind
@@ -79,14 +79,14 @@
**(params.context or {}))
params.ids = []
proxy = rpc.RPCProxy(model)
- ids = proxy.name_search(text or '', params.domain or [], 'ilike', ctx)
+ ids = proxy.name_search(text or '', params.domain, 'ilike', ctx)
params.search_text = False
if ids:
params.ids = [id[0] for id in ids]
# For m2o, when name_search is called, then its result will be added to existing domain
- params.domain += [('id','in', params.ids)]
+ params.domain.append(('id','in', params.ids))
if len(ids) < params.limit or text:
count = len(ids)
=== modified file 'addons/view_calendar/static/css/calendar_gantt.css'
--- addons/view_calendar/static/css/calendar_gantt.css 2010-12-02 17:08:21 +0000
+++ addons/view_calendar/static/css/calendar_gantt.css 2011-01-26 16:15:12 +0000
@@ -159,7 +159,12 @@
td#calOptions dd {
padding-left: 0;
}
-
+.calGantt .grip {
+ background:#EEEEEE url(../images/vertical-grip.png) no-repeat scroll center 2px;
+ width: 5px;
+ height: 27px;
+ cursor:e-resize;
+}
/**
* vim: sts=4 st=4 et
*
=== added file 'addons/view_calendar/static/images/vertical-grip.png'
Binary files addons/view_calendar/static/images/vertical-grip.png 1970-01-01 00:00:00 +0000 and addons/view_calendar/static/images/vertical-grip.png 2011-01-26 16:15:12 +0000 differ
=== modified file 'addons/view_calendar/static/javascript/calendar_gantt.js'
--- addons/view_calendar/static/javascript/calendar_gantt.js 2010-12-27 10:13:07 +0000
+++ addons/view_calendar/static/javascript/calendar_gantt.js 2011-01-26 16:15:12 +0000
@@ -39,14 +39,15 @@
this._makeEvents();
MochiKit.DOM.removeElement('calBodySect');
-
+ this.gripper = DIV({'class': 'grip'});
var tbl = TABLE(null,
TBODY(null,
TR(null,
- TD({'width': 200, 'nowrap': 'nowrap'}),
+ TD({'width': 200, 'nowrap': 'nowrap', 'colspan': 2}),
TD({}, DIV({'id': 'calHeaderC'}, this.header.elements))),
TR(null,
TD({'width': 200, 'nowrap': 'nowrap'}, DIV({'id': 'calListC'})),
+ TD({'width': 5, 'nowrap': 'nowrap'}, this.gripper),
TD({}, DIV({'id': 'calGridC'})))));
tbl.cellPadding = 0;
@@ -63,7 +64,8 @@
this.gc = openobject.dom.get('calGridC');
this.hc = openobject.dom.get('calHeaderC');
this.lc = openobject.dom.get('calListC');
-
+
+ this.mingripsize = getElementDimensions(this.lc).w;
this.attachSignals();
},
@@ -83,6 +85,7 @@
this.evtEventDrag = MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables, 'drag', this, 'onEventDrag');
this.evtEventDragged = MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables, 'end', this, 'onEventDragged');
this.evtEventResized = MochiKit.Signal.connect(MochiKit.DragAndDrop.Resizables, 'end', this, 'onEventResized');
+ this.evtGripDown = MochiKit.Signal.connect(this.gripper, 'onmousedown', this, 'gripStart');
},
dettachSignals: function() {
@@ -93,6 +96,7 @@
MochiKit.Signal.disconnect(this.evtEventDrag);
MochiKit.Signal.disconnect(this.evtEventDragged);
MochiKit.Signal.disconnect(this.evtEventResized);
+ MochiKit.Signal.disconnect(this.evtGripDown);
},
onResize: function(evt) {
@@ -333,7 +337,27 @@
self.grid.adjust();
});
}
- }
+ },
+
+ gripStart : function(evt){
+ this.offset = elementDimensions(this.lc).w - evt.mouse().page.x;
+ this.signGridUpdate = MochiKit.Signal.connect(document, 'onmousemove', this, "gripUpdate");
+ this.signGridStop = MochiKit.Signal.connect(document, 'onmouseup', this, "gripStop");
+ evt.stop();
+ },
+
+ gripUpdate : function(evt){
+ var w = Math.max(this.mingripsize, this.offset + evt.mouse().page.x);
+ this.lc.style.width = w + 'px';
+ evt.stop();
+ },
+
+ gripStop : function(evt){
+ MochiKit.Signal.disconnect(this.signGridUpdate);
+ MochiKit.Signal.disconnect(this.signGridStop);
+ evt.stop();
+ },
+
};
/**
=== modified file 'openobject/i18n/_gettext.py'
--- openobject/i18n/_gettext.py 2011-01-13 09:40:38 +0000
+++ openobject/i18n/_gettext.py 2011-01-26 16:15:12 +0000
@@ -82,8 +82,9 @@
catalog = _translations.setdefault(domain, {})
for locale in locales:
+ translation = None
try:
- tr = _load_translation(path, locale, domain)
+ translation = _load_translation(path, locale, domain)
except babel.core.UnknownLocaleError, e:
# don't load unknown locales such as Klingon (tlh)
cherrypy.log.error("%s, ignoring translation file" % e, context='i18n', severity=logging.WARN)
@@ -97,12 +98,11 @@
severity=logging.WARNING)
cherrypy.log.error(context='i18n', severity=logging.DEBUG,
traceback=True)
- tr = None
- if isinstance(tr, babel.support.Translations):
+ if isinstance(translation, babel.support.Translations):
if locale in catalog:
- catalog[locale].merge(tr)
+ catalog[locale].merge(translation)
else:
- catalog[locale] = tr
+ catalog[locale] = translation
def load_translations(path, locales=None, domain="messages"):
"""
Follow ups