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
