From: Łukasz Rekucki Date: Fri, 4 Sep 2009 10:13:57 +0000 (+0200) Subject: Poprawione tooltipy i skróty klawiszowe. X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/37e03d34aec3af64d322f0c76d49dba46ee29f92 Poprawione tooltipy i skróty klawiszowe. --- diff --git a/apps/toolbar/templates/toolbar/toolbar.html b/apps/toolbar/templates/toolbar/toolbar.html index a35c7bca..29528c16 100644 --- a/apps/toolbar/templates/toolbar/toolbar.html +++ b/apps/toolbar/templates/toolbar/toolbar.html @@ -19,7 +19,8 @@ {% endfor %} diff --git a/project/static/js/editor.js b/project/static/js/editor.js index 9dd12244..3ad29898 100644 --- a/project/static/js/editor.js +++ b/project/static/js/editor.js @@ -1,5 +1,6 @@ function Panel(panelWrap) { var self = this; + self.hotkeys = []; self.wrap = panelWrap; self.contentDiv = $('.panel-content', panelWrap); self.instanceId = Math.ceil(Math.random() * 1000000000); @@ -110,6 +111,7 @@ Panel.prototype.saveInfo = function() { Panel.prototype.connectToolbar = function() { var self = this; + self.hotkeys = []; // check if there is a one var toolbar = $("div.toolbar", this.contentDiv); @@ -145,18 +147,53 @@ Panel.prototype.connectToolbar = function() // connect action buttons var action_buttons = $('*.toolbar-button-groups-container button', toolbar); action_buttons.each(function() { - var button = $(this); - - button.click(function() { + var button = $(this); + var hk = button.attr('ui:hotkey'); + + var callback = function() { editor.callScriptlet(button.attr('ui:action'), self, eval(button.attr('ui:action-params')) ); - }); + }; - // connect hotkeys + // connect button + button.click(callback); + // connect hotkey + if(hk) self.hotkeys[parseInt(hk)] = callback; + + // tooltip + if (button.attr('ui:tooltip') ) + { + var tooltip = button.attr('ui:tooltip'); + if(hk) tooltip += ' [Alt+'+hk+']'; + + button.wTooltip({ + delay: 1000, + style: { + border: "1px solid #7F7D67", + opacity: 0.9, + background: "#FBFBC6", + padding: "1px", + fontSize: "12px" + }, + content: tooltip + }); + } }); } +Panel.prototype.hotkeyPressed = function(event) +{ + var callback = this.hotkeys[event.keyCode]; + if(callback) callback(); +} + +Panel.prototype.isHotkey = function(event) { + if( event.altKey && (this.hotkeys[event.keyCode] != null) ) + return true; + return false; +} + // Panel.prototype.fireEvent = function(name) { $(document).trigger('panel:'+name, this); @@ -445,6 +482,10 @@ Editor.prototype.callScriptlet = function(scriptlet_id, panel, params) { } $(function() { + $.fbind = function (self, func) { + return function() { return func.apply(self, arguments); }; + }; + editor = new Editor(); // do the layout diff --git a/project/templates/explorer/panels/xmleditor.html b/project/templates/explorer/panels/xmleditor.html index c818550e..39a05e52 100644 --- a/project/templates/explorer/panels/xmleditor.html +++ b/project/templates/explorer/panels/xmleditor.html @@ -1,6 +1,5 @@ {% load toolbar_tags %} -
A-
A+
@@ -23,40 +22,27 @@ panel_hooks = { var textareaId = 'xmleditor-' + Math.ceil(Math.random() * 1000000000); $('textarea', panel).attr('id', textareaId); - var texteditor = CodeMirror.fromTextArea(textareaId, { + var texteditor = CodeMirror.fromTextArea(textareaId, { parserfile: 'parsexml.js', path: "{{STATIC_URL}}js/codemirror/", stylesheet: "{{STATIC_URL}}css/xmlcolors.css", parserConfig: {useHTMLKludges: false}, onChange: function() { - panel.trigger('panel:contentChanged', self); + self.fireEvent('contentChanged'); }, initCallback: function(editor) { // Editor is loaded // Buttons are connected // register callbacks for actions - - -/* texteditor.grabKeys(function(event) { - if (keys[event.keyCode]) { - keys[event.keyCode](); - } - }, function(event) { return event.altKey && keys[event.keyCode]; }); */ + texteditor.grabKeys( + $.fbind(self, self.hotkeyPressed), + $.fbind(self, self.isHotkey) ); } }) $(texteditor.frame).css({width: '100%', height: '100%'}); - $('#toolbar-buttons li').wTooltip({ - delay: 1000, - style: { - border: "1px solid #7F7D67", - opacity: 0.9, - background: "#FBFBC6", - padding: "1px", - fontSize: "12px" - } - }); + $('.decrease-font-size', panel).click(function() { var frameBody = $('body', $(texteditor.frame).contents());