loleaflet/build/deps.js                  |    7 ++
 loleaflet/dist/images/alignblock.png     |binary
 loleaflet/dist/images/aligncenter.png    |binary
 loleaflet/dist/images/alignleft.png      |binary
 loleaflet/dist/images/alignright.png     |binary
 loleaflet/dist/images/bold.png           |binary
 loleaflet/dist/images/italic.png         |binary
 loleaflet/dist/images/strikethrough.png  |binary
 loleaflet/dist/images/underline.png      |binary
 loleaflet/dist/leaflet.css               |   28 +++++++++
 loleaflet/src/control/Control.Buttons.js |   93 +++++++++++++++++++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js    |    4 +
 loolwsd/LOOLSession.cpp                  |    9 ++-
 13 files changed, 140 insertions(+), 1 deletion(-)

New commits:
commit f374079d1a7e803bccca44de1f09785b23faeabc
Author: Mihai Varga <[email protected]>
Date:   Wed Jul 8 09:22:27 2015 +0300

    loleaflet: toolbar control integration

diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index ec73c3e..ec2dbe3 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -228,6 +228,13 @@ var deps = {
                desc: 'Switches from viewing to editing mode and backwards'
        },
 
+       ControlButtons: {
+               src: ['control/Control.js',
+                     'control/Control.Buttons.js'],
+               heading: 'Buttons',
+               desc: 'Handles buttons from the toolbar'
+       },
+
        ControlStatusIndicator: {
                src: ['control/Control.js',
                      'control/Control.StatusIndicator.js'],
diff --git a/loleaflet/dist/leaflet.css b/loleaflet/dist/leaflet.css
index c192339..90dd07f 100644
--- a/loleaflet/dist/leaflet.css
+++ b/loleaflet/dist/leaflet.css
@@ -305,6 +305,34 @@
        user-select: none;
        }
 
+/* Toolbar buttons control */
+
+.leaflet-control-buttons-container {
+       float: left;
+       }
+
+.leaflet-control-buttons,
+a.leaflet-control-buttons,
+a.leaflet-control-buttons:hover {
+       box-shadow: 0 1px 5px rgba(0,0,0,0.4);
+       background: #fff;
+       border-radius: 5px;
+       width: 24px;
+       height: 24px;
+       float: left;
+       }
+
+a.leaflet-control-buttons,
+a.leaflet-control-buttons:hover {
+       margin-left: 3px;
+       }
+
+.leaflet-control-buttons-active {
+       border: thin solid;
+       }
+
+
+
 /* layers control */
 
 .leaflet-control-layers {
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 7f4b843..1dbc3ce 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -376,6 +376,10 @@ L.TileLayer = L.GridLayer.extend({
                                }
                        }
                }
