Commit 0d1b61be authored by GoshaZotov's avatar GoshaZotov

add _specialPasteParagraphContentConvert

parent cf8fa4a6
...@@ -2123,6 +2123,7 @@ PasteProcessor.prototype = ...@@ -2123,6 +2123,7 @@ PasteProcessor.prototype =
} }
}, },
//***functions for special paste***
_specialPasteGetElemType: function(elem) _specialPasteGetElemType: function(elem)
{ {
var type = elem.GetType(); var type = elem.GetType();
...@@ -2226,7 +2227,7 @@ PasteProcessor.prototype = ...@@ -2226,7 +2227,7 @@ PasteProcessor.prototype =
} }
else else
{ {
props = [sProps.paste, sProps.mergeFormatting, sProps.pasteOnlyValues]; props = [sProps.paste/*, sProps.mergeFormatting*/, sProps.pasteOnlyValues];
} }
if(null !== props) if(null !== props)
...@@ -2258,6 +2259,15 @@ PasteProcessor.prototype = ...@@ -2258,6 +2259,15 @@ PasteProcessor.prototype =
_specialPasteItemConvert: function(item) _specialPasteItemConvert: function(item)
{ {
//TODO рассмотреть вариант вставки текста ("text/plain")
//для вставки простого текста, можно было бы использовать ("text/plain")
//но в данном случае вставка текста будет работать не совсем корретно внутри приложения, поскольку
//когда мы пишем в буфер текст, функция GetSelectedText отдаёт вместо табуляции пробелы
//так же некорректно будут вставляться таблицы, поскольку табуляции между ячейками мы потеряем
//внутренние таблицы мы вообще теряем
//для реализации необходимо менять функцию GetSelectedText
//посмотреть, какие браузер могут заменить табуляцию на пробел при занесении текста в буфер обмена
var res = item; var res = item;
var type = item.GetType(); var type = item.GetType();
switch(type) switch(type)
...@@ -2343,17 +2353,7 @@ PasteProcessor.prototype = ...@@ -2343,17 +2353,7 @@ PasteProcessor.prototype =
paragraph.TextPr.Value = pasteIntoParaRunPr; paragraph.TextPr.Value = pasteIntoParaRunPr;
} }
} }
this._specialPasteParagraphContentConvert(paragraph.Content, pasteIntoParaRunPr);
if(pasteIntoParaRunPr)
{
for(var j = 0; j < paragraph.Content.length; j++)
{
if(pasteIntoParaRunPr && paragraph.Content[j].Set_Pr)
{
paragraph.Content[j].Set_Pr( pasteIntoParaRunPr );
}
}
}
break; break;
} }
...@@ -2368,23 +2368,114 @@ PasteProcessor.prototype = ...@@ -2368,23 +2368,114 @@ PasteProcessor.prototype =
paragraph.TextPr.Value.Merge(pasteIntoParaRunPr); paragraph.TextPr.Value.Merge(pasteIntoParaRunPr);
} }
} }
this._specialPasteParagraphContentConvert(paragraph.Content, pasteIntoParaRunPr);
break;
}
}
return res;
},
_specialPasteParagraphContentConvert: function(paragraphContent, pasteIntoParaRunPr)
{
var props = window['AscCommon'].g_clipboardBase.specialPasteProps;
var checkInsideDrawings = function(runContent)
{
for(var j = 0; j < runContent.length; j++)
{
var item = runContent[j];
switch(item.Type)
{
case para_Run:
{
checkInsideDrawings(item.Content);
break;
}
case para_Drawing:
{
runContent.splice(j, 1);
break;
}
}
}
};
switch(props)
{
case Asc.c_oSpecialPasteProps.paste:
{
break;
}
case Asc.c_oSpecialPasteProps.pasteOnlyValues:
{
//в данному случае мы должны применить к вставленному фрагменту стиль paraRun, в который вставляем
if(pasteIntoParaRunPr)
{
for(var i = 0; i < paragraphContent.length; i++)
{
var elem = paragraphContent[i];
var type = elem.Type;
switch(type)
{
case para_Run:
{
//проверить, есть ли внутри изображение
if(pasteIntoParaRunPr && elem.Set_Pr)
{
elem.Set_Pr( pasteIntoParaRunPr );
}
checkInsideDrawings(elem.Content);
break;
}
case para_Hyperlink:
{
//изменить hyperlink на pararun
//проверить, есть ли внутри изображение
paragraphContent.splice(i, 1);
for(var n = 0; n < elem.Content.length; n++)
{
paragraphContent.splice(i + n, 0, elem.Content[n]);
}
i--;
//checkInsideDrawings(elem.Content);
break;
}
case para_Math:
{
break;
}
}
}
}
break;
}
case Asc.c_oSpecialPasteProps.mergeFormatting:
{
//ms почему-то при merge игнорирует заливку текста
if(pasteIntoParaRunPr) if(pasteIntoParaRunPr)
{ {
for(var j = 0; j < paragraph.Content.length; j++) for(var i = 0; i < paragraphContent.length; i++)
{ {
if(pasteIntoParaRunPr && paragraph.Content[j].Pr) var elem = paragraphContent[j];
if(pasteIntoParaRunPr && elem.Pr)
{ {
paragraph.Content[j].Pr.Merge(pasteIntoParaRunPr); elem.Pr.Merge(pasteIntoParaRunPr);
} }
} }
} }
break; break;
} }
} }
return res;
}, },
_convertTableToText: function(table, obj, newParagraph) _convertTableToText: function(table, obj, newParagraph)
...@@ -2498,6 +2589,7 @@ PasteProcessor.prototype = ...@@ -2498,6 +2589,7 @@ PasteProcessor.prototype =
} }
} }
}, },
//***end special paste***
InsertInPlacePresentation: function(aNewContent) InsertInPlacePresentation: function(aNewContent)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment