2010/1/12 Cédrick Béler <[hidden email]> --
both are used... but I nevers used them... cmd + V paste initials
cmd + C compare to clipboard Do you use them ? BTW, there's a clear problem with menu and shortcuts. For instance, not all hardcoded shortcuts works for keyboard other thant qwerty... :(
Cédrick _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
ok.
I added shortcuts, I put menu methods in the extension category to be able to use monticello. Here is the squeaksource account: MCHttpRepository location: 'http://www.squeaksource.com/ObjectClipboard'
user: '' password: '' To initialize shortcuts, after loading, you need to evaluate :
ParagraphEditor initialize Everybody can submit and even change completly the implementation so as maybe to create a unified clipboard. Cheers,
2010/1/12 Cédrick Béler <[hidden email]>
-- Cédrick _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Hi Cédrick,
When I try to copy an object, an error is raised (cf attached picture). Content is not initialized. It remains always nil. You need an initialize method that call #reset and execute 'ParagraphEditor initialize'. A unit test may also be written. If you're ok, I can do it. Cheers, Alexandre On 12 Jan 2010, at 11:21, Cédrick Béler wrote: > ok. > I added shortcuts, I put menu methods in the extension category to > be able to use monticello. Here is the squeaksource account: > > MCHttpRepository > location: 'http://www.squeaksource.com/ObjectClipboard' > user: '' > password: '' > > To initialize shortcuts, after loading, you need to evaluate : > ParagraphEditor initialize > > Everybody can submit and even change completly the implementation so > as maybe to create a unified clipboard. > > Cheers, > > 2010/1/12 Cédrick Béler <[hidden email]> > > > 2010/1/12 Cédrick Béler <[hidden email]> > > > Maybe you can also add shortcuts: Shift-Cmd-c, Shift-Cmd-v > > Yes, I'll do it > > > > both are used... but I nevers used them... > > cmd + V paste initials > cmd + C compare to clipboard > > Do you use them ? > > BTW, there's a clear problem with menu and shortcuts. > For instance, not all hardcoded shortcuts works for keyboard other > thant qwerty... :( > > > -- > Cédrick > > > > -- > Cédrick > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project Picture 6.png (62K) Download Attachment |
2010/1/12 Alexandre Bergel <[hidden email]> Hi Cédrick, oops, that's true. Actually, when starting or shutting down, there's a reset of content and then the affectation but yes, the initialize is better. I published the change.
Concerning ParagraphEditor initialize, I think (but not sure) that it would have no effect as I guess first, the class is loaded, then initialized, then the extension methods (I really may be wrong).
Anyway, feel free to publish whatever changes you find necessary (especially tests :) . I'll do some too) Cheers,
-- Cédrick _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
I'm writting some right now... _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Ok, I am waiting for your ping then
Alexandre On 12 Jan 2010, at 12:17, Cédrick Béler wrote: > > Anyway, feel free to publish whatever changes you find necessary > (especially tests :) . I'll do some too) > > > I'm writting some right now... > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
ping :)
See you later,
2010/1/12 Alexandre Bergel <[hidden email]> Ok, I am waiting for your ping then -- Cédrick _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
I tried it and it works. Tests are clean and easy to understand. Look
okay to me. Alexandre On 12 Jan 2010, at 13:29, Cédrick Béler wrote: > ping :) > > See you later, > > 2010/1/12 Alexandre Bergel <[hidden email]> > Ok, I am waiting for your ping then > > Alexandre > > On 12 Jan 2010, at 12:17, Cédrick Béler wrote: > > > > > Anyway, feel free to publish whatever changes you find necessary > > (especially tests :) . I'll do some too) > > > > > > I'm writting some right now... > > > > _______________________________________________ > > Pharo-project mailing list > > [hidden email] > > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > > -- > Cédrick > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by cedreek
I was trying to rework the clipboard logic last fall but I couldn't find any window users to test it. Things like supporting cut/copy/paste of graphics objects.
But it also required FFI in Pharo and I don't think anyone reached a decision on that. If anyone would like to take that task on I"ll give them an image to work with... I'll note in Sophie we support the cut/copy/paste of complex objects (chunks of books). A matter of checking what the object was, either text or a complex object. PS if anyone is interested the Undo/Redo Logic that Impara did for Sophie was very well received, easy to use, and we could build a book from scratch then undo the entire creation, then redo it. This sounds complex, it was. However the framework made it easy, one piece at a time... Perhaps someone should harvest that since it *was* generic. On 2010-01-12, at 1:10 AM, Cédrick Béler wrote:
-- =========================================================================== John M. McIntosh <[hidden email]> Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com =========================================================================== _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
John M McIntosh wrote:
[...] > > PS if anyone is interested the Undo/Redo Logic that Impara did for > Sophie was very well received, easy to use, and we could build a book > from scratch > then undo the entire creation, then redo it. This sounds complex, it > was. However the framework made it easy, one piece at a time... > Perhaps someone should harvest that since it *was* generic. Ooh, nice. A good undo/redo framework would be *so* *very* good to have. I'm afraid I can't be the one to harvest it, not anytime soon anyhow, but I hope someone picks it up. Regards, -Martin _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Yes, it's in the category "Sophie-Undo"
If I consider the class AbstractUndoRecord We hung 67 subclasses off it, which gives you an idea of the complexity of we what were doing (60 some UI actions), but also the fact it could handle it.. UndoManager class comment: UndoManager manages execution and storing of UndoRecords through #doAndAddRecord:. It allows hierarchical grouping of UndoRecords through #openRecordGroup, #openRecordGroupNamed: and #closeRecordGroup. Undo and redo is invoked by #undo and #redo. See UndoManagerTest for someExamples. Structure: undoHistory OrderedCollection -- holds UndoRecords for undo redoHistory OrderedCollection -- holds UndoRecords for redo maxHistoryLength Integer -- Old UndoRecords in undoHistory are removed to keep it within given limits (0 for no Limit) groupStack OrderedCollection -- temporary dataStructure to manage hierarchical grouping of UndoRecords by #openRecordGroup and closeRecordGroup historyInvalid Boolean -- flag to indicate, that the history is invalid and it must be deleted including the groupStack On 2010-01-12, at 9:52 PM, Martin McClure wrote: > John M McIntosh wrote: > > [...] >> >> PS if anyone is interested the Undo/Redo Logic that Impara did for >> Sophie was very well received, easy to use, and we could build a book >> from scratch >> then undo the entire creation, then redo it. This sounds complex, it >> was. However the framework made it easy, one piece at a time... >> Perhaps someone should harvest that since it *was* generic. > > Ooh, nice. A good undo/redo framework would be *so* *very* good to have. > I'm afraid I can't be the one to harvest it, not anytime soon anyhow, > but I hope someone picks it up. > > > Regards, > > -Martin AbstractUndoRecord #() SophieAddContentRootRecord #('contentRoot' 'book') SophieAddDeleteStickyRecord #('sticky' 'page') SophieAddStickyRecord #() SophieDeleteStickyRecord #() SophieAddEmbedBookRecord #('book' 'bookToEmbed') SophieAddLeafNodeRecord #('book' 'leafNode' 'contentIndexPosition') SophieAddStickiesRecord #('stickies' 'book') SophieApplyFrameLocationStyleAttributesRecord #('bookModel' 'anchor' 'styleAttributes' 'oldStyleAttributes' 'page') SophieApplyPageTemplateRecord #('page' 'template' 'undoData' 'redoData' 'allRemovedFrames') SophieApplyParagraphStyleAttributesRecord #('book' 'marker' 'styleAttributes' 'oldStylesAttributes') SophieApplyParagraphStyleRecord #('book' 'marker' 'style' 'oldStyles') SophieApplyStyleToRangeRecord #('book' 'marker' 'styleAttributes' 'oldRangesStylesCollection') SophieBookExtentUndoRecord #('bookModel' 'newExtent' 'oldExtent') SophieBookStatisticRecord #('book' 'newStatistic' 'oldStatistic') SophieDeleteContentRangeRecord #('book' 'marker' 'positionAfter' 'partialTree') SophieEmbeddedBookUndoRecord #('ebook' 'embeddedBookResource' 'embeddedBookMapEntry') SophieEmbeddedLinkedToBookUndoRecord #('ebook' 'embeddedBookMapEntry' 'embeddedBookResource') SophieFrameRecord #('bookModel' 'frame') SophieFrameZOrderRecord #('page' 'forward') SophieFrameStyleUndoRecord #('bookModel' 'frame' 'attributes' 'state') SophieFrameToTemplateRecord #('bookModel' 'frame' 'page' 'zIndex' 'reversed') SophieInsertCharacterRecord #('book' 'character' 'position' 'positionAfter' 'style') SophieInsertPageBreakRecord #('book' 'position' 'marker') SophieInsertParagraphBreakRecord #('book' 'position' 'marker' 'characterStyle') SophieLinkActionRecord #('book' 'target' 'action' 'actionIndex') SophieLinkActionAddRecord #() SophieLinkActionRemoveRecord #() SophieLinkRecord #('book' 'target') SophieFrameTriggerCleanupRecord #('cleanupStuff') SophieLinkActionCloneRecord #('source' 'oldActions') SophieMarkerAddDeleteRecord #('marker' 'book') SophieMarkerAddMarkersRecord #() SophieMarkerAddRecord #() SophieMarkerDeleteRecord #('actions' 'markerSet') SophieMarkerRangeRecord #('book' 'marker' 'newStart' 'newStop' 'oldStart' 'oldStop') SophiePageRecord #('bookModel' 'page') SophieFlowOrderChangeRecord #('frame' 'index' 'flow') SophiePageStyleRecord #('styleAttributes') SophiePageUndoRecord #('spine' 'index' 'page') SophieInsertPageRecord #() SophieMovePageRecord #('oldIndex') SophiePasteFromImporterRecord #('book' 'importer' 'position' 'marker' 'partialTree') SophiePromoteTemplateOverridesRecord #('book' 'pageTemplateFrame' 'page' 'frameMap' 'deletedTemplateFrames' 'overrideFrames' 'templateFrameFramesFromOverideFrames' 'frameOverrides' 'frameStyleOverrides' 'frameActionsOverrides' 'oldTemplateFrameFrames' 'oldPageFlowMap' 'oldTemplateFlowMap' 'oldPageTemplate' 'newTemplateFrameFrames' 'newPageFlowMap' 'newPageTemplate' 'allRemovedFrames' 'removedOverrideFrameContents') SophieRegisterFlowRecord #('spine' 'flowID' 'content' 'contentID' 'flow') SophieRemoveContentRootRecord #('contentRoot' 'book') SophieRemoveFlowRecord #('spine' 'flow') SophieRemoveFrameRecord #('bookModel' 'page' 'frame' 'wasLocalOverride') SophieRemoveLeafNodeRecord #('book' 'leafNode' 'oldContentIndexPosition') SophieRemovePagesRecord #('spine' 'indices' 'pages') SophieReplaceLibraryTemplateRecord #('book' 'template' 'newTemplate') SophieReplaceTemplateRecord #('book' 'template' 'oldTemplateCopy' 'newTemplate') SophieResourceUndoRecord #('resources') SophieResourceDeleteRecord #('player') SophieResourceImportStreamRecord #('resourceManager' 'mimeType' 'stream') SophieResourceImportURIRecord #('resourceManager' 'uri') SophieResourceLinkToURIRecord #() SophieResourceStoreRecord #('book' 'object' 'metaKey') SophieSpineStateDeltaRecord #('book' 'spine' 'addedPages' 'removedPages') SophieSpineStateRecord #('book' 'spine' 'prevState' 'postState') SophieTimelineUndoRecord #('timelinePlayer') SophieTimelineUndoAbstractEventsRecord #('events') SophieTimelineUndoAddEventsRecord #() SophieTimelineUndoDeleteEventsRecord #() SophieTimelineUndoAddTimeline #('timeline' 'book') SophieTimelineUndoDeleteTimeline #() SophieTimelineUndoEventsMoveRecord #('undoData') SophieTriggerObjectCleanupRecord #('triggerObject' 'undoInformations') SophieUpdateLibraryStyleRecord #('book' 'newStyle' 'styleName' 'oldStyle') UndoRecord #('undoable' 'doMessage' 'undoMessage' 'description') SophieFrameUndoRecord #('bookModel' 'frame') SophieLibraryResourceUndoRecord #('bookModel') SophiePageInvalidationRecord #('bookModel' 'page') SophieFrameAlignmentUndoRecord #('groupFrame' 'framesAndOldPositions' 'framesAndNewPositions') SophieTriggerMarkerUndoRecord #('bookModel' 'marker') UndoRecordWithPostMessage #('postMessage') UndoRecordGroup #('description' 'subRecords') SophieFrameGroupUndoRecord #('frameGroup' 'bookModel') -- =========================================================================== John M. McIntosh <[hidden email]> Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com =========================================================================== _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
It look like there are still using the 1.0 version for Sophie advertisement :
http://www.youtube.com/watch?v=KLTcdffTigA 2010/1/13 John M McIntosh <[hidden email]>: > Yes, it's in the category "Sophie-Undo" > > If I consider the class AbstractUndoRecord > We hung 67 subclasses off it, which gives you an idea of the complexity of we what were doing (60 some UI actions), but also the fact it could handle it.. > > UndoManager class comment: > > UndoManager manages execution and storing of UndoRecords through #doAndAddRecord:. > It allows hierarchical grouping of UndoRecords through #openRecordGroup, #openRecordGroupNamed: and #closeRecordGroup. > Undo and redo is invoked by #undo and #redo. > > See UndoManagerTest for someExamples. > > Structure: > undoHistory OrderedCollection -- holds UndoRecords for undo > redoHistory OrderedCollection -- holds UndoRecords for redo > maxHistoryLength Integer -- Old UndoRecords in undoHistory are removed to keep it within given limits (0 for no Limit) > groupStack OrderedCollection -- temporary dataStructure to manage hierarchical grouping of UndoRecords > by #openRecordGroup and closeRecordGroup > historyInvalid Boolean -- flag to indicate, that the history is invalid and it must be deleted including the groupStack > > > On 2010-01-12, at 9:52 PM, Martin McClure wrote: > >> John M McIntosh wrote: >> >> [...] >>> >>> PS if anyone is interested the Undo/Redo Logic that Impara did for >>> Sophie was very well received, easy to use, and we could build a book >>> from scratch >>> then undo the entire creation, then redo it. This sounds complex, it >>> was. However the framework made it easy, one piece at a time... >>> Perhaps someone should harvest that since it *was* generic. >> >> Ooh, nice. A good undo/redo framework would be *so* *very* good to have. >> I'm afraid I can't be the one to harvest it, not anytime soon anyhow, >> but I hope someone picks it up. >> >> >> Regards, >> >> -Martin > > > > AbstractUndoRecord #() > SophieAddContentRootRecord #('contentRoot' 'book') > SophieAddDeleteStickyRecord #('sticky' 'page') > SophieAddStickyRecord #() > SophieDeleteStickyRecord #() > SophieAddEmbedBookRecord #('book' 'bookToEmbed') > SophieAddLeafNodeRecord #('book' 'leafNode' 'contentIndexPosition') > SophieAddStickiesRecord #('stickies' 'book') > SophieApplyFrameLocationStyleAttributesRecord #('bookModel' 'anchor' 'styleAttributes' 'oldStyleAttributes' 'page') > SophieApplyPageTemplateRecord #('page' 'template' 'undoData' 'redoData' 'allRemovedFrames') > SophieApplyParagraphStyleAttributesRecord #('book' 'marker' 'styleAttributes' 'oldStylesAttributes') > SophieApplyParagraphStyleRecord #('book' 'marker' 'style' 'oldStyles') > SophieApplyStyleToRangeRecord #('book' 'marker' 'styleAttributes' 'oldRangesStylesCollection') > SophieBookExtentUndoRecord #('bookModel' 'newExtent' 'oldExtent') > SophieBookStatisticRecord #('book' 'newStatistic' 'oldStatistic') > SophieDeleteContentRangeRecord #('book' 'marker' 'positionAfter' 'partialTree') > SophieEmbeddedBookUndoRecord #('ebook' 'embeddedBookResource' 'embeddedBookMapEntry') > SophieEmbeddedLinkedToBookUndoRecord #('ebook' 'embeddedBookMapEntry' 'embeddedBookResource') > SophieFrameRecord #('bookModel' 'frame') > SophieFrameZOrderRecord #('page' 'forward') > SophieFrameStyleUndoRecord #('bookModel' 'frame' 'attributes' 'state') > SophieFrameToTemplateRecord #('bookModel' 'frame' 'page' 'zIndex' 'reversed') > SophieInsertCharacterRecord #('book' 'character' 'position' 'positionAfter' 'style') > SophieInsertPageBreakRecord #('book' 'position' 'marker') > SophieInsertParagraphBreakRecord #('book' 'position' 'marker' 'characterStyle') > SophieLinkActionRecord #('book' 'target' 'action' 'actionIndex') > SophieLinkActionAddRecord #() > SophieLinkActionRemoveRecord #() > SophieLinkRecord #('book' 'target') > SophieFrameTriggerCleanupRecord #('cleanupStuff') > SophieLinkActionCloneRecord #('source' 'oldActions') > SophieMarkerAddDeleteRecord #('marker' 'book') > SophieMarkerAddMarkersRecord #() > SophieMarkerAddRecord #() > SophieMarkerDeleteRecord #('actions' 'markerSet') > SophieMarkerRangeRecord #('book' 'marker' 'newStart' 'newStop' 'oldStart' 'oldStop') > SophiePageRecord #('bookModel' 'page') > SophieFlowOrderChangeRecord #('frame' 'index' 'flow') > SophiePageStyleRecord #('styleAttributes') > SophiePageUndoRecord #('spine' 'index' 'page') > SophieInsertPageRecord #() > SophieMovePageRecord #('oldIndex') > SophiePasteFromImporterRecord #('book' 'importer' 'position' 'marker' 'partialTree') > SophiePromoteTemplateOverridesRecord #('book' 'pageTemplateFrame' 'page' 'frameMap' 'deletedTemplateFrames' 'overrideFrames' 'templateFrameFramesFromOverideFrames' 'frameOverrides' 'frameStyleOverrides' 'frameActionsOverrides' 'oldTemplateFrameFrames' 'oldPageFlowMap' 'oldTemplateFlowMap' 'oldPageTemplate' 'newTemplateFrameFrames' 'newPageFlowMap' 'newPageTemplate' 'allRemovedFrames' 'removedOverrideFrameContents') > SophieRegisterFlowRecord #('spine' 'flowID' 'content' 'contentID' 'flow') > SophieRemoveContentRootRecord #('contentRoot' 'book') > SophieRemoveFlowRecord #('spine' 'flow') > SophieRemoveFrameRecord #('bookModel' 'page' 'frame' 'wasLocalOverride') > SophieRemoveLeafNodeRecord #('book' 'leafNode' 'oldContentIndexPosition') > SophieRemovePagesRecord #('spine' 'indices' 'pages') > SophieReplaceLibraryTemplateRecord #('book' 'template' 'newTemplate') > SophieReplaceTemplateRecord #('book' 'template' 'oldTemplateCopy' 'newTemplate') > SophieResourceUndoRecord #('resources') > SophieResourceDeleteRecord #('player') > SophieResourceImportStreamRecord #('resourceManager' 'mimeType' 'stream') > SophieResourceImportURIRecord #('resourceManager' 'uri') > SophieResourceLinkToURIRecord #() > SophieResourceStoreRecord #('book' 'object' 'metaKey') > SophieSpineStateDeltaRecord #('book' 'spine' 'addedPages' 'removedPages') > SophieSpineStateRecord #('book' 'spine' 'prevState' 'postState') > SophieTimelineUndoRecord #('timelinePlayer') > SophieTimelineUndoAbstractEventsRecord #('events') > SophieTimelineUndoAddEventsRecord #() > SophieTimelineUndoDeleteEventsRecord #() > SophieTimelineUndoAddTimeline #('timeline' 'book') > SophieTimelineUndoDeleteTimeline #() > SophieTimelineUndoEventsMoveRecord #('undoData') > SophieTriggerObjectCleanupRecord #('triggerObject' 'undoInformations') > SophieUpdateLibraryStyleRecord #('book' 'newStyle' 'styleName' 'oldStyle') > UndoRecord #('undoable' 'doMessage' 'undoMessage' 'description') > SophieFrameUndoRecord #('bookModel' 'frame') > SophieLibraryResourceUndoRecord #('bookModel') > SophiePageInvalidationRecord #('bookModel' 'page') > SophieFrameAlignmentUndoRecord #('groupFrame' 'framesAndOldPositions' 'framesAndNewPositions') > SophieTriggerMarkerUndoRecord #('bookModel' 'marker') > UndoRecordWithPostMessage #('postMessage') > UndoRecordGroup #('description' 'subRecords') > SophieFrameGroupUndoRecord #('frameGroup' 'bookModel') > > -- > =========================================================================== > John M. McIntosh <[hidden email]> Twitter: squeaker68882 > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com > =========================================================================== > > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam Smalltalkers do: [:it | All with: Class, (And love: it)] http://doesnotunderstand.org/ _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Er yes, that would be because it works? There is some 2.0 video at http://sophiecommons.blip.tv/ which appears to work.
The old site is at http://sophieproject.cntv.usc.edu/, open site at http://opensophie.com/ We could have used media like below 2 years ago. At ESUG I'm sure someone remarked why don't folks doing presentations at smalltalk conferences use Sophie? On 2010-01-12, at 11:16 PM, Serge Stinckwich wrote: > It look like there are still using the 1.0 version for Sophie advertisement : > http://www.youtube.com/watch?v=KLTcdffTigA > -- =========================================================================== John M. McIntosh <[hidden email]> Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com =========================================================================== _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by johnmci
John
I think that we agree to put FFI in 1.1 now we were wondering if Alien was not better. But the support for Alien on different platform is not clear. Stef On Jan 13, 2010, at 6:42 AM, John M McIntosh wrote: > I was trying to rework the clipboard logic last fall but I couldn't find any window users to test it. Things like supporting cut/copy/paste of graphics objects. > But it also required FFI in Pharo and I don't think anyone reached a decision on that. If anyone would like to take that task on I"ll give them an image to > work with... > > I'll note in Sophie we support the cut/copy/paste of complex objects (chunks of books). A matter of checking what the object was, either > text or a complex object. > > PS if anyone is interested the Undo/Redo Logic that Impara did for Sophie was very well received, easy to use, and we could build a book from scratch > then undo the entire creation, then redo it. This sounds complex, it was. However the framework made it easy, one piece at a time... > Perhaps someone should harvest that since it *was* generic. > > > On 2010-01-12, at 1:10 AM, Cédrick Béler wrote: > >> >> Perhaps a unified clipboard would be nicer... objects or text (or, >> potentially converible to host OS things...). >> >> yes that would be really great (copy name seems useless to me... better to have copy object and paste name eventually) ! >> But I don't have the expertise to do it I guess. For now we have in the image: >> >> Clipboard >> ExternalClipboard (from Sophie) >> MacOSClipboard >> SqueakClipboard (empty !) > > -- > =========================================================================== > John M. McIntosh <[hidden email]> Twitter: squeaker68882 > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com > =========================================================================== > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by johnmci
http://code.google.com/p/pharo/issues/list?thanks=1801
On Jan 13, 2010, at 7:18 AM, John M McIntosh wrote: > Yes, it's in the category "Sophie-Undo" > > If I consider the class AbstractUndoRecord > We hung 67 subclasses off it, which gives you an idea of the complexity of we what were doing (60 some UI actions), but also the fact it could handle it.. > > UndoManager class comment: > > UndoManager manages execution and storing of UndoRecords through #doAndAddRecord:. > It allows hierarchical grouping of UndoRecords through #openRecordGroup, #openRecordGroupNamed: and #closeRecordGroup. > Undo and redo is invoked by #undo and #redo. > > See UndoManagerTest for someExamples. > > Structure: > undoHistory OrderedCollection -- holds UndoRecords for undo > redoHistory OrderedCollection -- holds UndoRecords for redo > maxHistoryLength Integer -- Old UndoRecords in undoHistory are removed to keep it within given limits (0 for no Limit) > groupStack OrderedCollection -- temporary dataStructure to manage hierarchical grouping of UndoRecords > by #openRecordGroup and closeRecordGroup > historyInvalid Boolean -- flag to indicate, that the history is invalid and it must be deleted including the groupStack > > > On 2010-01-12, at 9:52 PM, Martin McClure wrote: > >> John M McIntosh wrote: >> >> [...] >>> >>> PS if anyone is interested the Undo/Redo Logic that Impara did for >>> Sophie was very well received, easy to use, and we could build a book >>> from scratch >>> then undo the entire creation, then redo it. This sounds complex, it >>> was. However the framework made it easy, one piece at a time... >>> Perhaps someone should harvest that since it *was* generic. >> >> Ooh, nice. A good undo/redo framework would be *so* *very* good to have. >> I'm afraid I can't be the one to harvest it, not anytime soon anyhow, >> but I hope someone picks it up. >> >> >> Regards, >> >> -Martin > > > > AbstractUndoRecord #() > SophieAddContentRootRecord #('contentRoot' 'book') > SophieAddDeleteStickyRecord #('sticky' 'page') > SophieAddStickyRecord #() > SophieDeleteStickyRecord #() > SophieAddEmbedBookRecord #('book' 'bookToEmbed') > SophieAddLeafNodeRecord #('book' 'leafNode' 'contentIndexPosition') > SophieAddStickiesRecord #('stickies' 'book') > SophieApplyFrameLocationStyleAttributesRecord #('bookModel' 'anchor' 'styleAttributes' 'oldStyleAttributes' 'page') > SophieApplyPageTemplateRecord #('page' 'template' 'undoData' 'redoData' 'allRemovedFrames') > SophieApplyParagraphStyleAttributesRecord #('book' 'marker' 'styleAttributes' 'oldStylesAttributes') > SophieApplyParagraphStyleRecord #('book' 'marker' 'style' 'oldStyles') > SophieApplyStyleToRangeRecord #('book' 'marker' 'styleAttributes' 'oldRangesStylesCollection') > SophieBookExtentUndoRecord #('bookModel' 'newExtent' 'oldExtent') > SophieBookStatisticRecord #('book' 'newStatistic' 'oldStatistic') > SophieDeleteContentRangeRecord #('book' 'marker' 'positionAfter' 'partialTree') > SophieEmbeddedBookUndoRecord #('ebook' 'embeddedBookResource' 'embeddedBookMapEntry') > SophieEmbeddedLinkedToBookUndoRecord #('ebook' 'embeddedBookMapEntry' 'embeddedBookResource') > SophieFrameRecord #('bookModel' 'frame') > SophieFrameZOrderRecord #('page' 'forward') > SophieFrameStyleUndoRecord #('bookModel' 'frame' 'attributes' 'state') > SophieFrameToTemplateRecord #('bookModel' 'frame' 'page' 'zIndex' 'reversed') > SophieInsertCharacterRecord #('book' 'character' 'position' 'positionAfter' 'style') > SophieInsertPageBreakRecord #('book' 'position' 'marker') > SophieInsertParagraphBreakRecord #('book' 'position' 'marker' 'characterStyle') > SophieLinkActionRecord #('book' 'target' 'action' 'actionIndex') > SophieLinkActionAddRecord #() > SophieLinkActionRemoveRecord #() > SophieLinkRecord #('book' 'target') > SophieFrameTriggerCleanupRecord #('cleanupStuff') > SophieLinkActionCloneRecord #('source' 'oldActions') > SophieMarkerAddDeleteRecord #('marker' 'book') > SophieMarkerAddMarkersRecord #() > SophieMarkerAddRecord #() > SophieMarkerDeleteRecord #('actions' 'markerSet') > SophieMarkerRangeRecord #('book' 'marker' 'newStart' 'newStop' 'oldStart' 'oldStop') > SophiePageRecord #('bookModel' 'page') > SophieFlowOrderChangeRecord #('frame' 'index' 'flow') > SophiePageStyleRecord #('styleAttributes') > SophiePageUndoRecord #('spine' 'index' 'page') > SophieInsertPageRecord #() > SophieMovePageRecord #('oldIndex') > SophiePasteFromImporterRecord #('book' 'importer' 'position' 'marker' 'partialTree') > SophiePromoteTemplateOverridesRecord #('book' 'pageTemplateFrame' 'page' 'frameMap' 'deletedTemplateFrames' 'overrideFrames' 'templateFrameFramesFromOverideFrames' 'frameOverrides' 'frameStyleOverrides' 'frameActionsOverrides' 'oldTemplateFrameFrames' 'oldPageFlowMap' 'oldTemplateFlowMap' 'oldPageTemplate' 'newTemplateFrameFrames' 'newPageFlowMap' 'newPageTemplate' 'allRemovedFrames' 'removedOverrideFrameContents') > SophieRegisterFlowRecord #('spine' 'flowID' 'content' 'contentID' 'flow') > SophieRemoveContentRootRecord #('contentRoot' 'book') > SophieRemoveFlowRecord #('spine' 'flow') > SophieRemoveFrameRecord #('bookModel' 'page' 'frame' 'wasLocalOverride') > SophieRemoveLeafNodeRecord #('book' 'leafNode' 'oldContentIndexPosition') > SophieRemovePagesRecord #('spine' 'indices' 'pages') > SophieReplaceLibraryTemplateRecord #('book' 'template' 'newTemplate') > SophieReplaceTemplateRecord #('book' 'template' 'oldTemplateCopy' 'newTemplate') > SophieResourceUndoRecord #('resources') > SophieResourceDeleteRecord #('player') > SophieResourceImportStreamRecord #('resourceManager' 'mimeType' 'stream') > SophieResourceImportURIRecord #('resourceManager' 'uri') > SophieResourceLinkToURIRecord #() > SophieResourceStoreRecord #('book' 'object' 'metaKey') > SophieSpineStateDeltaRecord #('book' 'spine' 'addedPages' 'removedPages') > SophieSpineStateRecord #('book' 'spine' 'prevState' 'postState') > SophieTimelineUndoRecord #('timelinePlayer') > SophieTimelineUndoAbstractEventsRecord #('events') > SophieTimelineUndoAddEventsRecord #() > SophieTimelineUndoDeleteEventsRecord #() > SophieTimelineUndoAddTimeline #('timeline' 'book') > SophieTimelineUndoDeleteTimeline #() > SophieTimelineUndoEventsMoveRecord #('undoData') > SophieTriggerObjectCleanupRecord #('triggerObject' 'undoInformations') > SophieUpdateLibraryStyleRecord #('book' 'newStyle' 'styleName' 'oldStyle') > UndoRecord #('undoable' 'doMessage' 'undoMessage' 'description') > SophieFrameUndoRecord #('bookModel' 'frame') > SophieLibraryResourceUndoRecord #('bookModel') > SophiePageInvalidationRecord #('bookModel' 'page') > SophieFrameAlignmentUndoRecord #('groupFrame' 'framesAndOldPositions' 'framesAndNewPositions') > SophieTriggerMarkerUndoRecord #('bookModel' 'marker') > UndoRecordWithPostMessage #('postMessage') > UndoRecordGroup #('description' 'subRecords') > SophieFrameGroupUndoRecord #('frameGroup' 'bookModel') > > -- > =========================================================================== > John M. McIntosh <[hidden email]> Twitter: squeaker68882 > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com > =========================================================================== > > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by johnmci
Did someone get a look in production at the Undo frameworks developed by alessandro warth?
On Jan 13, 2010, at 7:18 AM, John M McIntosh wrote: > Yes, it's in the category "Sophie-Undo" > > If I consider the class AbstractUndoRecord > We hung 67 subclasses off it, which gives you an idea of the complexity of we what were doing (60 some UI actions), but also the fact it could handle it.. > > UndoManager class comment: > > UndoManager manages execution and storing of UndoRecords through #doAndAddRecord:. > It allows hierarchical grouping of UndoRecords through #openRecordGroup, #openRecordGroupNamed: and #closeRecordGroup. > Undo and redo is invoked by #undo and #redo. > > See UndoManagerTest for someExamples. > > Structure: > undoHistory OrderedCollection -- holds UndoRecords for undo > redoHistory OrderedCollection -- holds UndoRecords for redo > maxHistoryLength Integer -- Old UndoRecords in undoHistory are removed to keep it within given limits (0 for no Limit) > groupStack OrderedCollection -- temporary dataStructure to manage hierarchical grouping of UndoRecords > by #openRecordGroup and closeRecordGroup > historyInvalid Boolean -- flag to indicate, that the history is invalid and it must be deleted including the groupStack > > > On 2010-01-12, at 9:52 PM, Martin McClure wrote: > >> John M McIntosh wrote: >> >> [...] >>> >>> PS if anyone is interested the Undo/Redo Logic that Impara did for >>> Sophie was very well received, easy to use, and we could build a book >>> from scratch >>> then undo the entire creation, then redo it. This sounds complex, it >>> was. However the framework made it easy, one piece at a time... >>> Perhaps someone should harvest that since it *was* generic. >> >> Ooh, nice. A good undo/redo framework would be *so* *very* good to have. >> I'm afraid I can't be the one to harvest it, not anytime soon anyhow, >> but I hope someone picks it up. >> >> >> Regards, >> >> -Martin > > > > AbstractUndoRecord #() > SophieAddContentRootRecord #('contentRoot' 'book') > SophieAddDeleteStickyRecord #('sticky' 'page') > SophieAddStickyRecord #() > SophieDeleteStickyRecord #() > SophieAddEmbedBookRecord #('book' 'bookToEmbed') > SophieAddLeafNodeRecord #('book' 'leafNode' 'contentIndexPosition') > SophieAddStickiesRecord #('stickies' 'book') > SophieApplyFrameLocationStyleAttributesRecord #('bookModel' 'anchor' 'styleAttributes' 'oldStyleAttributes' 'page') > SophieApplyPageTemplateRecord #('page' 'template' 'undoData' 'redoData' 'allRemovedFrames') > SophieApplyParagraphStyleAttributesRecord #('book' 'marker' 'styleAttributes' 'oldStylesAttributes') > SophieApplyParagraphStyleRecord #('book' 'marker' 'style' 'oldStyles') > SophieApplyStyleToRangeRecord #('book' 'marker' 'styleAttributes' 'oldRangesStylesCollection') > SophieBookExtentUndoRecord #('bookModel' 'newExtent' 'oldExtent') > SophieBookStatisticRecord #('book' 'newStatistic' 'oldStatistic') > SophieDeleteContentRangeRecord #('book' 'marker' 'positionAfter' 'partialTree') > SophieEmbeddedBookUndoRecord #('ebook' 'embeddedBookResource' 'embeddedBookMapEntry') > SophieEmbeddedLinkedToBookUndoRecord #('ebook' 'embeddedBookMapEntry' 'embeddedBookResource') > SophieFrameRecord #('bookModel' 'frame') > SophieFrameZOrderRecord #('page' 'forward') > SophieFrameStyleUndoRecord #('bookModel' 'frame' 'attributes' 'state') > SophieFrameToTemplateRecord #('bookModel' 'frame' 'page' 'zIndex' 'reversed') > SophieInsertCharacterRecord #('book' 'character' 'position' 'positionAfter' 'style') > SophieInsertPageBreakRecord #('book' 'position' 'marker') > SophieInsertParagraphBreakRecord #('book' 'position' 'marker' 'characterStyle') > SophieLinkActionRecord #('book' 'target' 'action' 'actionIndex') > SophieLinkActionAddRecord #() > SophieLinkActionRemoveRecord #() > SophieLinkRecord #('book' 'target') > SophieFrameTriggerCleanupRecord #('cleanupStuff') > SophieLinkActionCloneRecord #('source' 'oldActions') > SophieMarkerAddDeleteRecord #('marker' 'book') > SophieMarkerAddMarkersRecord #() > SophieMarkerAddRecord #() > SophieMarkerDeleteRecord #('actions' 'markerSet') > SophieMarkerRangeRecord #('book' 'marker' 'newStart' 'newStop' 'oldStart' 'oldStop') > SophiePageRecord #('bookModel' 'page') > SophieFlowOrderChangeRecord #('frame' 'index' 'flow') > SophiePageStyleRecord #('styleAttributes') > SophiePageUndoRecord #('spine' 'index' 'page') > SophieInsertPageRecord #() > SophieMovePageRecord #('oldIndex') > SophiePasteFromImporterRecord #('book' 'importer' 'position' 'marker' 'partialTree') > SophiePromoteTemplateOverridesRecord #('book' 'pageTemplateFrame' 'page' 'frameMap' 'deletedTemplateFrames' 'overrideFrames' 'templateFrameFramesFromOverideFrames' 'frameOverrides' 'frameStyleOverrides' 'frameActionsOverrides' 'oldTemplateFrameFrames' 'oldPageFlowMap' 'oldTemplateFlowMap' 'oldPageTemplate' 'newTemplateFrameFrames' 'newPageFlowMap' 'newPageTemplate' 'allRemovedFrames' 'removedOverrideFrameContents') > SophieRegisterFlowRecord #('spine' 'flowID' 'content' 'contentID' 'flow') > SophieRemoveContentRootRecord #('contentRoot' 'book') > SophieRemoveFlowRecord #('spine' 'flow') > SophieRemoveFrameRecord #('bookModel' 'page' 'frame' 'wasLocalOverride') > SophieRemoveLeafNodeRecord #('book' 'leafNode' 'oldContentIndexPosition') > SophieRemovePagesRecord #('spine' 'indices' 'pages') > SophieReplaceLibraryTemplateRecord #('book' 'template' 'newTemplate') > SophieReplaceTemplateRecord #('book' 'template' 'oldTemplateCopy' 'newTemplate') > SophieResourceUndoRecord #('resources') > SophieResourceDeleteRecord #('player') > SophieResourceImportStreamRecord #('resourceManager' 'mimeType' 'stream') > SophieResourceImportURIRecord #('resourceManager' 'uri') > SophieResourceLinkToURIRecord #() > SophieResourceStoreRecord #('book' 'object' 'metaKey') > SophieSpineStateDeltaRecord #('book' 'spine' 'addedPages' 'removedPages') > SophieSpineStateRecord #('book' 'spine' 'prevState' 'postState') > SophieTimelineUndoRecord #('timelinePlayer') > SophieTimelineUndoAbstractEventsRecord #('events') > SophieTimelineUndoAddEventsRecord #() > SophieTimelineUndoDeleteEventsRecord #() > SophieTimelineUndoAddTimeline #('timeline' 'book') > SophieTimelineUndoDeleteTimeline #() > SophieTimelineUndoEventsMoveRecord #('undoData') > SophieTriggerObjectCleanupRecord #('triggerObject' 'undoInformations') > SophieUpdateLibraryStyleRecord #('book' 'newStyle' 'styleName' 'oldStyle') > UndoRecord #('undoable' 'doMessage' 'undoMessage' 'description') > SophieFrameUndoRecord #('bookModel' 'frame') > SophieLibraryResourceUndoRecord #('bookModel') > SophiePageInvalidationRecord #('bookModel' 'page') > SophieFrameAlignmentUndoRecord #('groupFrame' 'framesAndOldPositions' 'framesAndNewPositions') > SophieTriggerMarkerUndoRecord #('bookModel' 'marker') > UndoRecordWithPostMessage #('postMessage') > UndoRecordGroup #('description' 'subRecords') > SophieFrameGroupUndoRecord #('frameGroup' 'bookModel') > > -- > =========================================================================== > John M. McIntosh <[hidden email]> Twitter: squeaker68882 > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com > =========================================================================== > > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by johnmci
2010/1/13 John M McIntosh <[hidden email]>:
> Er yes, that would be because it works? There is some 2.0 video at http://sophiecommons.blip.tv/ which appears to work. > > The old site is at http://sophieproject.cntv.usc.edu/, open site at http://opensophie.com/ > > We could have used media like below 2 years ago. > > At ESUG I'm sure someone remarked why don't folks doing presentations at smalltalk conferences use Sophie? Advertisement problem ? -- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam Smalltalkers do: [:it | All with: Class, (And love: it)] http://doesnotunderstand.org/ _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Ya, I'm sure Stéphane said why don't you give a talk on it...
On 2010-01-13, at 1:02 AM, Serge Stinckwich wrote: > Advertisement problem ? > > -- > Serge Stinckwich > UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam > Smalltalkers do: [:it | All with: Class, (And love: it)] > http://doesnotunderstand.org/ -- =========================================================================== John M. McIntosh <[hidden email]> Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com =========================================================================== _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
nobody to talk about it
but I would really like to see Sophie used in/by smalltalkers On Jan 13, 2010, at 11:25 AM, John M McIntosh wrote: > Ya, I'm sure Stéphane said why don't you give a talk on it... > > On 2010-01-13, at 1:02 AM, Serge Stinckwich wrote: >> Advertisement problem ? >> >> -- >> Serge Stinckwich >> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam >> Smalltalkers do: [:it | All with: Class, (And love: it)] >> http://doesnotunderstand.org/ > > -- > =========================================================================== > John M. McIntosh <[hidden email]> Twitter: squeaker68882 > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com > =========================================================================== > > > > > > _______________________________________________ > Pharo-project mailing list > [hidden email] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
In reply to this post by Alexandre Bergel
cool thanks :) ...
Shortcuts were not working in inspector/explorer but I fixed (hacked - override everywhere) it now. (All these shortcuts and menu stuffs really s**ks !!!) Anyway, it works and I'll use that until we got a better clipboard and/or history support :) 2010/1/13 Alexandre Bergel <[hidden email]> I tried it and it works. Tests are clean and easy to understand. Look -- Cédrick _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Free forum by Nabble | Edit this page |