/** * Copyright JS Foundation and other contributors, http://js.foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ RED.userSettings = (function() { var trayWidth = 700; var settingsVisible = false; var panes = []; function addPane(options) { panes.push(options); } function show(initialTab) { if (settingsVisible) { return; } if (!RED.user.hasPermission("settings.write")) { RED.notify(RED._("user.errors.settings"),"error"); return; } settingsVisible = true; var trayOptions = { title: RED._("menu.label.userSettings"), buttons: [ { id: "node-dialog-ok", text: RED._("common.label.close"), class: "primary", click: function() { RED.tray.close(); } } ], resize: function(dimensions) { trayWidth = dimensions.width; }, open: function(tray) { var trayBody = tray.find('.red-ui-tray-body'); var settingsContent = $('
').appendTo(trayBody); var tabContainer = $('
',{class:"red-ui-settings-tabs-container"}).appendTo(settingsContent); $('',{id:"user-settings-tabs"}).appendTo(tabContainer); var settingsTabs = RED.tabs.create({ id: "user-settings-tabs", vertical: true, onchange: function(tab) { setTimeout(function() { tabContents.children().hide(); $("#" + tab.id).show(); if (tab.pane.focus) { tab.pane.focus(); } },50); } }); var tabContents = $('
',{class:"red-ui-settings-tabs-content"}).appendTo(settingsContent); panes.forEach(function(pane) { settingsTabs.addTab({ id: "red-ui-settings-tab-"+pane.id, label: pane.title, pane: pane }); pane.get().hide().appendTo(tabContents); }); settingsContent.i18n(); settingsTabs.activateTab("red-ui-settings-tab-"+(initialTab||'view')) $("#red-ui-sidebar-shade").show(); }, close: function() { settingsVisible = false; panes.forEach(function(pane) { if (pane.close) { pane.close(); } }); $("#red-ui-sidebar-shade").hide(); }, show: function() {} } if (trayWidth !== null) { trayOptions.width = trayWidth; } RED.tray.show(trayOptions); } function localeToName(lc) { var name = RED._("languages."+lc); return {text: (name ? name : lc), val: lc}; } function compText(a, b) { return a.text.localeCompare(b.text); } var viewSettings = [ { options: [ {setting:"editor-language",local: true, label:"menu.label.view.language",options:function(done){ done([{val:'',text:RED._('menu.label.view.browserDefault')}].concat(RED.settings.theme("languages").map(localeToName).sort(compText))) }}, ] }, // { // options: [ // {setting:"theme", label:"Theme",options:function(done){ done([{val:'',text:'default'}].concat(RED.settings.theme("themes"))) }}, // ] // }, { title: "menu.label.view.view", options: [ {setting:"view-store-zoom",label:"menu.label.view.storeZoom", default: false, toggle:true, onchange: function(val) { if (!val) { RED.settings.removeLocal("zoom-level")}}}, {setting:"view-store-position",label:"menu.label.view.storePosition", default: false, toggle:true, onchange: function(val) { if (!val) { RED.settings.removeLocal("scroll-positions")}}}, ] }, { title: "menu.label.view.grid", options: [ {setting:"view-show-grid",oldSetting:"menu-menu-item-view-show-grid",label:"menu.label.view.showGrid", default: true, toggle:true,onchange:"core:toggle-show-grid"}, {setting:"view-snap-grid",oldSetting:"menu-menu-item-view-snap-grid",label:"menu.label.view.snapGrid", default: true, toggle:true,onchange:"core:toggle-snap-grid"}, {setting:"view-grid-size",label:"menu.label.view.gridSize",type:"number",default: 20, onchange:RED.view.gridSize} ] }, { title: "menu.label.nodes", options: [ {setting:"view-node-status",oldSetting:"menu-menu-item-status",label:"menu.label.displayStatus",default: true, toggle:true,onchange:"core:toggle-status"}, {setting:"view-node-show-label",label:"menu.label.showNodeLabelDefault",default: true, toggle:true} ] }, { title: "menu.label.other", options: [ {setting:"view-show-tips",oldSettings:"menu-menu-item-show-tips",label:"menu.label.showTips",toggle:true,default:true,onchange:"core:toggle-show-tips"}, {setting:"view-show-welcome-tours",label:"menu.label.showWelcomeTours",toggle:true,default:true} ] } ]; var allSettings = {}; function createViewPane() { var pane = $('
'); var currentEditorSettings = RED.settings.get('editor') || {}; currentEditorSettings.view = currentEditorSettings.view || {}; viewSettings.forEach(function(section) { if (section.title) { $('

').text(RED._(section.title)).appendTo(pane); } section.options.forEach(function(opt) { var initialState; if (opt.local) { initialState = localStorage.getItem(opt.setting); } else { initialState = currentEditorSettings.view[opt.setting]; } var row = $('
').appendTo(pane); var input; if (opt.toggle) { input = $('').appendTo(row).find("input"); input.prop('checked',initialState); } else if (opt.options) { $('').appendTo(row); var select = $('').appendTo(row); if (typeof opt.options === 'function') { opt.options(function(options) { options.forEach(function(opt) { var val = opt; var text = opt; if (typeof opt !== 'string') { val = opt.val; text = opt.text; } $('