loleaflet/src/control/Control.ColumnHeader.js |   20 ++++++++++++++--
 loleaflet/src/control/Control.MetricInput.js  |   31 ++++++++++++++++++--------
 loleaflet/src/control/Control.RowHeader.js    |   18 ++++++++++++---
 loleaflet/src/layer/tile/CalcTileLayer.js     |    4 +++
 4 files changed, 58 insertions(+), 15 deletions(-)

New commits:
commit 1370c42afa95cbc276aaade460202aed352202ee
Author: Henry Castro <hcas...@collabora.com>
Date:   Wed Aug 31 23:34:45 2016 -0400

    loleaflet: update extra width/height for optimal column/row

diff --git a/loleaflet/src/control/Control.ColumnHeader.js 
b/loleaflet/src/control/Control.ColumnHeader.js
index 74949ab..ef67d60 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -49,7 +49,7 @@ L.Control.ColumnHeader = L.Control.Header.extend({
                                        }
                                },
                                'optimalwidth': {
-                                       name: _('Optimal Width'),
+                                       name: _('Optimal Width') + '...',
                                        callback: function(key, options) {
                                                var colAlpha = 
options.$trigger.attr('rel').split('spreadsheet-column-')[1];
                                                
colHeaderObj.optimalWidth.call(colHeaderObj, colAlpha);
@@ -62,11 +62,14 @@ L.Control.ColumnHeader = L.Control.Header.extend({
 
        optimalWidth: function(colAlpha) {
                if (!this._dialog) {
-                       this._dialog = 
L.control.metricInput(this._onDialogResult, this, {title: _('Optimal Column 
Width')});
+                       this._dialog = 
L.control.metricInput(this._onDialogResult, this,
+                                                            
this._map._docLayer.twipsToHMM(this._map._docLayer.STD_EXTRA_WIDTH),
+                                                            {title: _('Optimal 
Column Width')});
                }
+               this._selectColumn(colAlpha, 0);
                this._dialog.addTo(this._map);
                this._map.enable(false);
-               this._dialog.update();
+               this._dialog.show();
        },
 
        insertColumn: function(colAlpha) {
@@ -194,6 +197,17 @@ L.Control.ColumnHeader = L.Control.Header.extend({
        },
 
        _onDialogResult: function (e) {
+               if (e.type === 'submit' && !isNaN(e.value)) {
+                       var extra = {
+                               aExtraWidth: {
+                                       type: 'unsigned short',
+                                       value: e.value
+                               }
+                       };
+
+                       this._map.sendUnoCommand('.uno:SetOptimalColumnWidth', 
extra);
+               }
+
                this._map.enable(true);
        },
 
diff --git a/loleaflet/src/control/Control.MetricInput.js 
b/loleaflet/src/control/Control.MetricInput.js
index 88d3f69..df616d5 100644
--- a/loleaflet/src/control/Control.MetricInput.js
+++ b/loleaflet/src/control/Control.MetricInput.js
@@ -8,11 +8,12 @@ L.Control.MetricInput = L.Control.extend({
                title: ''
        },
 
-       initialize: function (callback, context, options) {
+       initialize: function (callback, context, value, options) {
                L.setOptions(this, options);
 
                this._callback = callback;
                this._context = context;
+               this._default = value;
        },
 
        onAdd: function (map) {
@@ -34,7 +35,7 @@ L.Control.MetricInput = L.Control.extend({
                var wrapper = L.DomUtil.create('div', 
'leaflet-popup-content-wrapper', container);
                var content = L.DomUtil.create('div', 'leaflet-popup-content', 
wrapper);
                var labelTitle = document.createElement('span');
-               labelTitle.innerHTML = '<b>' + this.options.title + '</b>';
+               labelTitle.innerHTML = '<b>' + this.options.title + ' ' + 
_('(100th/mm)') + '</b>';
                content.appendChild(labelTitle);
                content.appendChild(document.createElement('br'));
                content.appendChild(document.createElement('br'));
@@ -43,8 +44,9 @@ L.Control.MetricInput = L.Control.extend({
                labelAdd.innerHTML = _('Add: ');
                content.appendChild(labelAdd);
 
-               var inputMetric = document.createElement('input');
+               var inputMetric = this._input = document.createElement('input');
                inputMetric.type = 'text';
+               inputMetric.value = this._default;
                content.appendChild(inputMetric);
                content.appendChild(document.createElement('br'));
                content.appendChild(document.createElement('br'));
@@ -52,6 +54,7 @@ L.Control.MetricInput = L.Control.extend({
                var inputValue = document.createElement('input');
                inputValue.type = 'checkbox';
                inputValue.checked = true;
+               L.DomEvent.on(inputValue, 'click', this._onDefaultClick, this);
                content.appendChild(inputValue);
 
                var labelValue = document.createElement('span');
@@ -62,28 +65,38 @@ L.Control.MetricInput = L.Control.extend({
 
                var inputButton = document.createElement('input');
                inputButton.type = 'button';
-               inputButton.value = _('OK');
+               inputButton.value = _('Submit');
                L.DomEvent.on(inputButton, 'click', this._onOKButtonClick, 
this);
 
                content.appendChild(inputButton);
        },
 
-       update: function () {
+       onRemove: function (map) {
+               this._input = null;
+       },
+
+       show: function () {
                this._container.style.marginLeft = 
(-this._container.offsetWidth / 2) + 'px';
                this._container.style.visibility = '';
+               this._input.focus();
+       },
+
+       _onDefaultClick: function (e) {
+               this._input.value = this._default;
        },
 
        _onOKButtonClick: function (e) {
+               var data = parseFloat(this._input.value);
                this.remove();
-               this._callback.call(this._context, {type: 'ok', data: 0});
+               this._callback.call(this._context, {type: 'submit', value: 
data});
        },
 
        _onCloseButtonClick: function (e) {
                this.remove();
-               this._callback.call(this._context, {type : 'cancel'});
+               this._callback.call(this._context, {type : 'close'});
        }
 });
 
-L.control.metricInput = function (callback, context, options) {
-       return new L.Control.MetricInput(callback, context, options);
+L.control.metricInput = function (callback, context, value, options) {
+       return new L.Control.MetricInput(callback, context, value, options);
 };
diff --git a/loleaflet/src/control/Control.RowHeader.js 
b/loleaflet/src/control/Control.RowHeader.js
index 2395d3e..2236c20 100644
--- a/loleaflet/src/control/Control.RowHeader.js
+++ b/loleaflet/src/control/Control.RowHeader.js
@@ -47,7 +47,7 @@ L.Control.RowHeader = L.Control.Header.extend({
                                        }
                                },
                                'optimalheight': {
-                                       name: _('Optimal Height'),
+                                       name: _('Optimal Height') + '...',
                                        callback: function(key, options) {
                                                var row = 
parseInt(options.$trigger.attr('rel').split('spreadsheet-row-')[1]);
                                                
rowHeaderObj.optimalHeight.call(rowHeaderObj, row);
@@ -60,11 +60,12 @@ L.Control.RowHeader = L.Control.Header.extend({
 
        optimalHeight: function(row) {
                if (!this._dialog) {
-                       this._dialog = 
L.control.metricInput(this._onDialogResult, this, {title: _('Optimal Row 
Height')});
+                       this._dialog = 
L.control.metricInput(this._onDialogResult, this, 0, {title: _('Optimal Row 
Height')});
                }
+               this._selectRow(row, 0);
                this._dialog.addTo(this._map);
                this._map.enable(false);
-               this._dialog.update();
+               this._dialog.show();
        },
 
        insertRow: function(row) {
@@ -176,6 +177,17 @@ L.Control.RowHeader = L.Control.Header.extend({
        },
 
        _onDialogResult: function (e) {
+               if (e.type === 'submit' && !isNaN(e.value)) {
+                       var extra = {
+                               aExtraHeight: {
+                                       type: 'unsigned short',
+                                       value: e.value
+                               }
+                       };
+
+                       this._map.sendUnoCommand('.uno:SetOptimalRowHeight', 
extra);
+               }
+
                this._map.enable(true);
        },
 
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js 
b/loleaflet/src/layer/tile/CalcTileLayer.js
index 9989aa8..b3ac37f 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -7,6 +7,10 @@ L.CalcTileLayer = L.TileLayer.extend({
                               * 0.1986cm with TeX points,
                               * 0.1993cm with PS points. */
 
+       twipsToHMM: function (twips) {
+               return (twips * 127 + 36) / 72;
+       },
+
        beforeAdd: function (map) {
                map._addZoomLimit(this);
                map.on('zoomend', this._onZoomRowColumns, this);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to