+               else if (textMsg.startsWith('statechanged:')) {
+                       var state = textMsg.substr(14);
+                       map.fire('statechanged', {state : state});
+               }
                else if (textMsg.startsWith('status:')) {
                        command = this._parseServerCmd(textMsg);
                        if (command.width && command.height && 
this._documentInfo !== textMsg) {
commit 104931362e0eea5b52eaea7dc5330e91474e7815
Author: Mihai Varga <[email protected]>
Date:   Wed Jul 8 09:21:26 2015 +0300

    loleaflet: toolbar buttons control

diff --git a/loleaflet/src/control/Control.Buttons.js 
b/loleaflet/src/control/Control.Buttons.js
new file mode 100644
index 0000000..c54c291
--- /dev/null
+++ b/loleaflet/src/control/Control.Buttons.js
@@ -0,0 +1,93 @@
+/*
+ * L.Control.Buttons handles buttons such as bold, italic, etc.
+ */
+
+L.Control.Buttons = L.Control.extend({
+       options: {
+               position: 'topleft'
+       },
+
+       onAdd: function (map) {
+               var buttonsName = 'leaflet-control-buttons',
+                   container = L.DomUtil.create('div', buttonsName + 
'-container' + ' leaflet-bar');
+
+               this._buttons = {
+                       'bold':          {title: 'Bold',               uno: 
'Bold',        iconName: 'bold.png'},
+                       'italic':        {title: 'Italic',             uno: 
'Italic',      iconName: 'italic.png'},
+                       'underline':     {title: 'Underline',          uno: 
'Underline',   iconName: 'underline.png'},
+                       'strikethrough': {title: 'Strike-through',     uno: 
'Strikeout',   iconName: 'strikethrough.png'},
+                       'alignleft':     {title: 'Align left',         uno: 
'AlignLeft',   iconName: 'alignleft.png'},
+                       'aligncenter':   {title: 'Center horizontaly', uno: 
'AlignCenter', iconName: 'aligncenter.png'},
+                       'alignright':    {title: 'Align right',        uno: 
'AlignRight',  iconName: 'alignright.png'},
+                       'alignblock':    {title: 'Justified',          uno: 
'AlignBlock',  iconName: 'alignblock.png'}
+               };
+               for (var key in this._buttons) {
+                       var button = this._buttons[key];
+                       button.el = this._createButton(key, button.title, 
button.iconName,
+                               buttonsName, container, this._onButtonClick);
+               }
+               map.on('statechanged', this._onStateChange, this);
+
+               return container;
+       },
+
+       _createButton: function (id, title, iconName, className, container, fn) 
{
+               var link = L.DomUtil.create('a', className, container);
+               link.href = '#';
+               link.title = title;
+               var img = L.DomUtil.create('img', className, link);
+               img.id = id;
+               img.src = L.Icon.Default.imagePath + '/' + iconName;
+
+               L.DomEvent
+                   .on(link, 'mousedown dblclick', L.DomEvent.stopPropagation)
+                   .on(link, 'click', L.DomEvent.stop)
+                   .on(link, 'click', fn, this)
+                   .on(link, 'click', this._refocusOnMap, this);
+
+               return link;
+       },
+
+       _onButtonClick: function (e) {
+               var id = e.target.id;
+               var button = this._buttons[id];
+               if (button.active) {
+                       L.DomUtil.removeClass(e.target, 
'leaflet-control-buttons-active');
+                       button.active = false;
+               }
+               else {
+                       L.DomUtil.addClass(e.target, 
'leaflet-control-buttons-active');
+                       button.active = true;
+               }
+               this._map.socket.send('uno .uno:' + button.uno);
+       },
+
+       _onStateChange: function (e) {
+               var unoCmd = e.state.match('.uno:(.*)=')[1];
+               var state = e.state.match('.*=(.*)')[1];
+               for (var key in this._buttons) {
+                       var button = this._buttons[key];
+                       if (button.uno === unoCmd) {
+                               if (state === 'true') {
+                                       
L.DomUtil.addClass(button.el.firstChild, 'leaflet-control-buttons-active');
+                               }
+                               else if (state === 'false') {
+                                       
L.DomUtil.removeClass(button.el.firstChild, 'leaflet-control-buttons-active');
+                               }
+                       }
+               }
+       }
+});
+
+L.Map.mergeOptions({
+       buttonsControl: true
+});
+
+L.Map.addInitHook(function () {
+       this.buttonsControl = new L.Control.Buttons();
+       this.addControl(this.buttonsControl);
+});
+
+L.control.buttons = function (options) {
+       return new L.Control.Buttons(options);
+};
commit 96fff483a6aea6e1013b3f1015568ca09e5f81d3
Author: Mihai Varga <[email protected]>
Date:   Wed Jul 8 09:14:45 2015 +0300

    loleaflet: breeze toolbar icons

diff --git a/loleaflet/dist/images/alignblock.png 
b/loleaflet/dist/images/alignblock.png
new file mode 100644
index 0000000..0c647ec
Binary files /dev/null and b/loleaflet/dist/images/alignblock.png differ
diff --git a/loleaflet/dist/images/aligncenter.png 
b/loleaflet/dist/images/aligncenter.png
new file mode 100644
index 0000000..1326ae0
Binary files /dev/null and b/loleaflet/dist/images/aligncenter.png differ
diff --git a/loleaflet/dist/images/alignleft.png 
b/loleaflet/dist/images/alignleft.png
new file mode 100644
index 0000000..a037e60
Binary files /dev/null and b/loleaflet/dist/images/alignleft.png differ
diff --git a/loleaflet/dist/images/alignright.png 
b/loleaflet/dist/images/alignright.png
new file mode 100644
index 0000000..9ec2747
Binary files /dev/null and b/loleaflet/dist/images/alignright.png differ
diff --git a/loleaflet/dist/images/bold.png b/loleaflet/dist/images/bold.png
new file mode 100644
index 0000000..f3ff0c5
Binary files /dev/null and b/loleaflet/dist/images/bold.png differ
diff --git a/loleaflet/dist/images/italic.png b/loleaflet/dist/images/italic.png
new file mode 100644
index 0000000..56a9510
Binary files /dev/null and b/loleaflet/dist/images/italic.png differ
diff --git a/loleaflet/dist/images/strikethrough.png 
b/loleaflet/dist/images/strikethrough.png
new file mode 100644
index 0000000..809a2b9
Binary files /dev/null and b/loleaflet/dist/images/strikethrough.png differ
diff --git a/loleaflet/dist/images/underline.png 
b/loleaflet/dist/images/underline.png
new file mode 100644
index 0000000..e5ce026
Binary files /dev/null and b/loleaflet/dist/images/underline.png differ
commit 6d2d8361b67cbe580455c77eb03d3ce0398d47be
Author: Mihai Varga <[email protected]>
Date:   Wed Jul 8 09:09:58 2015 +0300

    loolwsd: the third argument in postUnoCommand must be null not space

diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 812d27f..982a95f 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -1056,7 +1056,14 @@ bool ChildProcessSession::unoCommand(const char *buffer, 
int length, StringToken
         return false;
     }
 
-    _loKitDocument->pClass->postUnoCommand(_loKitDocument, tokens[1].c_str(), 
Poco::cat(std::string(" "), tokens.begin() + 2, tokens.end()).c_str());
+    if (tokens.count() == 2)
+    {
+        _loKitDocument->pClass->postUnoCommand(_loKitDocument, 
tokens[1].c_str(), 0);
+    }
+    else
+    {
+        _loKitDocument->pClass->postUnoCommand(_loKitDocument, 
tokens[1].c_str(), Poco::cat(std::string(" "), tokens.begin() + 2, 
tokens.end()).c_str());
+    }
 
     return true;
 }
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to