view release on metacpan or search on metacpan
socialcalc/Changes.txt view on Meta::CPAN
Changed order of display on Show Source/doNewSheet for iPhone bug.
Added Math1 functions: ABS, ACOS, ASIN, ATAN, COS, DEGREES, EVEN, EXP, FACT, INT,
LN, LOG10, ODD, RADIANS, SIN, TAN
Added ZeroArgFunctions: FALSE(), NA(), NOW(), PI(), TODAY(), TRUE()
Added Math2Functions: ATAN2, MOD, POWER, TRUNC
2008-01-30:
Removed uses of "for (i in arrayobj)" for Prototype, etc., compatibility
2008-01-31:
Added clipboard to sheet, as well as to save/load sheet
Bumped save version to 1.4
Added copy, cut, paste, loadclipboard, clearclipboard commands
Added clipboard to Sweet SocialCalc source tab, with undo
2008-02-02:
Made clipboard global to SocialCalc object.
Updated simpleedit8.pl to have command list of socialcalc2demo1
2008-02-05:
Added merge and unmerge commands.
Added insertcol/row commands.
2008-02-06:
Added deletecol/row commands.
Added special values to formula parsing, like #REF!.
socialcalc/Changes.txt view on Meta::CPAN
Bumped to 0.6.1
2008-02-09:
Removed substr(-numbers), which are not handled correctly by IE, in formula1.js, formatnumber2.js.
Fixed a bug with "+coord" - changed "sheetdata" to "sheet".
2008-02-10:
Made UI Sugar-like with more tabs, grayscale scrollbars.
2008-02-11:
Added ConvertSaveToOtherFormat and ConvertOtherFormatToSave to give multiple clipboard views
2008-02-13:
Added sort command.
2008-02-14:
Add primitive graph command.
2008-02-15:
Released 0.6.3.
socialcalc/index.mt view on Meta::CPAN
SocialCalc.Popup.LocalizeString = SocialCalc.LocalizeString; // needed for localization
var spreadsheet = new SocialCalc.SpreadsheetControl();
var savestr = document.getElementById("savestr");
spreadsheet.InitializeSpreadsheetControl("tableeditor", 0, 0, 0);
spreadsheet.ExecuteCommand('redisplay', '');
spreadsheet.ExecuteCommand('set sheet defaulttextvalueformat text-wiki');
spreadsheet.ExportCallback = function(s) {
alert(SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "csv"));
}
// Dummy loadsheet for testing:
SocialCalc.Formula.SheetCache.LoadSheet = function(sheetname) {
var sfscc = SocialCalc.Formula.SheetCache.constants;
var doload = confirm("Loadsheet: "+sheetname+"?");
if (true) {
return {status: doload?sfscc.ok:sfscc.loading, str: "cell:A1:v:4\ncell:A2:t:Sheet\\c "+sheetname+"\ncell:A3:vtf:ndt:0:NOW()\ncell:B1:v:5\ncell:B2:v:6\nname:AONE::A1\nname:ATWO::A2\nname:RANGE::B1\\cB2\nname:TEST::A3",
recalc: true};
}
socialcalc/index.mt view on Meta::CPAN
if (editor.range.hasrange) {
sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+
":"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);
}
else {
sel = editor.ecell.coord;
}
parseobj = new SocialCalc.Parse("copy "+sel+" all");
SocialCalc.ExecuteSheetCommand(editor.context.sheetobj, parseobj, true); // note: not queued!!!??!!
SocialCalc.Clipboard.clipboard.loadedByCtrlC = true; // remember this clipboard data was from ctrl-c
ta.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "tab");
ta.style.display = "block";
ta.focus();
ta.select();
// var range = document.selection.createRange();
var range = window.getSelection().getRangeAt(0);
range.execCommand("copy");
window.setTimeout(function() {
var s = SocialCalc.GetSpreadsheetControlObject();
var editor = s.editor;
socialcalc/socialcalc-3.js view on Meta::CPAN
sheet.fonthash={};
sheet.colors=[];
sheet.colorhash={};
sheet.borderstyles=[];
sheet.borderstylehash={};
sheet.cellformats=[];
sheet.cellformathash={};
sheet.valueformats=[];
sheet.valueformathash={};
sheet.copiedfrom = ""; // if a range, then this was loaded from a saved range as clipboard content
sheet.changes = new SocialCalc.UndoStack();
sheet.renderneeded = false;
sheet.changedrendervalues = true; // if true, spans and/or fonts have changed (set by ExecuteSheetCommand & GetStyle)
sheet.recalcchangedavalue = false; // true if a recalc resulted in a change to a cell's calculated value
}
socialcalc/socialcalc-3.js view on Meta::CPAN
// name:name:description:value - name definition, name in uppercase, with value being "B5", "A1:B7", or "=formula";
// description and value are encoded.
// font:fontnum:value - text of font definition (style weight size family) for font fontnum
// "*" for "style weight", size, or family, means use default (first look to sheet, then builtin)
// color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum
// border:bordernum:value - text of border definition (thickness style color) for border bordernum
// layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum (* for default):
// vertical-alignment:vavalue;padding:topval rightval bottomval leftval;
// cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum
// valueformat:vformatnum:value - text of number format (see FormatValueForDisplay) for valueformat vformatnum (changed in v1.2)
// clipboardrange:upperleftcoord:bottomrightcoord - ignored -- from wikiCalc
// clipboard:coord:type:value:... - ignored -- from wikiCalc
//
// If this is clipboard contents, then there is also information to facilitate pasting:
//
// copiedfrom:upperleftcoord:bottomrightcoord - range from which this was copied
//
// Functions:
SocialCalc.ParseSheetSave = function(savedsheet,sheetobj) {
var lines=savedsheet.split(/\r\n|\n/);
var parts=[];
socialcalc/socialcalc-3.js view on Meta::CPAN
sheetobj.valueformathash[v]=parts[1]-0;
break;
case "version":
break;
case "copiedfrom":
sheetobj.copiedfrom = parts[1]+":"+parts[2];
break;
case "clipboardrange": // in save versions up to 1.3. Ignored.
case "clipboard":
break;
case "":
break;
default:
alert(scc.s_pssUnknownLineType+" '"+parts[0]+"'");
throw scc.s_pssUnknownLineType+" '"+parts[0]+"'";
break;
}
socialcalc/socialcalc-3.js view on Meta::CPAN
"defaultcolor", "defaultbgcolor", "defaultfont", "defaultlayout"];
SocialCalc.sheetfieldsxlatshort = ["tf", "ntf", "tvf", "ntvf", "color", "bgcolor", "font", "layout"];
SocialCalc.sheetfieldsxlatxlt = ["cellformat", "cellformat", "valueformat", "valueformat",
"color", "color", "font", "layout"];
//
// sheetstr = SocialCalc.CreateSheetSave(sheetobj, range, canonicalize)
//
// Creates a text representation of the sheetobj data.
// If the range is present then only those cells are saved
// (as clipboard data with "copiedfrom" set).
//
SocialCalc.CreateSheetSave = function(sheetobj, range, canonicalize) {
var cell, cr1, cr2, row, col, coord, attrib, line, value, formula, i, t, r, b, l, name, blanklen;
var result=[];
var prange;
sheetobj.CanonicalizeSheet(canonicalize || SocialCalc.Constants.doCanonicalizeSheet);
socialcalc/socialcalc-3.js view on Meta::CPAN
// treated as encoded (newline => \n, \ => \b, : => \c).
//
// The commands are in the forms:
//
// set sheet attributename value (plus lastcol and lastrow)
// set 22 attributename value
// set B attributename value
// set A1 attributename value1 value2... (see each attribute in code for details)
// set A1:B5 attributename value1 value2...
// erase/copy/cut/paste/fillright/filldown A1:B5 all/formulas/format
// loadclipboard save-encoded-clipboard-data
// clearclipboard
// merge C3:F3
// unmerge C3
// insertcol/insertrow C5
// deletecol/deleterow C5:E7
// movepaste/moveinsert A1:B5 A8 all/formulas/format (if insert, destination must be in same rows or columns or else paste done)
// sort cr1:cr2 col1 up/down col2 up/down col3 up/down
// name define NAME definition
// name desc NAME description
// name delete NAME
// recalc
socialcalc/socialcalc-3.js view on Meta::CPAN
case "erase":
case "cut":
sheet.renderneeded = true;
sheet.changedrendervalues = true;
what = cmd.NextToken();
rest = cmd.RestOfString();
ParseRange();
if (saveundo) changes.AddUndo("changedrendervalues"); // to take care of undone pasted spans
if (cmd1=="cut") { // save copy of whole thing before erasing
if (saveundo) changes.AddUndo("loadclipboard", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));
SocialCalc.Clipboard.clipboard = SocialCalc.CreateSheetSave(sheet, what);
}
for (row = cr1.row; row <= cr2.row; row++) {
for (col = cr1.col; col <= cr2.col; col++) {
cr = SocialCalc.crToCoord(col, row);
cell=sheet.GetAssuredCell(cr);
if (saveundo) changes.AddUndo("set "+cr+" all", sheet.CellToString(cell));
if (rest=="all") {
delete sheet.cells[cr];
}
socialcalc/socialcalc-3.js view on Meta::CPAN
delete cell.displaystring;
}
}
attribs.needsrecalc = "yes";
break;
case "copy":
what = cmd.NextToken();
rest = cmd.RestOfString();
if (saveundo) changes.AddUndo("loadclipboard", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));
SocialCalc.Clipboard.clipboard = SocialCalc.CreateSheetSave(sheet, what);
break;
case "loadclipboard":
rest = cmd.RestOfString();
if (saveundo) changes.AddUndo("loadclipboard", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));
SocialCalc.Clipboard.clipboard = SocialCalc.decodeFromSave(rest);
break;
case "clearclipboard":
if (saveundo) changes.AddUndo("loadclipboard", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));
SocialCalc.Clipboard.clipboard = "";
break;
case "paste":
sheet.renderneeded = true;
sheet.changedrendervalues = true;
if (saveundo) changes.AddUndo("changedrendervalues"); // to take care of undone pasted spans
what = cmd.NextToken();
rest = cmd.RestOfString();
ParseRange();
if (!SocialCalc.Clipboard.clipboard) {
break;
}
clipsheet = new SocialCalc.Sheet(); // load clipboard contents as another sheet
clipsheet.ParseSheetSave(SocialCalc.Clipboard.clipboard);
cliprange = SocialCalc.ParseRange(clipsheet.copiedfrom);
coloffset = cr1.col - cliprange.cr1.col; // get sizes, etc.
rowoffset = cr1.row - cliprange.cr1.row;
numcols = cliprange.cr2.col - cliprange.cr1.col + 1;
numrows = cliprange.cr2.row - cliprange.cr1.row + 1;
if (cr1.col+numcols-1 > attribs.lastcol) attribs.lastcol = cr1.col+numcols-1;
if (cr1.row+numrows-1 > attribs.lastrow) attribs.lastrow = cr1.row+numrows-1;
for (row = cr1.row; row < cr1.row+numrows; row++) {
for (col = cr1.col; col < cr1.col+numcols; col++) {
socialcalc/socialcalc-3.js view on Meta::CPAN
else {
return false;
}
}
// *************************************
//
// Clipboard Object:
//
// This is a single object.
// Stores the clipboard, which is shared by all active sheets.
// Like the undo stack, it does not persist from one editing session to another.
//
// *************************************
SocialCalc.Clipboard = {
// properties:
clipboard: "" // empty or string in save format with "copiedfrom:" set to a range
}
// *************************************
//
// RenderContext class:
//
// *************************************
socialcalc/socialcalc2demo-0-8-1.html view on Meta::CPAN
'are used to determine the order and the direction. '+
'<br><br> '+
'There is a <b>Comment</b> tab for accessing the optional comment text for the currently selected cell.'+
'<br><br> '+
'The <b>Name</b> tab lets you set named ranges that may be used in formulas.'+
'<br><br> '+
'The <b>Graph</b> tab displays a graph representation of selected cells. It has its own Help button. '+
'<br><br> '+
'The <b>Plain</b> tab shows the sheet rendered without the grid or editing controls. '+
'<br><br> '+
'The <b>Clipboard</b> tab lets you view the SocialCalc clipboard in tab-delimited format, and optionally reload it with new data. '+
'Tab-delimited format is what some browsers and Excel put on the clipboard when you select and then copy cells in a table. '+
'The Clipboard tab also supports CSV format and the SocialCalc Save format (useful for copying from one sheet to another). '+
'Reloading from the SocialCalc Save format must be in correct format -- errors can cause SocialCalc to behave badly.<br><br>'+
'Pressing Ctrl-V when on the Edit tab and not editing a cell assumes that Tab-delimited data is on the regular '+
'clipboard, loads it into the SocialCalc clipboard, and then "pastes" it starting at the current cell. '+
'This is an easy way to copy data from a web page into a spreadsheet. '+
'Similarly, Ctrl-C loads the SocialCalc clipboard and the system clipboard. '+
'Ctrl-V differs from the Paste button in that it only pastes values and formulas, and not formats. '+
'<br><br> '+
'Right now this code is mainly being developed to run under control of a native Python '+
'application running on the OLPC XO. '+
'This version, though, can also be run directly in a browser. '+
'<br><br> '+
'When the program encounters an error, it may display a message at the bottom of the screen. '+
'You can click on the message to erase it. '+
'<br><br> '+
'Comments can be sent to "socialcalc" at "softwaregarden.com". '+
socialcalc/socialcalc2demo10.html view on Meta::CPAN
'The <b>Name</b> tab lets you set named ranges that may be used in formulas.'+
'<br><br> '+
'The <b>Graph</b> tab displays a very simple bar graph representation of the cells currently selected as a range '+
'(either in a single row across or column down). '+
'If the range is a single row or column, and if the row above (or column to the left) has values, those values are used as labels. '+
'Otherwise the cell coordinates are used (e.g., B5). '+
'This is a very early, minimal implementation. '+
'<br><br> '+
'The <b>Plain</b> tab shows the sheet rendered without the grid or editing controls. '+
'<br><br> '+
'The <b>Clipboard</b> tab lets you view the SocialCalc clipboard in tab-delimited format, and optionally reload it with new data. '+
'Tab-delimited format is what a browser and Excel put on the clipboard when you select and then copy cells in a table. '+
'The Clipboard tab also supports CSV format and the SocialCalc Save format (useful for copying from one sheet to another). '+
'Reloading from the SocialCalc Save format must be in correct format -- errors can cause SocialCalc to behave badly. '+
'Pressing Ctrl-V when on the Edit tab and not editing a cell assumes that Tab-delimited data is on the regular '+
'clipboard, loads it into the SocialCalc clipboard, and then "pastes" it starting at the current cell. '+
'This is an easy way to copy data from a web page into a spreadsheet. '+
'<br><br> '+
'Right now this code is mainly being developed to run under control of a native Python '+
'application running on the OLPC XO. '+
'This version, though, can also be run directly in a browser. '+
'<br><br> '+
'When the program encounters an error, it may display a message at the bottom of the screen. '+
'You can click on the message to erase it. '+
'<br><br> '+
'Comments can be sent to "socialcalc" at "softwaregarden.com". '+
socialcalc/socialcalcconstants.js view on Meta::CPAN
s_loc_borders_off: "Borders Off",
s_loc_borders_on: "Borders On",
s_loc_bottom: "Bottom",
s_loc_bottom_border: "Bottom Border",
s_loc_cell_settings: "CELL SETTINGS",
s_loc_csv_format: "CSV format",
s_loc_cancel: "Cancel",
s_loc_category: "Category",
s_loc_center: "Center",
s_loc_clear: "Clear",
s_loc_clear_socialcalc_clipboard: "Clear SocialCalc Clipboard",
s_loc_clipboard: "Clipboard",
s_loc_color: "Color",
s_loc_column_: "Column ",
s_loc_comment: "Comment",
s_loc_copy: "Copy",
s_loc_custom: "Custom",
s_loc_cut: "Cut",
s_loc_default: "Default",
s_loc_default_alignment: "Default Alignment",
s_loc_default_column_width: "Default Column Width",
s_loc_default_font: "Default Font",
s_loc_default_format: "Default Format",
s_loc_default_padding: "Default Padding",
s_loc_delete: "Delete",
s_loc_delete_column: "Delete Column",
s_loc_delete_contents: "Delete Contents",
s_loc_delete_row: "Delete Row",
s_loc_description: "Description",
s_loc_display_clipboard_in: "Display Clipboard in",
s_loc_down: "Down",
s_loc_edit: "Edit",
s_loc_existing_names: "Existing Names",
s_loc_family: "Family",
s_loc_fill_down: "Fill Down",
s_loc_fill_right: "Fill Right",
s_loc_font: "Font",
s_loc_format: "Format",
s_loc_formula: "Formula",
s_loc_function_list: "Function List",
socialcalc/socialcalcconstants.js view on Meta::CPAN
s_loc_horizontal: "Horizontal",
s_loc_insert_column: "Insert Column",
s_loc_insert_row: "Insert Row",
s_loc_italic: "Italic",
s_loc_last_sort: "Last Sort",
s_loc_left: "Left",
s_loc_left_border: "Left Border",
s_loc_link: "Link",
s_loc_link_input_box: "Link Input Box",
s_loc_list: "List",
s_loc_load_socialcalc_clipboard_with_this: "Load SocialCalc Clipboard With This",
s_loc_major_sort: "Major Sort",
s_loc_manual: "Manual",
s_loc_merge_cells: "Merge Cells",
s_loc_middle: "Middle",
s_loc_minor_sort: "Minor Sort",
s_loc_move_insert: "Move Insert",
s_loc_move_paste: "Move Paste",
s_loc_multiXline_input_box: "Multi-line Input Box",
s_loc_name: "Name",
s_loc_names: "Names",
socialcalc/socialcalcserver.pl view on Meta::CPAN
// start everything
SocialCalc.Constants.defaultImagePrefix = "$jsdir$imagedir";
SocialCalc.Popup.imagePrefix = "$jsdir$imagedir";
var spreadsheet = new SocialCalc.SpreadsheetControl();
spreadsheet.InitializeSpreadsheetControl("tableeditor", 0, 0, 0);
SocialCalc.SheetCommandInfo.CmdExtensionCallbacks.docmd = {func:docmdext, data:spreadsheet};
SocialCalc.SheetCommandInfo.CmdExtensionCallbacks.loadclipboard = {func:doloadclipboardext, data:spreadsheet};
var savestr = document.getElementById("sheetdata").value;
var parts = spreadsheet.DecodeSpreadsheetSave(savestr);
if (parts) {
if (parts.sheet) {
spreadsheet.sheet.ResetSheet();
spreadsheet.ParseSheetSave(savestr.substring(parts.sheet.start, parts.sheet.end));
}
if (parts.edit) {
spreadsheet.editor.LoadEditorSettings(savestr.substring(parts.edit.start, parts.edit.end));
socialcalc/socialcalcserver.pl view on Meta::CPAN
function docmdext (name, data, sheet, cmd, saveundo) {
var cmdstr = cmd.RestOfString();
data.editor.EditorScheduleSheetCommands(cmdstr, false, false);
SocialCalc.SheetCommandInfo.cmdextensionbusy = "Do Cmd Ext "+cmdstr;
window.setTimeout(function(){SocialCalc.ResumeFromCmdExtension();}, 100);
}
function doloadclipboardext (name, data, sheet, cmd, saveundo) {
var cmdstr = cmd.RestOfString();
SocialCalc.SheetCommandInfo.cmdextensionbusy = "Load Clipboard Ext "+cmdstr;
loaddata(cmdstr);
// window.setTimeout(function(){SocialCalc.ResumeFromCmdExtension();}, 100);
// SocialCalc.ResumeFromCmdExtension();
}
socialcalc/socialcalcserver.pl view on Meta::CPAN
if (loaddatatimerobj) {
window.clearTimeout(loaddatatimerobj);
loaddatatimerobj = null;
}
var sview = SocialCalc.GetSpreadsheetControlObject();
parts = sview.DecodeSpreadsheetSave(val);
if (parts) {
if (parts.sheet) {
SocialCalc.Clipboard.clipboard = SocialCalc.decodeFromSave(val.substring(parts.sheet.start, parts.sheet.end));
}
}
// window.setTimeout(function(){SocialCalc.ResumeFromCmdExtension();}, 100);
SocialCalc.ResumeFromCmdExtension();
}
function loaddatatimeout() {
if (loaddatatimerobj) {
window.clearTimeout(loaddatatimerobj);
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
' </td>'+
' </tr></table>'+
'</div>',
view: "sheet",
onclick: SocialCalc.SpreadsheetControlNamesOnclick,
onunclick: SocialCalc.SpreadsheetControlNamesOnunclick
});
// Clipboard
this.tabnums.clipboard = this.tabs.length;
this.tabs.push({name: "clipboard", text: "Clipboard", html:
'<div id="%id.clipboardtools" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;padding-right:24px;">'+
' <div style="%tbt.">'+
' '+
' </div>'+
' </td>'+
' </tr></table>'+
'</div>',
view: "clipboard",
onclick: SocialCalc.SpreadsheetControlClipboardOnclick,
onclickFocus: "clipboardtext"
});
this.views["clipboard"] = {name: "clipboard", divStyle: "overflow:auto;", html:
' <div style="font-size:x-small;padding:5px 0px 10px 0px;">'+
' <b>%loc!Display Clipboard in!:</b>'+
' <input type="radio" id="%id.clipboardformat-tab" name="%id.clipboardformat" checked onclick="%s.SpreadsheetControlClipboardFormat(\'tab\');"> %loc!Tab-delimited format! '+
' <input type="radio" id="%id.clipboardformat-csv" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'csv\');"> %loc!CSV format! '+
' <input type="radio" id="%id.clipboardformat-scsave" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'scsave\');"> %loc!SocialCalc-save format!'+
' </div>'+
' <input type="button" value="%loc!Load SocialCalc Clipboard With This!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardLoad();"> '+
' <input type="button" value="%loc!Clear SocialCalc Clipboard!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardClear();"> '+
' <br>'+
' <textarea id="%id.clipboardtext" style="font-size:small;height:350px;width:800px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea>'
};
return;
}
// Methods:
SocialCalc.SpreadsheetControl.prototype.InitializeSpreadsheetControl =
function(node, height, width, spacebelow) {return SocialCalc.InitializeSpreadsheetControl(this, node, height, width, spacebelow);};
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
// document.getElementById(s.idPrefix+"namesdesc").value = "";
// SocialCalc.SpreadsheetControlNamesFillNameList();
}
SocialCalc.KeyboardFocus();
}
// Clipboard
SocialCalc.SpreadsheetControlClipboardOnclick = function(s, t) {
var s = SocialCalc.GetSpreadsheetControlObject();
clipele = document.getElementById(s.idPrefix+"clipboardtext");
document.getElementById(s.idPrefix+"clipboardformat-tab").checked = true;
clipele.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "tab");
return;
}
SocialCalc.SpreadsheetControlClipboardFormat = function(which) {
var s = SocialCalc.GetSpreadsheetControlObject();
clipele = document.getElementById(s.idPrefix+"clipboardtext");
clipele.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, which);
}
SocialCalc.SpreadsheetControlClipboardLoad = function() {
var s = SocialCalc.GetSpreadsheetControlObject();
var savetype = "tab";
SocialCalc.SetTab(s.tabs[0].name); // return to first tab
SocialCalc.KeyboardFocus();
if (document.getElementById(s.idPrefix+"clipboardformat-csv").checked) {
savetype = "csv";
}
else if (document.getElementById(s.idPrefix+"clipboardformat-scsave").checked) {
savetype = "scsave";
}
s.editor.EditorScheduleSheetCommands("loadclipboard "+
SocialCalc.encodeForSave(
SocialCalc.ConvertOtherFormatToSave(document.getElementById(s.idPrefix+"clipboardtext").value, savetype)), true, false);
}
SocialCalc.SpreadsheetControlClipboardClear = function() {
var s = SocialCalc.GetSpreadsheetControlObject();
var clipele = document.getElementById(s.idPrefix+"clipboardtext");
clipele.value = "";
s.editor.EditorScheduleSheetCommands("clearclipboard", true, false);
clipele.focus();
}
SocialCalc.SpreadsheetControlClipboardExport = function() {
var s = SocialCalc.GetSpreadsheetControlObject();
if (s.ExportCallback) {
s.ExportCallback(s);
}
SocialCalc.SetTab(s.tabs[0].name); // return to first tab
SocialCalc.KeyboardFocus();
socialcalc/socialcalctableeditor.js view on Meta::CPAN
ta.style.top = (position.top-1)+"px";
}
if (editor.range.hasrange) {
sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+
":"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);
}
else {
sel = editor.ecell.coord;
}
// get what to copy to clipboard
cliptext = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.CreateSheetSave(editor.context.sheetobj, sel), "tab");
if (charname == "[ctrl-c]" || editor.noEdit) { // if copy or cut but in no edit
cmd = "copy "+sel+" formulas";
}
else { // [ctrl-x]
cmd = "cut "+sel+" formulas";
}
editor.EditorScheduleSheetCommands(cmd, true, false); // queue up command to put on SocialCalc clipboard
/* Copy as HTML: This fails rather badly as it won't paste into Notepad as tab-delimited text. Oh well.
ha = editor.pasteHTMLarea;
if (editor.range.hasrange) {
cell = SocialCalc.GetEditorCellElement(editor, editor.range.top, editor.range.left);
}
else {
cell = SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);
}
socialcalc/socialcalctableeditor.js view on Meta::CPAN
ha.style.visibility = "hidden";
}
else {
var ta = editor.pasteTextarea;
value = ta.value;
ta.blur();
ta.style.display = "none";
}
value = value.replace(/\r\n/g, "\n").replace(/\n?$/, '\n');
var clipstr = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "tab");
if (value == clipstr || (value.length-clipstr.length==1 && value.substring(0,value.length-1)==clipstr)) {
isPasteSameAsClipboard = true;
}
var cmd = "";
// pastes SocialCalc clipboard if did a Ctrl-C and contents still the same
// Webkit adds an extra blank line, so need to allow for that
if (!isPasteSameAsClipboard) {
cmd = "loadclipboard "+
SocialCalc.encodeForSave(SocialCalc.ConvertOtherFormatToSave(value, "tab")) + "\n";
}
var cr;
if (editor.range.hasrange) {
cr = SocialCalc.crToCoord(editor.range.left, editor.range.top);
}
else {
cr = editor.ecell.coord;
}
cmd += "paste "+cr+" formulas";
socialcalc/ssctrltest1.html view on Meta::CPAN
SocialCalc.Popup.LocalizeString = SocialCalc.LocalizeString; // needed for localization
var spreadsheet = new SocialCalc.SpreadsheetControl();
var savestr = document.getElementById("savestr");
spreadsheet.InitializeSpreadsheetControl("tableeditor", 0, 0, 0);
spreadsheet.ExecuteCommand('redisplay', '');
spreadsheet.ExportCallback = function(s) {
alert(SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "csv"));
}
// Dummy loadsheet for testing:
SocialCalc.Formula.SheetCache.LoadSheet = function(sheetname) {
var sfscc = SocialCalc.Formula.SheetCache.constants;
var doload = confirm("Loadsheet: "+sheetname+"?");
if (true) {
return {status: doload?sfscc.ok:sfscc.loading, str: "cell:A1:v:4\ncell:A2:t:Sheet\\c "+sheetname+"\ncell:A3:vtf:ndt:0:NOW()\ncell:B1:v:5\ncell:B2:v:6\nname:AONE::A1\nname:ATWO::A2\nname:RANGE::B1\\cB2\nname:TEST::A3",
recalc: true};
}
socialcalc/ssctrltest1.html view on Meta::CPAN
if (editor.range.hasrange) {
sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+
":"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);
}
else {
sel = editor.ecell.coord;
}
parseobj = new SocialCalc.Parse("copy "+sel+" all");
SocialCalc.ExecuteSheetCommand(editor.context.sheetobj, parseobj, true); // note: not queued!!!??!!
SocialCalc.Clipboard.clipboard.loadedByCtrlC = true; // remember this clipboard data was from ctrl-c
ta.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, "tab");
ta.style.display = "block";
ta.focus();
ta.select();
// var range = document.selection.createRange();
var range = window.getSelection().getRangeAt(0);
range.execCommand("copy");
window.setTimeout(function() {
var s = SocialCalc.GetSpreadsheetControlObject();
var editor = s.editor;