From: phasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4> Date: Tue, 19 Apr 2011 15:52:49 +0000 (+0000) Subject: Menu Hotkeys and Toolbars X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=19e9126279e6973354396ac28d0c9ad4f3093eab;p=evergreen%2Fmasslnc.git Menu Hotkeys and Toolbars Dynamic Hotkey sets New cataloging toolbar New updates to circ toolbar New menu items and updates to menus in admin menu area Toolbar/hotkey settings can be saved to workstation prefs from admin -> workstation administration Update org unit setting for button_bar to be a string, circ or cat by default to pick those two toolbars Author: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Jason Etheridge <jason@esilibrary.com> git-svn-id: svn://svn.open-ils.org/ILS/trunk@20207 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index 4aeecccf3d..c60998f00f 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -1885,7 +1885,12 @@ INSERT into config.org_unit_setting_type ( 'ui.general.button_bar', oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'label'), oils_i18n_gettext('ui.general.button_bar', 'Button bar', 'coust', 'description'), - 'bool'), + 'string'), + +( 'ui.general.hotkeyset', + oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset', 'coust', 'label'), + oils_i18n_gettext('ui.general.hotkeyset', 'Default Hotkeyset for clients (filename without the .keyset)', 'coust', 'description'), + 'string'), ( 'circ.hold_shelf_status_delay', oils_i18n_gettext('circ.hold_shelf_status_delay', 'Hold Shelf Status Delay', 'coust', 'label'), diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.client_menus.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.client_menus.sql new file mode 100644 index 0000000000..fd642c15bf --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.client_menus.sql @@ -0,0 +1,14 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('XXXX'); + +UPDATE config.org_unit_setting_type SET datatype = 'string' WHERE name = 'ui.general.button_bar'; + +INSERT INTO config.org_unit_setting_type ( name, label, description, datatype) VALUES ('ui.general.hotkeyset', 'Default Hotkeyset', 'Default Hotkeyset for clients (filename without the .keyset)', 'string'); + +UPDATE actor.org_unit_setting SET value='"circ"' WHERE name = 'ui.general.button_bar' AND value='true'; + +UPDATE actor.org_unit_setting SET value='"none"' WHERE name = 'ui.general.button_bar' AND value='false'; + +COMMIT; + diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index ef4c6cc567..fb7e927321 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -660,6 +660,9 @@ <!ENTITY staff.main.auth.status "Status"> <!ENTITY staff.main.auth.version "Version"> <!ENTITY staff.main.auth.workstation "Workstation"> +<!ENTITY staff.main.button_bar.none "None"> +<!ENTITY staff.main.button_bar.circ "Circulation"> +<!ENTITY staff.main.button_bar.cat "Cataloging"> <!ENTITY staff.main.button_bar.check_out.label "Check Out"> <!ENTITY staff.main.button_bar.check_out.accesskey ""> <!ENTITY staff.main.button_bar.check_in.label "Check In"> @@ -672,6 +675,10 @@ <!ENTITY staff.main.button_bar.patron_search.accesskey ""> <!ENTITY staff.main.button_bar.patron_registration.label "Patron Registration"> <!ENTITY staff.main.button_bar.patron_registration.accesskey ""> +<!ENTITY staff.main.button_bar.hotkeys_toggle "Toggle Hotkeys"> +<!ENTITY staff.main.button_bar.create_marc "Create Marc Record"> +<!ENTITY staff.main.button_bar.authority_manage "Manage Authorities"> +<!ENTITY staff.main.button_bar.retrieve_last_record "Retrieve Last Record"> <!ENTITY staff.main.menu.acquisitions.accesskey "q"> <!ENTITY staff.main.menu.acquisitions.label "Acquisitions"> <!ENTITY staff.main.menu.admin.accesskey "-"> @@ -805,6 +812,32 @@ <!ENTITY staff.main.menu.admin.label "Admin"> <!ENTITY staff.main.menu.admin.local_admin.accesskey "L"> <!ENTITY staff.main.menu.admin.local_admin.label "Local Administration"> +<!ENTITY staff.main.menu.admin.client.label "Workstation Administration"> +<!ENTITY staff.main.menu.admin.client.accesskey "W"> +<!ENTITY staff.main.menu.admin.client.hotkeys "Hotkeys"> +<!ENTITY staff.main.menu.admin.client.hotkeys.current "Current"> +<!ENTITY staff.main.menu.admin.client.hotkeys.toggle.label "Disable Hotkeys"> +<!ENTITY staff.main.menu.admin.client.hotkeys.toggle.accesskey "D"> +<!ENTITY staff.main.menu.admin.client.hotkeys.setworkstation.label "Set Workstation Default to Current"> +<!ENTITY staff.main.menu.admin.client.hotkeys.setworkstation.accesskey ""> +<!ENTITY staff.main.menu.admin.client.hotkeys.clearworkstation.label "Clear Workstation Default"> +<!ENTITY staff.main.menu.admin.client.hotkeys.clearworkstation.accesskey ""> +<!ENTITY staff.main.menu.admin.client.toolbars "Toolbars"> +<!ENTITY staff.main.menu.admin.client.toolbars.current "Current"> +<!ENTITY staff.main.menu.admin.client.toolbars.setworkstation.label "Set Workstation Default to Current"> +<!ENTITY staff.main.menu.admin.client.toolbars.setworkstation.accesskey ""> +<!ENTITY staff.main.menu.admin.client.toolbars.clearworkstation.label "Clear Workstation Default"> +<!ENTITY staff.main.menu.admin.client.toolbars.clearworkstation.accesskey ""> +<!ENTITY staff.main.menu.admin.client.toolbars.size "Icon Size"> +<!ENTITY staff.main.menu.admin.client.toolbars.size.large "Large"> +<!ENTITY staff.main.menu.admin.client.toolbars.size.small "Small"> +<!ENTITY staff.main.menu.admin.client.toolbars.mode "Mode"> +<!ENTITY staff.main.menu.admin.client.toolbars.mode.both "Icons and Labels"> +<!ENTITY staff.main.menu.admin.client.toolbars.mode.icons "Icons Only"> +<!ENTITY staff.main.menu.admin.client.toolbars.mode.text "Labels Only"> +<!ENTITY staff.main.menu.admin.client.toolbars.label_position "Label Position"> +<!ENTITY staff.main.menu.admin.client.toolbars.label_position.side "Next to icons"> +<!ENTITY staff.main.menu.admin.client.toolbars.label_position.under "Under icons"> <!ENTITY staff.main.menu.admin.non_cat_type_edit.accesskey "n"> <!ENTITY staff.main.menu.admin.non_cat_type_edit.label "Non-Cataloged Type Editor"> <!ENTITY staff.main.menu.admin.offline_xacts.accesskey "T"> @@ -827,8 +860,6 @@ <!ENTITY staff.main.menu.admin.xuleditor.label "XUL Test"> <!ENTITY staff.main.menu.admin.venkman.label "Venkman"> <!ENTITY staff.main.menu.admin.ping "Ping Server"> -<!ENTITY staff.main.menu.admin.toggle_buttonbar.accesskey "B"> -<!ENTITY staff.main.menu.admin.toggle_buttonbar.label "Toggle Button Bar"> <!ENTITY staff.main.menu.admin.toggle_meters.accesskey "M"> <!ENTITY staff.main.menu.admin.toggle_meters.label "Toggle Activity Meters"> <!ENTITY staff.main.menu.cat.accesskey "g"> diff --git a/Open-ILS/xul/staff_client/chrome/content/auth/controller.js b/Open-ILS/xul/staff_client/chrome/content/auth/controller.js index 51a0ad2720..2b3a14a458 100644 --- a/Open-ILS/xul/staff_client/chrome/content/auth/controller.js +++ b/Open-ILS/xul/staff_client/chrome/content/auth/controller.js @@ -549,7 +549,9 @@ auth.controller.prototype = { this.session.close(); this.data.menu_perms = false; + this.data.current_hotkeyset = undefined; this.data.stash('menu_perms'); + this.data.stash('current_hotkeyset'); /* FIXME - need some locking or object destruction for the async tests */ /* this.test_server( this.controller.view.server_prompt.value ); */ diff --git a/Open-ILS/xul/staff_client/chrome/content/main/main.js b/Open-ILS/xul/staff_client/chrome/content/main/main.js index 9aec40a9e4..f13cbfe633 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/main.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/main.js @@ -220,6 +220,70 @@ function get_menu_perms(indocument) { return false; } +// Returns a list (cached or from filesystem) of hotkey sets +function load_hotkey_sets() { + if(typeof(load_hotkey_sets.set_list) == 'undefined') { + load_hotkey_sets.set_list = []; + JSAN.use('util.file'); + var file = new util.file(); + var dirEntries = file.get('hotkeys','skin').directoryEntries; + while(dirEntries.hasMoreElements()) { + var entry = dirEntries.getNext(); + entry.QueryInterface(Components.interfaces.nsIFile); + if(!entry.isFile()) continue; + if(!entry.leafName.match(/.+\.keyset$/)) continue; + var keysetname = entry.leafName.replace(/\.keyset$/,''); + load_hotkey_sets.set_list.push(keysetname); + } + file.close(); + } + return load_hotkey_sets.set_list; +} + +// Returns an array (cached or from filesystem) for a given hotkey set +function get_hotkey_array(keyset_name) { + if(typeof(get_hotkey_array.keyset_cache) == 'undefined') { + get_hotkey_array.keyset_cache = {}; + } + if(get_hotkey_array.keyset_cache[keyset_name]) + return get_hotkey_array.keyset_cache[keyset_name]; + JSAN.use('util.file'); + var file = new util.file(); + var keyset_raw; + try { + var keyset_file = file.get('hotkeys','skin'); + keyset_file.append(keyset_name + ".keyset"); + keyset_raw = file.get_content(); + file.close(); + var tempArray = []; + + var keyset_lines = keyset_raw.trim().split("\n"); + for(var line = 0; line < keyset_lines.length; line++) { + // Grab line, strip comments, strip leading/trailing whitespace + var curline = keyset_lines[line].replace(/\s*#.*$/,'').trim(); + if(curline == "") continue; // Skip empty lines + // Split into pieces + var split_line = curline.split(','); + // We need at least 3 elements. Command, modifiers, keycode. + if(split_line.length < 3) continue; + // Trim each segment + split_line[0] = split_line[0].trim(); + split_line[1] = split_line[1].trim(); + split_line[2] = split_line[2].trim(); + if(split_line.length > 3) + split_line[3] = split_line[3].trim(); + // Skip empty commands + if(split_line[0] == "") continue; + // Push to array + tempArray.push(split_line); + } + get_hotkey_array.keyset_cache[keyset_name] = tempArray; + return tempArray; + } catch(E) { // Something went wrong. + return false; + } +} + function main_init() { dump('entering main_init()\n'); try { diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu.js b/Open-ILS/xul/staff_client/chrome/content/main/menu.js index b8b9f8a940..ba8a97d3be 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu.js @@ -33,6 +33,11 @@ main.menu.prototype = { 'id_incr' : 0, + 'toolbar' : 'none', + 'toolbar_size' : 'large', + 'toolbar_mode' : 'both', + 'toolbar_labelpos' : 'side', + 'url_prefix' : function(url) { if (url.match(/^\//)) url = urls.remote + url; if (! url.match(/^(http|chrome):\/\//) && ! url.match(/^data:/) ) url = 'http://' + url; @@ -55,10 +60,72 @@ main.menu.prototype = { eval( r.responseText ); } - var button_bar = String( obj.data.hash.aous['ui.general.button_bar'] ) == 'true'; + // Try workstation pref for button bar + var button_bar = xulG.pref.getCharPref('open-ils.menu.toolbar'); + + if (!button_bar) // No workstation pref? Try org unit pref. + button_bar = String( obj.data.hash.aous['ui.general.button_bar'] ); + if (button_bar) { - var x = document.getElementById('main_toolbar'); + var x = document.getElementById('toolbar_' + button_bar); if (x) x.setAttribute('hidden','false'); + this.toolbar = button_bar; + } + + // Check for alternate Size pref + var toolbar_size = xulG.pref.getCharPref('open-ils.menu.toolbar.iconsize'); + if(toolbar_size) this.toolbar_size = toolbar_size; + // Check for alternate Mode pref + var toolbar_mode = xulG.pref.getCharPref('open-ils.menu.toolbar.mode'); + if(toolbar_mode) this.toolbar_mode = toolbar_mode; + // Check for alternate Label Position pref + var toolbar_labelpos = xulG.pref.getBoolPref('open-ils.menu.toolbar.labelbelow'); + if(toolbar_labelpos) this.toolbar_labelpos = toolbar_labelpos; + + if(button_bar || toolbar_size || toolbar_mode || toolbar_labelpos) { + var toolbox = document.getElementById('main_toolbox'); + var toolbars = toolbox.getElementsByTagName('toolbar'); + for(var i = 0; i < toolbars.length; i++) { + if(toolbars[i].id == 'toolbar_' + button_bar) + toolbars[i].setAttribute('hidden', 'false'); + else + toolbars[i].setAttribute('hidden', 'true'); + if(toolbar_mode) toolbars[i].setAttribute('mode', toolbar_mode); + if(toolbar_size) toolbars[i].setAttribute('iconsize', toolbar_size); + if(toolbar_labelpos) addCSSClass(toolbars[i], 'labelbelow'); + } + } + + if(button_bar) { + var x = document.getElementById('main.menu.admin.client.toolbars.current.popup'); + if (x) { + var selectitems = x.getElementsByAttribute('value',button_bar); + if(selectitems.length > 0) selectitems[0].setAttribute('checked','true'); + } + } + + if(toolbar_size) { + var x = document.getElementById('main.menu.admin.client.toolbars.size.popup'); + if (x) { + var selectitems = x.getElementsByAttribute('value',toolbar_size); + if(selectitems.length > 0) selectitems[0].setAttribute('checked','true'); + } + } + + if(toolbar_mode) { + var x = document.getElementById('main.menu.admin.client.toolbars.mode.popup'); + if (x) { + var selectitems = x.getElementsByAttribute('value',toolbar_mode); + if(selectitems.length > 0) selectitems[0].setAttribute('checked','true'); + } + } + + if(toolbar_labelpos) { + var x = document.getElementById('main.menu.admin.client.toolbars.label_position.popup'); + if (x) { + var selectitems = x.getElementsByAttribute('value',"under"); + if(selectitems.length > 0) selectitems[0].setAttribute('checked','true'); + } } var network_meter = String( obj.data.hash.aous['ui.network.progress_meter'] ) == 'true'; @@ -71,7 +138,26 @@ main.menu.prototype = { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]. getService(Components.interfaces.nsIWindowMediator); - wm.getMostRecentWindow('eg_main').get_menu_perms(document); + var mainwin = wm.getMostRecentWindow('eg_main'); + mainwin.get_menu_perms(document); + var hotkeysets = mainwin.load_hotkey_sets(); + + var popupmenu = document.getElementById('main.menu.admin.client.hotkeys.current.popup'); + + for(var i = 0; i < hotkeysets.length; i++) { + var keysetname = hotkeysets[i]; + var menuitem = document.createElement('menuitem'); + if(offlineStrings.testString('hotkey.' + keysetname)) + menuitem.setAttribute('label',offlineStrings.getString('hotkey.' + keysetname)); + else + menuitem.setAttribute('label',keysetname); + menuitem.setAttribute('value',keysetname); + menuitem.setAttribute('type','radio'); + menuitem.setAttribute('name','menu_hotkey_current'); + menuitem.setAttribute('command','cmd_hotkeys_set'); + popupmenu.appendChild(menuitem); + } + JSAN.use('util.network'); var network = new util.network(); network.set_user_status(); @@ -535,14 +621,6 @@ main.menu.prototype = { } ], - 'cmd_toggle_buttonbar' : [ - ['oncommand'], - function() { - var x = document.getElementById('main_toolbar'); - if (x) x.hidden = ! x.hidden; - } - ], - 'cmd_toggle_meters' : [ ['oncommand'], function() { @@ -1325,6 +1403,112 @@ main.menu.prototype = { } } ], + 'cmd_hotkeys_toggle' : [ + ['oncommand'], + function() { + // Easy enough, toggle disabled on the keyset + var keyset = document.getElementById("menu_frame_keys"); + var disabled = (keyset.getAttribute("disabled") == "true") ? "false" : "true"; + keyset.setAttribute("disabled", disabled); + // Then find every menuitem/toolbarbutton for this command for a graphical hint + var controls = document.getElementsByAttribute("command","cmd_hotkeys_toggle"); + for(var i = 0; i < controls.length; i++) + controls[i].setAttribute("checked",disabled); + } + ], + 'cmd_hotkeys_set' : [ + ['oncommand'], + function(event) { + obj.set_menu_hotkeys(event.explicitOriginalTarget.getAttribute('value')); + } + ], + 'cmd_hotkeys_setworkstation' : [ + ['oncommand'], + function() { + xulG.pref.setCharPref('open-ils.menu.hotkeyset', obj.data.current_hotkeyset); + } + ], + 'cmd_hotkeys_clearworkstation' : [ + ['oncommand'], + function() { + if(xulG.pref.prefHasUserValue('open-ils.menu.hotkeyset')) + xulG.pref.clearUserPref('open-ils.menu.hotkeyset'); + } + ], + 'cmd_toolbar_set' : [ + ['oncommand'], + function(event) { + var newToolbar = event.explicitOriginalTarget.getAttribute('value'); + var toolbox = document.getElementById('main_toolbox'); + var toolbars = toolbox.getElementsByTagName('toolbar'); + for(var i = 0; i < toolbars.length; i++) { + if(toolbars[i].id == 'toolbar_' + newToolbar) + toolbars[i].setAttribute('hidden', 'false'); + else + toolbars[i].setAttribute('hidden', 'true'); + } + obj.toolbar = newToolbar; + } + ], + 'cmd_toolbar_mode_set' : [ + ['oncommand'], + function(event) { + var newMode = event.explicitOriginalTarget.getAttribute('value'); + var toolbox = document.getElementById('main_toolbox'); + var toolbars = toolbox.getElementsByTagName('toolbar'); + for(var i = 0; i < toolbars.length; i++) + toolbars[i].setAttribute("mode",newMode); + obj.toolbar_mode = newMode; + } + ], + 'cmd_toolbar_size_set' : [ + ['oncommand'], + function(event) { + var newSize = event.explicitOriginalTarget.getAttribute('value'); + var toolbox = document.getElementById('main_toolbox'); + var toolbars = toolbox.getElementsByTagName('toolbar'); + for(var i = 0; i < toolbars.length; i++) + toolbars[i].setAttribute("iconsize",newSize); + obj.toolbar_size = newSize; + } + ], + 'cmd_toolbar_label_position_set' : [ + ['oncommand'], + function(event) { + var altPosition = (event.explicitOriginalTarget.getAttribute('value') == "under"); + var toolbox = document.getElementById('main_toolbox'); + var toolbars = toolbox.getElementsByTagName('toolbar'); + for(var i = 0; i < toolbars.length; i++) { + if(altPosition) + addCSSClass(toolbars[i], 'labelbelow'); + else + removeCSSClass(toolbars[i], 'labelbelow'); + } + obj.toolbar_labelpos = (altPosition ? "under" : "side"); + } + ], + 'cmd_toolbar_setworkstation' : [ + ['oncommand'], + function() { + xulG.pref.setCharPref('open-ils.menu.toolbar', obj.toolbar); + xulG.pref.setCharPref('open-ils.menu.toolbar.iconsize', obj.toolbar_size); + xulG.pref.setCharPref('open-ils.menu.toolbar.mode', obj.toolbar_mode); + xulG.pref.setBoolPref('open-ils.menu.toolbar.labelbelow', (obj.toolbar_labelpos == "under")); + } + ], + 'cmd_toolbar_clearworkstation' : [ + ['oncommand'], + function() { + if(xulG.pref.prefHasUserValue('open-ils.menu.toolbar')) + xulG.pref.clearUserPref('open-ils.menu.toolbar'); + if(xulG.pref.prefHasUserValue('open-ils.menu.toolbar.iconsize')) + xulG.pref.clearUserPref('open-ils.menu.toolbar.iconsize'); + if(xulG.pref.prefHasUserValue('open-ils.menu.toolbar.mode')) + xulG.pref.clearUserPref('open-ils.menu.toolbar.mode'); + if(xulG.pref.prefHasUserValue('open-ils.menu.toolbar.labelbelow')) + xulG.pref.clearUserPref('open-ils.menu.toolbar.labelbelow'); + } + ], }; JSAN.use('util.controller'); @@ -1411,17 +1595,20 @@ main.menu.prototype = { 'command_tab' : function(event,url,params,content_params) { var newTab = false; - if(event && event.explicitOriginalTarget.nodeName == 'toolbarbutton' && event.explicitOriginalTarget.command == event.originalTarget.id) { + var myEvent = event; + if(event && event.sourceEvent) myEvent = event.sourceEvent; + // Note: The last event is not supposed to be myEvent in this if. + if(myEvent && myEvent.explicitOriginalTarget.nodeName.match(/toolbarbutton/) && myEvent.explicitOriginalTarget.command == event.originalTarget.id) { var value = xulG.pref.getIntPref('ui.key.accelKey'); switch(value) { case 17: - newTab = event.ctrlKey; + newTab = myEvent.ctrlKey; break; case 18: - newTab = event.altKey; + newTab = myEvent.altKey; break; case 224: - newTab = event.metaKey; + newTab = myEvent.metaKey; break; } try { @@ -1529,6 +1716,122 @@ commands: }, + 'set_menu_hotkeys' : function(hotkeyset) { + this.data.stash_retrieve(); + + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]. + getService(Components.interfaces.nsIWindowMediator); + var mainwin = wm.getMostRecentWindow('eg_main'); + var explicit = false; + JSAN.use('util.network'); + var network = new util.network(); + + if(hotkeyset) { // Explicit request + this.data.current_hotkeyset = hotkeyset; + this.data.stash('current_hotkeyset'); + explicit = true; + } + else { // Non-explicit request? + if(this.data.current_hotkeyset) // Previous hotkeyset? + hotkeyset = this.data.current_hotkeyset; // Use it + else { // No previous? We need to decide on one! + // Load the list so we know if what we are being asked to load is valid. + var hotkeysets = mainwin.load_hotkey_sets(); + if(!hotkeysets) return; // No sets = nothing to load. Which is probably an error, but meh. + hotkeysets.has = function(test) { + for(i = 0; i < this.length; i++) { + if(this[i] == test) return true; + } + return false; + }; + // Try workstation (pref) + hotkeyset = xulG.pref.getCharPref('open-ils.menu.hotkeyset'); + + // Nothing or nothing valid? + if(!hotkeyset || !hotkeysets.has(hotkeyset)) { + hotkeyset = this.data.hash.aous['ui.general.hotkeyset']; + } + // STILL nothing? Try Default. + if(!hotkeyset || !hotkeysets.has(hotkeyset)) { + if(hotkeysets.has('Default')) + hotkeyset = 'Default'; + else + return false; + } + // And save whatever we are using. + this.data.current_hotkeyset = hotkeyset; + this.data.stash('current_hotkeyset'); + } + } + // Clear out all the old hotkeys + var keyset = document.getElementById('menu_frame_keys'); + var main_menu = document.getElementById('main_menubar'); + if(keyset.hasChildNodes()) { + var menuitems = main_menu.getElementsByAttribute('key','*'); + while(menuitems.length > 0) { + var menuitem = menuitems[0]; + menuitem.removeAttribute('key'); + // Trick/force mozilla to re-evaluate the menuitem + // If you want to take this trick for use *anywhere* in *any* project, regardless of licensing, please do + // Because it was a PITA to figure out + menuitem.style.display = 'none'; // Hide the item to force menu to clear spot + menuitem.removeAttribute('acceltext'); // Remove acceltext to clear out hotkey hint text + menuitem.parentNode.openPopupAtScreen(0,0,false); // Tell menupopup to redraw itself + menuitem.parentNode.hidePopup(); // And then make it go away right away. + menuitem.style.removeProperty('display'); // Restore normal css display + } + while(keyset.hasChildNodes()) keyset.removeChild(keyset.childNodes[0]); + } + keyset_lines = mainwin.get_hotkey_array(hotkeyset); + // Next, fill the keyset + for(var line = 0; line < keyset_lines.length; line++) { + // Create and populate our <key> + var key_node = document.createElement('key'); + key_node.setAttribute('id',keyset_lines[line][0] + "_key"); + key_node.setAttribute('command',keyset_lines[line][0]); + key_node.setAttribute('modifiers',keyset_lines[line][1]); + // If keycode starts with VK_ we assume it is a key code. + // Key codes go in the keycode attribute + // Regular keys (like "i") go in the key attribute + if(keyset_lines[line][2].match(/^VK_/)) + key_node.setAttribute('keycode',keyset_lines[line][2]); + else + key_node.setAttribute('key',keyset_lines[line][2]); + // If a fourth option was specified, set keytext to it. + if(keyset_lines[line][3]) + key_node.setAttribute('keytext',keyset_lines[line][3]); + // Add the new node to the DOM + keyset.appendChild(key_node); + // And populate all the menu items that should now display it + var menuitems = main_menu.getElementsByAttribute('command',keyset_lines[line][0]); + for(var i = 0; i < menuitems.length; i++) { + menuitems[i].setAttribute('key', keyset_lines[line][0] + "_key"); + // Trick/force mozilla to re-evaluate the menuitem + menuitems[i].style.display = 'none'; // Hide the item to force menu to clear spot + menuitems[i].parentNode.openPopupAtScreen(0,0,false); // Tell menupopup to redraw itself + menuitems[i].parentNode.hidePopup(); // And then make it go away right away + menuitems[i].style.removeProperty('display'); // Restore normal css display + } + } + // If no keys, disable ability to toggle hotkeys (because why bother?) + var x = document.getElementById('cmd_hotkeys_toggle'); + if(x) { + if(keyset.hasChildNodes()) + x.removeAttribute('disabled'); + else + x.setAttribute('disabled', 'true'); + } + // Select the hotkey set in the menu + // This ensures that first window load OR remote window update shows properly + var hotkeylist = document.getElementById('main.menu.admin.client.hotkeys.current.popup'); + var selectitems = hotkeylist.getElementsByAttribute('value',hotkeyset); + if(selectitems.length > 0) selectitems[0].setAttribute('checked','true'); + // Tell other windows to update + if(explicit) { + network.set_user_status(); + } + }, + 'page_meter' : { 'node' : document.getElementById('page_progress'), 'on' : function() { diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul index f7c5c26d95..2dc7cb5ff1 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul @@ -62,7 +62,6 @@ <command id="cmd_manage_offline_xacts" /> <command id="cmd_download_patrons" /> <command id="cmd_local_admin" /> - <command id="cmd_toggle_buttonbar" /> <command id="cmd_toggle_meters" /> <command id="cmd_extension_manager" /> @@ -210,42 +209,28 @@ <command id="cmd_server_admin_config_weight_assoc" perm="ADMIN_CIRC_MATRIX_MATCHPOINT ADMIN_HOLD_MATRIX_MATCHPOINT VIEW_CIRC_MATRIX_MATCHPOINT VIEW_HOLD_MATRIX_MATCHPOINT" /> -</commandset> - -<!-- Accelerator Keys (Accessor Keys are in DTD's) --> -<keyset id="menu_frame_keys"> - <key id="new-window-key" modifiers="accel" key="N" command="cmd_new_window"/> - <key id="new-tab-key" modifiers="accel" key="T" command="cmd_new_tab"/> - <key id="open-key" modifiers="accel" key="O" command=""/> - <key id="save-key" modifiers="accel" key="S" command=""/> - <key id="close-tab-key" modifiers="accel" key="W" command="cmd_close_tab"/> - <key id="close-all-tabs-key" modifiers="accel,shift" key="W" command="cmd_close_all_tabs"/> - <key id="close-window-key" modifiers="accel" key="Q" command="cmd_close_window"/> - <key id="circ-checkout-key" keycode="VK_F1" command="cmd_circ_checkout"/> - <key id="circ-checkin-key" keycode="VK_F2" command="cmd_circ_checkin"/> - <key id="circ-renew-key" keycode="VK_F2" modifiers="control" command="cmd_circ_renew"/> - <key id="reprint-receipt-key" keycode="VK_F9" command="cmd_reprint"/> - <key id="search-opac-key" keycode="VK_F3" command="cmd_search_opac"/> - <key id="search-tcn-key" keycode="VK_F3" modifiers="shift" command="cmd_search_tcn"/> - <key id="patron-search-key" keycode="VK_F4" command="cmd_patron_search"/> - <key id="copy-status-key" keycode="VK_F5" command="cmd_copy_status"/> - <key id="circ-in-house-use-key" keycode="VK_F6" command="cmd_in_house_use"/> - <key id="circ-hold-capture-key" keycode="VK_F2" modifiers="shift" command="cmd_circ_hold_capture"/> - <key id="patron-register-key" keycode="VK_F1" modifiers="shift" command="cmd_patron_register"/> - <key id="retrieve_last_patron_key" keycode="VK_F8" command="cmd_retrieve_last_patron"/> - <key id="retrieve_last_record_key" keycode="VK_F8" modifiers="shift" command="cmd_retrieve_last_record"/> -</keyset> + <command id="cmd_hotkeys_toggle" /> + <command id="cmd_hotkeys_set" /> + <command id="cmd_hotkeys_setworkstation" /> + <command id="cmd_hotkeys_clearworkstation" /> + <command id="cmd_toolbar_set" /> + <command id="cmd_toolbar_setworkstation" /> + <command id="cmd_toolbar_clearworkstation" /> + <command id="cmd_toolbar_mode_set" /> + <command id="cmd_toolbar_size_set" /> + <command id="cmd_toolbar_label_position_set" /> +</commandset> <!-- The File menu on the main menu --> <menu id="main.menu.file" label="&staff.main.menu.file.label;" accesskey="&staff.main.menu.file.accesskey;" > <menupopup id="main.menu.file.popup"> - <menuitem label="&staff.main.menu.file.new.label;" accesskey="&staff.main.menu.file.new.accesskey;" key="new-window-key" command="cmd_new_window"/> - <menuitem label="&staff.main.menu.file.new_tab.label;" accesskey="&staff.main.menu.file.new_tab.accesskey;" key="new-tab-key" command="cmd_new_tab"/> + <menuitem label="&staff.main.menu.file.new.label;" accesskey="&staff.main.menu.file.new.accesskey;" command="cmd_new_window"/> + <menuitem label="&staff.main.menu.file.new_tab.label;" accesskey="&staff.main.menu.file.new_tab.accesskey;" command="cmd_new_tab"/> <menuseparator /> - <menuitem label="&staff.main.menu.file.close_tab.label;" accesskey="&staff.main.menu.file.close_tab.accesskey;" oldaccesskey="&staff.main.menu.file.close_tab.key;" key="close-tab-key" command="cmd_close_tab"/> - <menuitem label="&staff.main.menu.tabs.close;" accesskey="&staff.main.menu.tabs.close.accesskey;" key="close-all-tabs-key" command="cmd_close_all_tabs"/> - <menuitem label="&staff.main.menu.file.close.label;" accesskey="&staff.main.menu.file.close.accesskey;" oldaccesskey="&staff.main.menu.file.close.key;" key="close-window-key" command="cmd_close_window"/> + <menuitem label="&staff.main.menu.file.close_tab.label;" accesskey="&staff.main.menu.file.close_tab.accesskey;" command="cmd_close_tab"/> + <menuitem label="&staff.main.menu.tabs.close;" accesskey="&staff.main.menu.tabs.close.accesskey;" command="cmd_close_all_tabs"/> + <menuitem label="&staff.main.menu.file.close.label;" accesskey="&staff.main.menu.file.close.accesskey;" command="cmd_close_window"/> <menuseparator /> <menuitem label="&staff.main.menu.quit;" accesskey="&staff.main.menu.quit.accesskey;" command="cmd_shutdown"/> </menupopup> @@ -270,26 +255,26 @@ <!-- The Circulation menu on the main menu --> <menu id="main.menu.circ" label="&staff.main.menu.circ.label;" accesskey="&staff.main.menu.circ.accesskey;"> <menupopup id="main.menu.circ.popup"> - <menuitem label="&staff.main.menu.circ.checkout.label;" accesskey="&staff.main.menu.circ.checkout.accesskey;" key="circ-checkout-key" command="cmd_circ_checkout"/> - <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" key="circ-checkin-key" command="cmd_circ_checkin"/> - <menuitem label="&staff.main.menu.circ.renew.label;" accesskey="&staff.main.menu.circ.renew.accesskey;" key="circ-renew-key" command="cmd_circ_renew"/> - <menuitem label="&staff.main.menu.circ.patron_registration.label;" accesskey="&staff.main.menu.circ.patron_registration.accesskey;" key="patron-register-key" command="cmd_patron_register"/> + <menuitem label="&staff.main.menu.circ.checkout.label;" accesskey="&staff.main.menu.circ.checkout.accesskey;" command="cmd_circ_checkout"/> + <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/> + <menuitem label="&staff.main.menu.circ.renew.label;" accesskey="&staff.main.menu.circ.renew.accesskey;" command="cmd_circ_renew"/> + <menuitem label="&staff.main.menu.circ.patron_registration.label;" accesskey="&staff.main.menu.circ.patron_registration.accesskey;" command="cmd_patron_register"/> <menuitem label="&staff.main.menu.circ.staged_patrons.label;" accesskey="&staff.main.menu.circ.staged_patrons.accesskey;" command="cmd_staged_patrons"/> - <menuitem label="&staff.main.menu.circ.patron_retrieve.label;" accesskey="&staff.main.menu.circ.patron_retrieve.accesskey;" command="cmd_retrieve_last_patron" key="retrieve_last_patron_key"/> + <menuitem label="&staff.main.menu.circ.patron_retrieve.label;" accesskey="&staff.main.menu.circ.patron_retrieve.accesskey;" command="cmd_retrieve_last_patron"/> <menuseparator /> - <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" key="circ-hold-capture-key" command="cmd_circ_hold_capture"/> + <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/> <menuitem label="&staff.main.menu.circ.hold_pull.label;" accesskey="&staff.main.menu.circ.hold_pull.accesskey;" command="cmd_circ_hold_pull_list"/> <menuitem label="&staff.main.menu.circ.hold_browse.label;" command="cmd_browse_holds_shelf" accesskey="&staff.main.menu.circ.hold_browse.accesskey;"/> - <menuitem label="&staff.main.menu.circ.place_hold.label;" accesskey="&staff.main.menu.circ.place_hold.accesskey;" key="search-opac-key" command="cmd_search_opac"/> + <menuitem label="&staff.main.menu.circ.place_hold.label;" accesskey="&staff.main.menu.circ.place_hold.accesskey;" command="cmd_search_opac"/> <menuseparator /> - <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" key="copy-status-key" command="cmd_copy_status"/> - <menuitem label="&staff.main.menu.circ.barcode.retrieve_patron;" accesskey="&staff.main.menu.circ.barcode.retrieve_patron.accesskey;" key="circ-checkout-key" command="cmd_circ_checkout"/> + <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/> + <menuitem label="&staff.main.menu.circ.barcode.retrieve_patron;" accesskey="&staff.main.menu.circ.barcode.retrieve_patron.accesskey;" command="cmd_circ_checkout"/> <menuitem label="&staff.main.menu.circ.verify_credentials;" accesskey="&staff.main.menu.circ.verify_credentials.accesskey;" command="cmd_verify_credentials"/> <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/> - <menuitem label="&staff.main.menu.circ.in_house.label;" accesskey="&staff.main.menu.circ.in_house.accesskey;" key="circ-in-house-use-key" command="cmd_in_house_use"/> + <menuitem label="&staff.main.menu.circ.in_house.label;" accesskey="&staff.main.menu.circ.in_house.accesskey;" command="cmd_in_house_use"/> <menuitem command="cmd_scan_item_as_missing_pieces" label="&staff.main.menu.circ.scan_item_as_missing_pieces.label;" accesskey="&staff.main.menu.circ.scan_item_as_missing_pieces.accesskey;"/> <menuseparator /> - <menuitem label="&staff.main.menu.circ.reprint.label;" accesskey="&staff.main.menu.circ.reprint.accesskey;" key="reprint-receipt-key" command="cmd_reprint"/> + <menuitem label="&staff.main.menu.circ.reprint.label;" accesskey="&staff.main.menu.circ.reprint.accesskey;" command="cmd_reprint"/> <menuitem label="&staff.main.menu.circ.offline.label;" command="cmd_standalone" accesskey="&staff.main.menu.circ.offline.accesskey;"/> </menupopup> </menu> @@ -297,10 +282,10 @@ <!-- The Cataloging menu on the main menu --> <menu id="main.menu.cat" label="&staff.main.menu.cat.label;" accesskey="&staff.main.menu.cat.accesskey;"> <menupopup id="main.menu.cat.popup"> - <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" key="search-opac-key" command="cmd_search_opac"/> - <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" key="search-tcn-key" command="cmd_search_tcn" /> - <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" key="search-bib-id-key" command="cmd_search_bib_id" /> - <menuitem label="&staff.main.menu.cat.copy_status.label;" accesskey="&staff.main.menu.cat.copy_status.accesskey;" key="copy-status-key" command="cmd_copy_status"/> + <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/> + <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" /> + <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" /> + <menuitem label="&staff.main.menu.cat.copy_status.label;" accesskey="&staff.main.menu.cat.copy_status.accesskey;" command="cmd_copy_status"/> <menuseparator /> <!-- <menuitem disabled="true" label="&staff.main.menu.cat.dedup.label;" accesskey="&staff.main.menu.cat.dedup.accesskey;" command="cmd_broken"/> @@ -317,7 +302,7 @@ <menuitem command="cmd_marc_batch_edit" label="&staff.main.menu.cat.marc_batch_edit.label;" accesskey="&staff.main.menu.cat.marc_batch_edit.accesskey;"/> <menuseparator /> <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/> - <menuitem label="&staff.main.menu.cat.retrieve_last_record.label;" accesskey="&staff.main.menu.cat.retrieve_last_record.accesskey;" command="cmd_retrieve_last_record" key="retrieve_last_record_key"/> + <menuitem label="&staff.main.menu.cat.retrieve_last_record.label;" accesskey="&staff.main.menu.cat.retrieve_last_record.accesskey;" command="cmd_retrieve_last_record"/> <menuseparator /> <menuitem label="&staff.main.menu.cat.authority_manage.label;" accesskey="&staff.main.menu.cat.authority_manage.accesskey;" command="cmd_authority_manage"/> </menupopup> @@ -359,12 +344,12 @@ <!-- The Search menu on the main menu --> <menu id="main.menu.search" label="&staff.main.menu.search.label;" accesskey="&staff.main.menu.search.accesskey;"> <menupopup id="main.menu.search.popup"> - <menuitem label="&staff.main.menu.search.patrons.label;" accesskey="&staff.main.menu.search.patrons.accesskey;" key="patron-search-key" command="cmd_patron_search" /> - <menuitem label="&staff.main.menu.search.catalog.label;" accesskey="&staff.main.menu.search.catalog.accesskey;" key="search-opac-key" command="cmd_search_opac" /> - <menuitem label="&staff.main.menu.search.record.label;" accesskey="&staff.main.menu.search.record.accesskey;" key="search-tcn-key" command="cmd_search_tcn" /> - <menuitem label="&staff.main.menu.search.record_via_id.label;" accesskey="&staff.main.menu.search.record_via_id.accesskey;" key="search-bib-id-key" command="cmd_search_bib_id" /> - <menuitem label="&staff.main.menu.search.copies.label;" accesskey="&staff.main.menu.search.copies.accesskey;" key="copy-status-key" command="cmd_copy_status"/> - <menuitem label="&staff.main.menu.search.patrons_barcode.label;" accesskey="&staff.main.menu.search.patrons_barcode.accesskey;" key="circ-checkout-key" command="cmd_circ_checkout"/> + <menuitem label="&staff.main.menu.search.patrons.label;" accesskey="&staff.main.menu.search.patrons.accesskey;" command="cmd_patron_search" /> + <menuitem label="&staff.main.menu.search.catalog.label;" accesskey="&staff.main.menu.search.catalog.accesskey;" command="cmd_search_opac" /> + <menuitem label="&staff.main.menu.search.record.label;" accesskey="&staff.main.menu.search.record.accesskey;" command="cmd_search_tcn" /> + <menuitem label="&staff.main.menu.search.record_via_id.label;" accesskey="&staff.main.menu.search.record_via_id.accesskey;" command="cmd_search_bib_id" /> + <menuitem label="&staff.main.menu.search.copies.label;" accesskey="&staff.main.menu.search.copies.accesskey;" command="cmd_copy_status"/> + <menuitem label="&staff.main.menu.search.patrons_barcode.label;" accesskey="&staff.main.menu.search.patrons_barcode.accesskey;" command="cmd_circ_checkout"/> </menupopup> </menu> @@ -380,8 +365,8 @@ </menupopup> </menu> -<!-- The Help menu on the main menu --> -<menu id="main.menu.admin" label="&staff.main.menu.admin.label;" accesskey="&staff.main.menu.admin.accesskey;" old_accesskey="&staff.main.menu.admin.key;"> +<!-- The Admin menu on the main menu --> +<menu id="main.menu.admin" label="&staff.main.menu.admin.label;" accesskey="&staff.main.menu.admin.accesskey;"> <menupopup id="main.menu.admin.popup"> <menuitem id="oc_menuitem" label="&staff.main.menu.admin.change_session.label;" label_orig="&staff.main.menu.admin.change_session.label;" accesskey="O" command="cmd_change_session"/> @@ -389,6 +374,60 @@ <menuitem label="&staff.main.menu.admin.download_patrons.label;" accesskey="&staff.main.menu.admin.download_patrons.accesskey;" command="cmd_download_patrons"/> <menuseparator /> + <menu id="main.menu.admin.client" label="&staff.main.menu.admin.client.label;" accesskey="&staff.main.menu.admin.client.accesskey;"> + <menupopup id="main.menu.admin.client.popup"> + <menuitem command="cmd_local_admin_external_text_editor" label="&staff.server.admin.index.external_text_editor.label;" accesskey="&staff.server.admin.index.external_text_editor.accesskey;"/> + <menuitem label="&staff.server.admin.index.printer;" command="cmd_local_admin_printer"/> + <menuitem label="&staff.main.menu.admin.template_edit.label;" accesskey="&staff.main.menu.admin.template_edit.accesskey;" command="cmd_print_list_template_edit"/> + <menuitem label="&staff.server.admin.index.fonts_and_sounds;" command="cmd_local_admin_fonts_and_sounds"/> + <menu id="main.menu.admin.client.hotkeys" label="&staff.main.menu.admin.client.hotkeys;"> + <menupopup id="main.menu.admin.client.hotkeys.popup"> + <menuitem label="&staff.main.menu.admin.client.hotkeys.toggle.label;" accesskey="&staff.main.menu.admin.client.hotkeys.toggle.accesskey;" type="checkbox" autocheck="false" command="cmd_hotkeys_toggle"/> + <menu id="main.menu.admin.client.hotkeys.current" label="&staff.main.menu.admin.client.hotkeys.current;"> + <menupopup id="main.menu.admin.client.hotkeys.current.popup"> + </menupopup> + </menu> + <menuseparator /> + <menuitem label="&staff.main.menu.admin.client.hotkeys.setworkstation.label;" accesskey="&staff.main.menu.admin.client.hotkeys.setworkstation.accesskey;" command="cmd_hotkeys_setworkstation"/> + <menuitem label="&staff.main.menu.admin.client.hotkeys.clearworkstation.label;" accesskey="&staff.main.menu.admin.client.hotkeys.clearworkstation.accesskey;" command="cmd_hotkeys_clearworkstation"/> + </menupopup> + </menu> + <menu id="main.menu.admin.client.toolbars" label="&staff.main.menu.admin.client.toolbars;"> + <menupopup id="main.menu.admin.client.toolbars.popup"> + <menu id="main.menu.admin.client.toolbars.current" label="&staff.main.menu.admin.client.toolbars.current;"> + <menupopup id="main.menu.admin.client.toolbars.current.popup"> + <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.none;" value="none" command="cmd_toolbar_set" checked="true"/> + <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.circ;" value="circ" command="cmd_toolbar_set"/> + <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.cat;" value="cat" command="cmd_toolbar_set"/> + </menupopup> + </menu> + <menu id="main.menu.admin.client.toolbars.mode" label="&staff.main.menu.admin.client.toolbars.mode;"> + <menupopup id="main.menu.admin.client.toolbars.mode.popup"> + <menuitem name="toolbar_mode" type="radio" label="&staff.main.menu.admin.client.toolbars.mode.both;" value="both" command="cmd_toolbar_mode_set" checked="true"/> + <menuitem name="toolbar_mode" type="radio" label="&staff.main.menu.admin.client.toolbars.mode.icons;" value="icons" command="cmd_toolbar_mode_set"/> + <menuitem name="toolbar_mode" type="radio" label="&staff.main.menu.admin.client.toolbars.mode.text;" value="text" command="cmd_toolbar_mode_set"/> + </menupopup> + </menu> + <menu id="main.menu.admin.client.toolbars.label_position" label="&staff.main.menu.admin.client.toolbars.label_position;"> + <menupopup id="main.menu.admin.client.toolbars.label_position.popup"> + <menuitem name="toolbar_label_position" type="radio" label="&staff.main.menu.admin.client.toolbars.label_position.side;" value="side" command="cmd_toolbar_label_position_set" checked="true"/> + <menuitem name="toolbar_label_position" type="radio" label="&staff.main.menu.admin.client.toolbars.label_position.under;" value="under" command="cmd_toolbar_label_position_set"/> + </menupopup> + </menu> + <menu id="main.menu.admin.client.toolbars.size" label="&staff.main.menu.admin.client.toolbars.size;"> + <menupopup id="main.menu.admin.client.toolbars.size.popup"> + <menuitem name="toolbar_size" type="radio" label="&staff.main.menu.admin.client.toolbars.size.large;" value="large" command="cmd_toolbar_size_set" checked="true"/> + <menuitem name="toolbar_size" type="radio" label="&staff.main.menu.admin.client.toolbars.size.small;" value="small" command="cmd_toolbar_size_set"/> + </menupopup> + </menu> + <menuseparator /> + <menuitem label="&staff.main.menu.admin.client.toolbars.setworkstation.label;" accesskey="&staff.main.menu.admin.client.toolbars.setworkstation.accesskey;" command="cmd_toolbar_setworkstation"/> + <menuitem label="&staff.main.menu.admin.client.toolbars.clearworkstation.label;" accesskey="&staff.main.menu.admin.client.toolbars.clearworkstation.accesskey;" command="cmd_toolbar_clearworkstation"/> + </menupopup> + </menu> + + </menupopup> + </menu> <menu id="main.menu.admin.local" label="&staff.main.menu.admin.local_admin.label;"> <menupopup id="main.menu.admin.local.popup"> <menuitem command="cmd_local_admin_age_overdue_circulations_to_lost" label="&staff.server.admin.index.age_overdue_circulations_to_lost.label;" accesskey="&staff.server.admin.index.age_overdue_circulations_to_lost.accesskey;"/> @@ -398,17 +437,13 @@ <menuitem label="&staff.server.admin.index.copy_locations;" command="cmd_local_admin_copy_locations"/> <menuitem label="&staff.main.menu.admin.local_admin.conify.copy_location_order.label;" command="cmd_local_admin_copy_location_order"/> <menuitem label="&staff.main.menu.admin.local_admin.copy_template.label;" accesskey="&staff.main.menu.admin.local_admin.copy_template.accesskey;" command="cmd_local_admin_copy_template"/> - <menuitem command="cmd_local_admin_external_text_editor" label="&staff.server.admin.index.external_text_editor.label;" accesskey="&staff.server.admin.index.external_text_editor.accesskey;"/> <menuitem label="&staff.main.menu.admin.local_admin.conify.idl_field_doc.label;" command="cmd_local_admin_idl_field_doc"/> - <menuitem label="&staff.server.admin.index.fonts_and_sounds;" command="cmd_local_admin_fonts_and_sounds"/> <menuitem label="&staff.main.menu.admin.local_admin.conify.grp_penalty_threshold.label;" command="cmd_local_admin_grp_penalty_threshold"/> <menuitem label="&staff.main.menu.admin.local_admin.hold_matrix_matchpoint.label;" command="cmd_local_admin_hold_matrix_matchpoint"/> <menuitem label="&staff.server.admin.index.library_settings;" command="cmd_local_admin_lib_settings"/> <menuitem label="&staff.server.admin.index.non_cataloged_types;" command="cmd_local_admin_non_cat_types"/> <menuitem label="&staff.main.menu.admin.local_admin.conify.action_trigger.label;" command="cmd_local_admin_action_trigger"/> <menuitem label="&staff.main.menu.admin.local_admin.patrons_due_refunds.label;" accesskey="&staff.main.menu.admin.local_admin.patrons_due_refunds.accesskey;" command="cmd_local_admin_patrons_due_refunds"/> - <menuitem label="&staff.server.admin.index.printer;" command="cmd_local_admin_printer"/> - <menuitem label="&staff.main.menu.admin.template_edit.label;" accesskey="&staff.main.menu.admin.template_edit.accesskey;" command="cmd_print_list_template_edit"/> <menuitem command="cmd_local_admin_do_not_auto_attempt_print_setting" label="&staff.server.admin.index.do_not_auto_attempt_print_setting.label;" accesskey="&staff.server.admin.index.do_not_auto_attempt_print_setting.accesskey;"/> <menuitem label="&staff.server.admin.index.reports;" command="cmd_local_admin_reports"/> <menuitem label="&staff.main.menu.admin.local_admin.conify.standing_penalty.label;" command="cmd_local_admin_standing_penalty"/> @@ -482,7 +517,6 @@ <menuseparator /> <menuitem label="&staff.main.menu.admin.user_edit.label;" accesskey="&staff.main.menu.admin.user_edit.accesskey;" command="cmd_adv_user_edit"/> - <menuitem label="&staff.main.menu.admin.toggle_buttonbar.label;" accesskey="&staff.main.menu.admin.toggle_buttonbar.accesskey;" command="cmd_toggle_buttonbar"/> <menuitem label="&staff.main.menu.admin.toggle_meters.label;" accesskey="&staff.main.menu.admin.toggle_meters.accesskey;" command="cmd_toggle_meters"/> <menuseparator /> <menu id="main.menu.admin.sub" accesskey="&staff.main.menu.admin.developer.accesskey;" label="&staff.main.menu.admin.developer.label;"> @@ -495,7 +529,7 @@ <menuitem label="&staff.main.menu.admin.survey_wizard.label;" accesskey="&staff.main.menu.admin.survey_wizard.accesskey;" command="cmd_survey_wizard"/> <menuseparator /> <menuitem label="&staff.main.menu.admin.public_opac.label;" command="cmd_public_opac" accesskey="&staff.main.menu.admin.public_opac.accesskey;"/> - <menuitem label="&staff.main.menu.admin.cmd_test.label;" old_accesskey="T" command="cmd_test"/> + <menuitem label="&staff.main.menu.admin.cmd_test.label;" command="cmd_test"/> <menuitem label="&staff.main.menu.admin.xuleditor.label;" accesskey="&staff.main.menu.admin.xuleditor.accesskey;" command="cmd_xuleditor"/> <menuitem label="&staff.main.menu.admin.fieldmapper.label;" accesskey="&staff.main.menu.admin.fieldmapper.accesskey;" command="cmd_fieldmapper"/> <menuitem label="&staff.main.menu.admin.cmd_console.label;" accesskey="&staff.main.menu.admin.cmd_console.accesskey;" command="cmd_console"/> diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_overlay.xul b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_overlay.xul index fdbed1da78..48f8b5ea32 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_overlay.xul +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_overlay.xul @@ -22,7 +22,7 @@ <tab hidden="true" /> </tabs> </arrowscrollbox> - <toolbarbutton id="main_tabs_closebutton" class="tabs-closebutton close-button" oncommand="g.menu.close_tab()" /> + <toolbarbutton id="main_tabs_closebutton" class="tabs-closebutton close-button" command="cmd_close_tab" /> </hbox> <tabpanels id="main_panels" flex="1"> <tabpanel /> @@ -72,39 +72,138 @@ <menu id="main.menu.admin" /> <menu id="main.menu.help" /> </menubar> - <toolbar id="main_toolbar" hidden="true"> - <toolbarbutton id="tb_checkout" + <toolbar id="toolbar_circ" hidden="true"> + <toolbarbutton command="cmd_circ_checkout" - image="chrome://open_ils_staff_client/skin/media/images/Arrow-rightup-small.png" label="&staff.main.button_bar.check_out.label;" - accesskey="&staff.main.button_bar.check_out.accesskey;" /> - <toolbarbutton id="tb_checkin" + tooltiptext="&staff.main.button_bar.check_out.label;" + type="menu-button"> + <menupopup tooltiptext=""> <!-- Little note on this first one - The blank tooltiptext stops the button's tooltiptext from applying to the menu and items --> + <menuitem label="&staff.main.menu.circ.checkout.label;" accesskey="&staff.main.menu.circ.checkout.accesskey;" command="cmd_circ_checkout"/> + <menuitem label="&staff.main.menu.circ.in_house.label;" accesskey="&staff.main.menu.circ.in_house.accesskey;" command="cmd_in_house_use"/> + </menupopup> + </toolbarbutton> + <toolbarbutton command="cmd_circ_checkin" - image="chrome://open_ils_staff_client/skin/media/images/center.png" label="&staff.main.button_bar.check_in.label;" - accesskey="&staff.main.button_bar.check_in.accesskey;" /> + tooltiptext="&staff.main.button_bar.check_in.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/> + <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/> + </menupopup> + </toolbarbutton> <toolbarseparator /> - <toolbarbutton id="tb_search_opac" + <toolbarbutton command="cmd_search_opac" - image="chrome://open_ils_staff_client/skin/media/images/Search_Items_32x32.png" label="&staff.main.button_bar.search_opac.label;" - accesskey="&staff.main.button_bar.search_opac.accesskey;" /> - <toolbarbutton id="tb_item_status" + tooltiptext="&staff.main.button_bar.search_opac.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/> + <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" /> + <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" /> + </menupopup> + </toolbarbutton> + <toolbarbutton command="cmd_copy_status" - image="chrome://open_ils_staff_client/skin/media/images/HILLBLU_libro_32x32.png" label="&staff.main.button_bar.item_status.label;" - accesskey="&staff.main.button_bar.item_status.accesskey;" /> + tooltiptext="&staff.main.button_bar.item_status.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/> + <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/> + </menupopup> + </toolbarbutton> <toolbarseparator /> - <toolbarbutton id="tb_patron_search" + <toolbarbutton command="cmd_patron_search" - image="chrome://open_ils_staff_client/skin/media/images/HILLBLU_lente_32x32.png" label="&staff.main.button_bar.patron_search.label;" - accesskey="&staff.main.button_bar.patron_search.accesskey;" /> - <toolbarbutton id="tb_patron_registration" + tooltiptext="&staff.main.button_bar.patron_search.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.search.patrons.label;" accesskey="&staff.main.menu.search.patrons.accesskey;" command="cmd_patron_search" /> + <menuitem label="&staff.main.menu.search.patrons_barcode.label;" accesskey="&staff.main.menu.search.patrons_barcode.accesskey;" command="cmd_circ_checkout"/> + </menupopup> + </toolbarbutton> + <toolbarbutton command="cmd_patron_register" - image="chrome://open_ils_staff_client/skin/media/images/HILLBLU_famiglia_32x32.png" label="&staff.main.button_bar.patron_registration.label;" - accesskey="&staff.main.button_bar.patron_registration.accesskey;" /> + tooltiptext="&staff.main.button_bar.patron_registration.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.circ.patron_registration.label;" accesskey="&staff.main.menu.circ.patron_registration.accesskey;" command="cmd_patron_register"/> + <menuitem label="&staff.main.menu.circ.staged_patrons.label;" accesskey="&staff.main.menu.circ.staged_patrons.accesskey;" command="cmd_staged_patrons"/> + </menupopup> + </toolbarbutton> + <toolbarspacer flex="1" /> + <toolbarbutton + command="cmd_hotkeys_toggle" + type="checkbox" + autocheck="false" + label="&staff.main.button_bar.hotkeys_toggle;" + tooltiptext="&staff.main.button_bar.hotkeys_toggle;"/> + </toolbar> + <toolbar id="toolbar_cat" hidden="true"> + <toolbarbutton + command="cmd_circ_checkin" + label="&staff.main.button_bar.check_in.label;" + tooltiptext="&staff.main.button_bar.check_in.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/> + <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/> + </menupopup> + </toolbarbutton> + <toolbarseparator /> + <toolbarbutton + command="cmd_search_opac" + label="&staff.main.button_bar.search_opac.label;" + tooltiptext="&staff.main.button_bar.search_opac.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/> + <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" /> + <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" /> + </menupopup> + </toolbarbutton> + <toolbarbutton + command="cmd_copy_status" + label="&staff.main.button_bar.item_status.label;" + tooltiptext="&staff.main.button_bar.item_status.label;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/> + <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/> + </menupopup> + </toolbarbutton> + <toolbarseparator /> + <toolbarbutton + command="cmd_create_marc" + label="&staff.main.button_bar.create_marc;" + tooltiptext="&staff.main.button_bar.create_marc;" + type="menu-button"> + <menupopup tooltiptext=""> + <menuitem label="&staff.main.menu.cat.create_marc.label;" accesskey="&staff.main.menu.cat.create_marc.accesskey;" command="cmd_create_marc"/> + <menuitem label="&staff.main.menu.cat.z39_50_import.label;" accesskey="&staff.main.menu.cat.z39_50_import.accesskey;" command="cmd_z39_50_import"/> + <menuitem label="&staff.main.menu.cat.vandelay.label;" command="cmd_open_vandelay"/> + </menupopup> + </toolbarbutton> + <toolbarbutton + command="cmd_authority_manage" + label="&staff.main.button_bar.authority_manage;" + tooltiptext="&staff.main.button_bar.authority_manage;" /> + <toolbarbutton + command="cmd_retrieve_last_record" + label="&staff.main.button_bar.retrieve_last_record;" + tooltiptext="&staff.main.button_bar.retrieve_last_record;" /> + <toolbarspacer flex="1" /> + <toolbarbutton + command="cmd_hotkeys_toggle" + type="checkbox" + autocheck="false" + label="&staff.main.button_bar.hotkeys_toggle;" + tooltiptext="&staff.main.button_bar.hotkeys_toggle;"/> </toolbar> </toolbox> diff --git a/Open-ILS/xul/staff_client/chrome/content/util/file.js b/Open-ILS/xul/staff_client/chrome/content/util/file.js index 85eed97ced..48b5e591e0 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/file.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/file.js @@ -44,6 +44,10 @@ util.file.prototype = { this._file = this.dirService.get( "UChrm", Components.interfaces.nsIFile ); //this._file = this.dirService.get( "ProfD", Components.interfaces.nsIFile ); break; + case 'skin' : + this._file = this.dirService.get( "AChrom", Components.interfaces.nsIFile ); + this._file.append("skin"); + break; default: case 'chrome' : this._file = this.dirService.get( "AChrom", Components.interfaces.nsIFile ); diff --git a/Open-ILS/xul/staff_client/chrome/content/util/network.js b/Open-ILS/xul/staff_client/chrome/content/util/network.js index 5cba3852c6..836a0cece7 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/network.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/network.js @@ -317,6 +317,7 @@ util.network.prototype = { if(!offlinestrings) w.document.getElementById('offlineStrings'); if(permlist) w.g.menu.set_menu_access(permlist); + w.g.menu.set_menu_hotkeys(); if(data.list.au.length > 1) { addCSSClass(w.document.getElementById('main_tabbox'),'operator_change'); x.setAttribute('label', offlineStrings.getFormattedString('menu.cmd_chg_session.operator.label', [data.list.au[1].usrname()]) ); diff --git a/Open-ILS/xul/staff_client/chrome/locale/en-US/offline.properties b/Open-ILS/xul/staff_client/chrome/locale/en-US/offline.properties index 14a169a841..06452b09fd 100644 --- a/Open-ILS/xul/staff_client/chrome/locale/en-US/offline.properties +++ b/Open-ILS/xul/staff_client/chrome/locale/en-US/offline.properties @@ -295,3 +295,5 @@ menu.replace_tab.unsaved_data_warning=This tab may have unsaved data. Replace it menu.close_window.unsaved_data_warning=This window may have unsaved data. Close it anyway? menu.logoff.unsaved_data_warning=This session may have unsaved data. Logoff anyway? menu.shutdown.unsaved_data_warning=This application may have unsaved data. Exit it anyway? +hotkeys.Default=Default +hotkeys.None=No Hotkeys diff --git a/Open-ILS/xul/staff_client/chrome/skin/global.css b/Open-ILS/xul/staff_client/chrome/skin/global.css index 16fa9bcd28..24a949baf3 100644 --- a/Open-ILS/xul/staff_client/chrome/skin/global.css +++ b/Open-ILS/xul/staff_client/chrome/skin/global.css @@ -77,3 +77,65 @@ help { -moz-binding: url('chrome://open_ils_staff_client/content/main/bindings.x .marc_data { min-width: 500px; } .resizable { } .test_class { } + +#main_toolbox toolbar[mode="icons"] .toolbarbutton-text { + display:none; +} + +#main_toolbox toolbar[mode="text"] .toolbarbutton-icon { + display:none; +} + +#main_toolbox toolbarbutton { + -moz-image-region: rect( 0px 32px 32px 0px ); /* Top Left 32x32 icon */ + -moz-box-align: center; + -moz-box-pack: center; + -moz-box-orient: horizontal; + padding: 6px; +} + +#main_toolbox [iconsize="small"] toolbarbutton { + -moz-image-region: rect( 0px 48px 16px 32px ); /* Top right 16x16 icon */ +} + +#main_toolbox toolbarbutton[disabled="true"] { + -moz-image-region: rect( 32px 32px 64px 0px ); /* Left Second 32x32 icon */ +} + +#main_toolbox [iconsize="small"] toolbarbutton[disabled="true"] { + -moz-image-region: rect( 16px 48px 32px 32px ); /* Right Second 16x16 icon */ +} + +#main_toolbox toolbarbutton[checked="true"] { + -moz-image-region: rect( 64px 32px 96px 0px ); /* Left Third 32x32 icon */ +} + +#main_toolbox [iconsize="small"] toolbarbutton[checked="true"] { + -moz-image-region: rect( 32px 48px 48px 32px ); /* Right Third 16x16 icon */ +} + +#main_toolbox toolbarbutton[checked="true"][disabled="true"] { + -moz-image-region: rect( 96px 32px 128px 0px ); /* Left Fourth 32x32 icon */ +} + +#main_toolbox [iconsize="small"] toolbarbutton[checked="true"][disabled="true"] { + -moz-image-region: rect( 48px 48px 64px 32px ); /* Right Fourth 16x16 icon */ +} + +#main_toolbox .labelbelow toolbarbutton { + -moz-box-orient: vertical; +} + +/* Define icon files by command, not by id. */ +#main_toolbox toolbarbutton[command="cmd_circ_checkout"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/Arrow-rightup-small_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_circ_checkin"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/center_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_search_opac"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/Search_Items_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_copy_status"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_libro_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_patron_search"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_lente_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_patron_register"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_famiglia_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_hotkeys_toggle"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/hotkeys_disable_toolbar.png"); } + +/* Temp icons because tsbere is lazy - Someone please find/make new ones ;) */ +#main_toolbox toolbarbutton[command="cmd_create_marc"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_indici_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_authority_manage"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_indici_toolbar.png"); } +#main_toolbox toolbarbutton[command="cmd_retrieve_last_record"] { list-style-image: url("chrome://open_ils_staff_client/skin/media/images/HILLBLU_indici_toolbar.png"); } diff --git a/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Default.keyset b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Default.keyset new file mode 100644 index 0000000000..b954b5a4da --- /dev/null +++ b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Default.keyset @@ -0,0 +1,20 @@ +# Default hotkey set +cmd_new_window,accel,N +cmd_new_tab,accel,T +cmd_close_tab,accel,W +cmd_close_all_tabs,accel shift,W +cmd_close_window,accel,Q +cmd_circ_checkout,,VK_F1 +cmd_circ_checkin,,VK_F2 +cmd_circ_renew,accel,VK_F2 +cmd_reprint,,VK_F9 +cmd_search_opac,,VK_F3 +cmd_search_tcn,shift,VK_F3 +cmd_patron_search,,VK_F4 +cmd_copy_status,,VK_F5 +cmd_in_house_use,,VK_F6 +cmd_circ_hold_capture,shift,VK_F2 +cmd_patron_register,shift,VK_F1 +cmd_retrieve_last_patron,,VK_F8 +cmd_retrieve_last_record,shift,VK_F8 + diff --git a/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Minimal.keyset b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Minimal.keyset new file mode 100644 index 0000000000..bbf4efe7b2 --- /dev/null +++ b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/Minimal.keyset @@ -0,0 +1,7 @@ +# Minimal (window/tab commands only) hotkey set +# May be a useful starting point for new sets +cmd_new_window,accel,N +cmd_new_tab,accel,T +cmd_close_tab,accel,W +cmd_close_all_tabs,accel shift,W +cmd_close_window,accel,Q diff --git a/Open-ILS/xul/staff_client/chrome/skin/hotkeys/None.keyset b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/None.keyset new file mode 100644 index 0000000000..079efe0e38 --- /dev/null +++ b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/None.keyset @@ -0,0 +1 @@ +# No Hotkeys. Please leave blank. diff --git a/Open-ILS/xul/staff_client/chrome/skin/hotkeys/README b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/README new file mode 100644 index 0000000000..f0e6f7ac1e --- /dev/null +++ b/Open-ILS/xul/staff_client/chrome/skin/hotkeys/README @@ -0,0 +1,33 @@ +The files in this folder define hotkey sets. + +Each hotkey set should be name.keyset, where name is the name of the set. + +hotkey.properites in the locale directory can set an alternate or translated name for a hotkey set. +You should use format like: +hotkey.name=newname + +The backend code uses the filename derived name for everything else. + + +In the files a # denotes a comment, at the start of a line or in the middle. + +Otherwise, the file format is as follows: + +command,modifiers,key/keycode[,keytext] + +command is the ID of the <command> node the hotkey will trigger. + +modifiers is a space-delimited set of modifiers (if any): + shift + alt + control + meta + accel + any + +Prefer accel over control/meta as it picks the appropriate one for the user's platform. +any makes any listed before it optional. + +key/keycode is the key or virtual keycode for the hotkey. VK_ constants are treated as keycodes, everything else is a key. + +keytext is an optional setting for specifying the hint text to appear on the menu items. diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/Arrow-rightup-small_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/Arrow-rightup-small_toolbar.png new file mode 100644 index 0000000000..74a8d5dc10 Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/Arrow-rightup-small_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_famiglia_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_famiglia_toolbar.png new file mode 100644 index 0000000000..8bf96242e5 Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_famiglia_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_indici_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_indici_toolbar.png new file mode 100644 index 0000000000..16b297e0b2 Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_indici_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_lente_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_lente_toolbar.png new file mode 100644 index 0000000000..e859c9cb37 Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_lente_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_libro_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_libro_toolbar.png new file mode 100644 index 0000000000..defa8b3838 Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/HILLBLU_libro_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/Search_Items_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/Search_Items_toolbar.png new file mode 100644 index 0000000000..f245d0801a Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/Search_Items_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/center_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/center_toolbar.png new file mode 100644 index 0000000000..da8e487cce Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/center_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/hotkeys_disable_toolbar.png b/Open-ILS/xul/staff_client/chrome/skin/media/images/hotkeys_disable_toolbar.png new file mode 100644 index 0000000000..cedeaa0c5f Binary files /dev/null and b/Open-ILS/xul/staff_client/chrome/skin/media/images/hotkeys_disable_toolbar.png differ diff --git a/Open-ILS/xul/staff_client/chrome/skin/media/images/licenses.txt b/Open-ILS/xul/staff_client/chrome/skin/media/images/licenses.txt index 244c452b93..4da3fe4eac 100644 --- a/Open-ILS/xul/staff_client/chrome/skin/media/images/licenses.txt +++ b/Open-ILS/xul/staff_client/chrome/skin/media/images/licenses.txt @@ -1,30 +1,41 @@ -HILLBLU_lente_32x32 derived from: +HILLBLU_lente_32x32 and HILLBLU_lente_toolbar derived from: http://commons.wikimedia.org/wiki/File:HILLBLU_lente.png Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". -HILLBLU_indici_32x32 derived from: +HILLBLU_indici_32x32 and HILLBLU_indici_toolbar derived from: http://commons.wikimedia.org/wiki/File:HILLBLU_indici.png Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". -HILLBLU_libro_32x32 derived from: +HILLBLU_libro_32x32 and HILLBLU_libro_toolbar derived from: http://commons.wikimedia.org/wiki/File:HILLBLU_libro.png Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". -HILLBLU_famiglia_32x32 derived from: +HILLBLU_famiglia_32x32 and HILLBLU_famiglia_toolbar derived from: http://commons.wikimedia.org/wiki/File:HILLBLU_famiglia.png Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". -Arrow-right-up-small.png derived from: +Arrow-right-up-small.png and Arrow-right-up-small_toolbar.png derived from: http://commons.wikimedia.org/wiki/File:Arrow-rightup-small.svg Copyright © Vadim Plessky, all rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, and this list of conditions; Redistributions in binary form must reproduce the above copyright notice, and this list of conditions in the documentation and/or other materials provided with the distribution; Neither the name of Vadim Plessky nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -Center.png derived from: +center.png and center_toolbar.png derived from: http://commons.wikimedia.org/wiki/File:Center.svg Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". -Search_Items_32x32 derived from: +Search_Items_32x32 and Search_Items_toolbar derived from: http://commons.wikimedia.org/wiki/File:HILLBLU_lente.png AND http://commons.wikimedia.org/wiki/File:HILLBLU_libro.png Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". + +hotkeys_disable_toolbar.png derived from: + +Nuvola 1.0 (KDE 3.x icon set) (nuvola) + link: http://www.icon-king.com/projects/nuvola/ + license: LGPL 2.1 + license link: http://creativecommons.org/licenses/LGPL/2.1/ + formats: png + subdirectory: open_icon_library-devel/icons/nuvola + +preferences-desktop-keyboard-3.png diff --git a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js index 91812d91eb..19dcd2a91f 100644 --- a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js +++ b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js @@ -17,4 +17,12 @@ pref("open-ils.repository.revision","$Revision$"); pref("open-ils.repository.date","$Date$"); pref("open-ils.repository.id","$Id$"); +// Base (empty) prefs for local menu and toolbar customizations +// NOTE: IF YOU SET DEFAULTS ON THESE THE ORG UNIT SETTING VARIANT WON'T WORK +pref("open-ils.menu.hotkeyset", ""); +pref("open-ils.menu.toolbar", ""); +// For now these are only workstation level and are safe to set defaults on if desired +pref("open-ils.menu.toolbar.iconsize", ""); +pref("open-ils.menu.toolbar.mode", ""); +pref("open-ils.menu.toolbar.labelbelow", false); pref("open-ils.toolbar.defaultnewtab", false);