Agree on 1, it should be more “pluggable” (unless it improved since the last time I checked).
Regarding 2, clipboard class (see [1]) seems to support object references in clipboard. If the TextScrap is completely independent from its originating TextFlow, placing itself in the Clipboard (probably using a dedicated clipboard format, and in addition to the current serialized form) may have sense. [1] http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/desktop/Clipboard.html 2013/11/4 Harbs <harbs.li...@gmail.com> > I'm not sure. Is there any way to deserialize to resolve to a reference to > a class instance? > > For the most part, I'm using custom styles to track character and > paragraph styles. setStyle() and getStyle() writes and reads references to > common styles that can be applied to any number of TextLayoutElements. > (Yes. I can probably track them using strings rather than object references > to solve my problem, but object references is much neater and I'd rather > solve the underlying issue if possible.) > > Is there a reason that the TextScrap is not written to and read from the > clipboard directly? Is it really necessary to serialize it? > > There's really two separate issues here: > 1) Serialization of TLF could probably be more robust. > 2) The question as to whether serialization is really necessary. Is that > to facilitate copying the data from one swf to another? What about copying > BOTH serialized data as well as the original TextScrap? The TextScrap could > be used for the same swf and the serialized data can be used for a > different one. > > Harbs > > On Nov 4, 2013, at 9:19 AM, Alex Harui wrote: > > > So is it as simple as serializing non-strings to text and de-serializing > > on import? > > > > > > On 11/3/13 11:12 PM, "Harbs" <harbs.li...@gmail.com> wrote: > > > >> Here is a simple test case which illustrates the problem. I can change > my > >> app for custom handling of copy/paste, but it seems to me that this is a > >> general short-coming in the was copy paste is handled in TLF. > >> > >> Note: customStyle1 is preserved when the TextFlow is exported because > >> it's simple text, but customStyle2 is not preserved. > >> > >> The result of TextFlowExporter.export() is what's written to the > >> clipboard, so it's missing any complex custom styles. > >> > >> <?xml version="1.0" encoding="utf-8"?> > >> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" > >> xmlns:s="library://ns.adobe.com/flex/spark" > >> xmlns:mx="library://ns.adobe.com/flex/mx" > minWidth="955" > >> minHeight="600" creationComplete="onComplete()"> > >> <fx:Script> > >> <![CDATA[ > >> import flashx.textLayout.conversion.ITextExporter; > >> import flashx.textLayout.conversion.TextConverter; > >> import flashx.textLayout.edit.EditManager; > >> import flashx.textLayout.elements.ParagraphElement; > >> import flashx.textLayout.elements.SpanElement; > >> import flashx.textLayout.elements.TextFlow; > >> import flashx.undo.UndoManager; > >> [Bindable]private var textFlow:TextFlow; > >> > >> private function onComplete():void{ > >> var para:ParagraphElement; > >> var span:SpanElement; > >> var i:int; > >> textFlow = new TextFlow(); > >> textFlow.interactionManager = new > EditManager(new UndoManager()); > >> textFlow.tabStops = "s12 s72"; > >> textFlow.paragraphSpaceAfter = 16; > >> para = new ParagraphElement(); > >> span = new SpanElement(); > >> span.fontSize = 16; > >> span.fontWeight = "bold"; > >> span.text = "Here's some text."; > >> span.setStyle("customStyle1","hello"); > >> > span.setStyle("customStyle2",{id:1,content:"this is some custom > >> content"}); > >> para.addChild(span); > >> textFlow.addChild(para); > >> > >> var exporter:ITextExporter = > >> TextConverter.getExporter("textLayoutFormat"); > >> var res:Object = > exporter.export(textFlow,"stringType"); > >> trace(res); > >> } > >> ]]> > >> </fx:Script> > >> <s:RichEditableText verticalCenter="0" width="400" > >> textFlow="{textFlow}"/> > >> > >> </s:Application> > >> > >> Harbs > >> > >> On Nov 4, 2013, at 7:21 AM, Alex Harui wrote: > >> > >>> I'm not sure what user styles are and why the aren't in the markup. > Can > >>> you provide more details? > >>> > >>> Consider whether this is a general TLF issue or just something you > >>> should > >>> do in your app to add functionality. A general TLF issue probably > can't > >>> bypass the Clipboard because you should be able to copy/paste from one > >>> SWF > >>> to another SWF. > >>> > >>> -Alex > >>> > >>> On 11/3/13 1:01 PM, "Gavriel Harbater" <gavha...@gmail.com> wrote: > >>> > >>>> Okay. After researching this, it looks like the problem is as follows: > >>>> > >>>> The TextFlow is saved to the clipboard as a string which is the markup > >>>> representation of the TextFlow. The markup is produced using > >>>> BaseTextLayoutExporter.export(). The markup produced from that is > >>>> missing > >>>> custom user styles. My custom user styles are actually quite complex > >>>> classes. > >>>> > >>>> I'm looking for suggestions on the best way to handle this problem. I > >>>> can > >>>> think of three possible angles: > >>>> 1) Somehow write user styles into the TextFlow markup. I'm not sure if > >>>> there's a way to markup custom styles and complex ones are definitely > >>>> an > >>>> issue. > >>>> 2) Write complex objects to the clipboard. Is this possible? If yes, > >>>> why > >>>> are strings currently used? > >>>> 3) Skip the clipboard altogether and create some static function to > >>>> call > >>>> when the clipboard content is pasted to apply custom styles. > >>>> > >>>> Thoughts? > >>>> > >>>> On Nov 3, 2013, at 10:13 AM, Harbs wrote: > >>>> > >>>>> Looking into an issue I had, I noticed that user styles in TLF are > not > >>>>> preserved on copy/paste. (Actually, it would probably be more correct > >>>>> to > >>>>> say that they're not preserved on copy.) > >>>>> > >>>>> I'm looking into TextScrap/TextClipboard now, but if anyone has > >>>>> experience here as to why the styles are being dropped, I'd love to > >>>>> knowŠ > >>>>> > >>>>> Harbs > >>>> > >>> > >> > > > >