init
This commit is contained in:
292
nv/html/dwv/viewers/static/appgui.js
Normal file
292
nv/html/dwv/viewers/static/appgui.js
Normal file
@@ -0,0 +1,292 @@
|
||||
/**
|
||||
* Application GUI.
|
||||
*/
|
||||
|
||||
// Default colour maps.
|
||||
dwv.tool.colourMaps = {
|
||||
"plain": dwv.image.lut.plain,
|
||||
"invplain": dwv.image.lut.invPlain,
|
||||
"rainbow": dwv.image.lut.rainbow,
|
||||
"hot": dwv.image.lut.hot,
|
||||
"hotiron": dwv.image.lut.hot_iron,
|
||||
"pet": dwv.image.lut.pet,
|
||||
"hotmetalblue": dwv.image.lut.hot_metal_blue,
|
||||
"pet20step": dwv.image.lut.pet_20step
|
||||
};
|
||||
// Default window level presets.
|
||||
dwv.tool.defaultpresets = {};
|
||||
// Default window level presets for CT.
|
||||
dwv.tool.defaultpresets.CT = {
|
||||
"mediastinum": {"center": 40, "width": 400},
|
||||
"lung": {"center": -500, "width": 1500},
|
||||
"bone": {"center": 500, "width": 2000},
|
||||
"brain": {"center": 40, "width": 80},
|
||||
"head": {"center": 90, "width": 350}
|
||||
};
|
||||
|
||||
//decode query
|
||||
dwv.utils.decodeQuery = dwv.utils.base.decodeQuery;
|
||||
|
||||
// Window
|
||||
dwv.gui.getWindowSize = function () {
|
||||
return { 'width': ($('#pageMain').width() - 360), 'height': ($('#pageMain').height() - 75) };
|
||||
};
|
||||
// Prompt
|
||||
dwv.gui.prompt = dwv.gui.base.prompt;
|
||||
// Progress
|
||||
dwv.gui.displayProgress = function (percent) {
|
||||
// jquery-ui progress bar
|
||||
if( percent <= 100 ) {
|
||||
$("#progressbar").progressbar({ value: percent });
|
||||
}
|
||||
};
|
||||
// Focus
|
||||
dwv.gui.focusImage = dwv.gui.base.focusImage;
|
||||
// get element
|
||||
dwv.gui.getElement = dwv.gui.base.getElement;
|
||||
// refresh
|
||||
dwv.gui.refreshElement = dwv.gui.base.refreshElement;
|
||||
// Slider
|
||||
dwv.gui.Slider = function (app)
|
||||
{
|
||||
this.append = function ()
|
||||
{
|
||||
// nothing to do
|
||||
};
|
||||
this.initialise = function ()
|
||||
{
|
||||
var min = app.getImage().getDataRange().min;
|
||||
var max = app.getImage().getDataRange().max;
|
||||
|
||||
// jquery-ui slider
|
||||
$( ".thresholdLi" ).slider({
|
||||
range: true,
|
||||
min: min,
|
||||
max: max,
|
||||
values: [ min, max ],
|
||||
slide: function( event, ui ) {
|
||||
app.onChangeMinMax(
|
||||
{'min':ui.values[0], 'max':ui.values[1]});
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
// plot
|
||||
dwv.gui.plot = function (div, data, options)
|
||||
{
|
||||
var plotOptions = {
|
||||
"bars": { "show": true },
|
||||
"grid": { "backgroundcolor": null },
|
||||
"xaxis": { "show": true },
|
||||
"yaxis": { "show": false }
|
||||
};
|
||||
if (typeof options !== "undefined" &&
|
||||
typeof options.markings !== "undefined") {
|
||||
plotOptions.grid.markings = options.markings;
|
||||
}
|
||||
$.plot(div, [ data ], plotOptions);
|
||||
};
|
||||
|
||||
function toggle(dialogId)
|
||||
{
|
||||
if( $(dialogId).dialog('isOpen') ) {
|
||||
$(dialogId).dialog('close');
|
||||
}
|
||||
else {
|
||||
$(dialogId).dialog('open');
|
||||
}
|
||||
}
|
||||
// post process table
|
||||
dwv.gui.postProcessTable = dwv.gui.base.postProcessTable;
|
||||
// Tags table
|
||||
dwv.gui.DicomTags = dwv.gui.base.DicomTags;
|
||||
// DrawList table
|
||||
dwv.gui.DrawList = dwv.gui.base.DrawList;
|
||||
|
||||
// Loaders
|
||||
dwv.gui.Loadbox = dwv.gui.base.Loadbox;
|
||||
// File loader
|
||||
dwv.gui.FileLoad = dwv.gui.base.FileLoad;
|
||||
// File loader
|
||||
dwv.gui.FolderLoad = dwv.gui.base.FolderLoad;
|
||||
// Url loader
|
||||
dwv.gui.UrlLoad = dwv.gui.base.UrlLoad;
|
||||
|
||||
// Toolbox
|
||||
dwv.gui.Toolbox = function (app)
|
||||
{
|
||||
var base = new dwv.gui.base.Toolbox(app);
|
||||
|
||||
this.setup = function(list)
|
||||
{
|
||||
base.setup(list);
|
||||
|
||||
// toolbar
|
||||
|
||||
// open
|
||||
var openSpan = document.createElement("span");
|
||||
openSpan.className = "ui-icon ui-icon-plus";
|
||||
var open = document.createElement("button");
|
||||
open.appendChild(openSpan);
|
||||
open.title = dwv.i18n("basics.open");
|
||||
open.onclick = function() { toggle(".openData"); };
|
||||
// toolbox
|
||||
var toolboxSpan = document.createElement("span");
|
||||
toolboxSpan.className = "ui-icon ui-icon-wrench";
|
||||
var toolbox = document.createElement("button");
|
||||
toolbox.appendChild(toolboxSpan);
|
||||
toolbox.title = dwv.i18n("basics.toolbox");
|
||||
toolbox.onclick = function() { toggle(".toolList"); };
|
||||
// history
|
||||
var historySpan = document.createElement("span");
|
||||
historySpan.className = "ui-icon ui-icon-clipboard";
|
||||
var history = document.createElement("button");
|
||||
history.appendChild(historySpan);
|
||||
history.title = dwv.i18n("basics.history");
|
||||
history.onclick = function() { toggle(".history"); };
|
||||
// DICOM tags
|
||||
var tagsSpan = document.createElement("span");
|
||||
tagsSpan.className = "ui-icon ui-icon-tag";
|
||||
var tags = document.createElement("button");
|
||||
tags.appendChild(tagsSpan);
|
||||
tags.title = dwv.i18n("basics.dicomTags");
|
||||
tags.onclick = function() { toggle(".tags"); };
|
||||
// draw list
|
||||
var drawListSpan = document.createElement("span");
|
||||
drawListSpan.className = "ui-icon ui-icon-pencil";
|
||||
var drawList = document.createElement("button");
|
||||
drawList.appendChild(drawListSpan);
|
||||
drawList.title = dwv.i18n("basics.drawList");
|
||||
drawList.onclick = function() { toggle(".drawList"); };
|
||||
// image
|
||||
var imageSpan = document.createElement("span");
|
||||
imageSpan.className = "ui-icon ui-icon-image";
|
||||
var image = document.createElement("button");
|
||||
image.appendChild(imageSpan);
|
||||
image.title = dwv.i18n("basics.image");
|
||||
image.onclick = function() { toggle(".layerDialog"); };
|
||||
// info
|
||||
var infoSpan = document.createElement("span");
|
||||
infoSpan.className = "ui-icon ui-icon-info";
|
||||
var info = document.createElement("button");
|
||||
info.appendChild(infoSpan);
|
||||
info.title = dwv.i18n("basics.info");
|
||||
info.onclick = app.onToggleInfoLayer;
|
||||
// help
|
||||
var helpSpan = document.createElement("span");
|
||||
helpSpan.className = "ui-icon ui-icon-help";
|
||||
var help = document.createElement("button");
|
||||
help.appendChild(helpSpan);
|
||||
help.title = dwv.i18n("basics.help");
|
||||
help.onclick = function() { toggle(".help"); };
|
||||
|
||||
var node = app.getElement("toolbar");
|
||||
node.appendChild(open);
|
||||
node.appendChild(toolbox);
|
||||
node.appendChild(history);
|
||||
node.appendChild(tags);
|
||||
node.appendChild(drawList);
|
||||
node.appendChild(image);
|
||||
node.appendChild(info);
|
||||
node.appendChild(help);
|
||||
|
||||
// apply button style
|
||||
$("button").button();
|
||||
|
||||
// save state button
|
||||
var saveButton = document.createElement("button");
|
||||
saveButton.appendChild(document.createTextNode(dwv.i18n("basics.downloadState")));
|
||||
// save state link
|
||||
var toggleSaveState = document.createElement("a");
|
||||
toggleSaveState.onclick = app.onStateSave;
|
||||
toggleSaveState.download = "state.json";
|
||||
toggleSaveState.id = "download-state";
|
||||
toggleSaveState.className += "download-state";
|
||||
toggleSaveState.appendChild(saveButton);
|
||||
// add to openData window
|
||||
node = app.getElement("openData");
|
||||
node.appendChild(toggleSaveState);
|
||||
};
|
||||
this.display = function (bool)
|
||||
{
|
||||
base.display(bool);
|
||||
};
|
||||
this.initialise = function (list)
|
||||
{
|
||||
base.initialise(list);
|
||||
};
|
||||
};
|
||||
|
||||
//Window/level
|
||||
dwv.gui.WindowLevel = dwv.gui.base.WindowLevel;
|
||||
// Draw
|
||||
dwv.gui.Draw = dwv.gui.base.Draw;
|
||||
// ColourTool
|
||||
dwv.gui.ColourTool = dwv.gui.base.ColourTool;
|
||||
// ZoomAndPan
|
||||
dwv.gui.ZoomAndPan = dwv.gui.base.ZoomAndPan;
|
||||
// Scroll
|
||||
dwv.gui.Scroll = dwv.gui.base.Scroll;
|
||||
// Filter
|
||||
dwv.gui.Filter = dwv.gui.base.Filter;
|
||||
|
||||
// Filter: threshold
|
||||
dwv.gui.Threshold = dwv.gui.base.Threshold;
|
||||
// Filter: sharpen
|
||||
dwv.gui.Sharpen = dwv.gui.base.Sharpen;
|
||||
// Filter: sobel
|
||||
dwv.gui.Sobel = dwv.gui.base.Sobel;
|
||||
|
||||
// Undo/redo
|
||||
dwv.gui.Undo = dwv.gui.base.Undo;
|
||||
// Help
|
||||
dwv.gui.appendHelpHtml = dwv.gui.base.appendHelpHtml;
|
||||
// Version
|
||||
dwv.gui.appendVersionHtml = dwv.gui.base.appendVersionHtml;
|
||||
|
||||
// special setup
|
||||
dwv.gui.setup = function () {
|
||||
$(".toggleInfoLayer").button({ icons:
|
||||
{ primary: "ui-icon-comment" }, text: false,
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
// create dialogs
|
||||
$(".openData").dialog({ position:
|
||||
{my: "left top", at: "left top", of: "#pageMain"},
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
$(".toolList").dialog({ position:
|
||||
{my: "left top+180", at: "left top", of: "#pageMain"},
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
$(".history").dialog({ position:
|
||||
{my: "left top+350", at: "left top", of: "#pageMain"},
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
$(".tags").dialog({ position:
|
||||
{my: "right top", at: "right top", of: "#pageMain"},
|
||||
autoOpen: false, width: 500, height: 590,
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
$(".drawList").dialog({ position:
|
||||
{my: "right top", at: "right top", of: "#pageMain"},
|
||||
autoOpen: false, width: 500, height: 590,
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
$(".help").dialog({ position:
|
||||
{my: "right top", at: "right top", of: "#pageMain"},
|
||||
autoOpen: false, width: 500, height: 590,
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
|
||||
// image dialog
|
||||
$(".layerDialog").dialog({ position:
|
||||
{my: "left+320 top", at: "left top", of: "#pageMain"},
|
||||
appendTo: "#dwv"
|
||||
});
|
||||
// default size
|
||||
$(".layerDialog").dialog({ width: "auto", resizable: false });
|
||||
// Resizable but keep aspect ratio
|
||||
// TODO it seems to add a border that bothers getting the cursor position...
|
||||
//$("#layerContainer").resizable({ aspectRatio: true });
|
||||
};
|
||||
Reference in New Issue
Block a user