From f772c0730044529a27aab3d8fd65b2d6cbfb6115 Mon Sep 17 00:00:00 2001 From: Gwenael Casaccio Date: Tue, 29 Oct 2013 14:56:16 +0100 Subject: [PATCH] Makes the debugger/text widget non-blocking and fix the continue back into GTK/Event-Loop/C-code. --- packages/visualgst/ChangeLog | 15 ++++++ packages/visualgst/Debugger/GtkDebugger.st | 30 +++++++---- packages/visualgst/Makefile.frag | 2 +- packages/visualgst/Misc/TaskQueue.st | 81 ++++++++++++++++++++++++++++++ packages/visualgst/Text/GtkTextWidget.st | 39 ++++++++------ packages/visualgst/package.xml | 4 +- 6 files changed, 144 insertions(+), 27 deletions(-) create mode 100644 packages/visualgst/Misc/TaskQueue.st diff --git a/packages/visualgst/ChangeLog b/packages/visualgst/ChangeLog index 3b43a5f..8f34236 100644 --- a/packages/visualgst/ChangeLog +++ b/packages/visualgst/ChangeLog @@ -1,5 +1,20 @@ 2013-10-21 Gwenael Casaccio + * Debugger/GtkDebugger.st: Makes the debugger non-blocking and fix the continue back into GTK/Event-Loop/C-code. + * Debugger/GtkTextWidget.st: Makes the debugger non-blocking and fix the continue back into GTK/Event-Loop/C-code. + * Misc/TaskQueue.st : Add a queue of tasks. + +2013-10-21 Gwenael Casaccio + + * Debugger/GtkDebugger.st: If stepping while the last context is not selected it finishes the execution + up to the selected context and does the stepping command. + +2013-10-21 Gwenael Casaccio + + * Debugger/GtkDebugger.st: Code can be changed in the debugger. + +2013-10-21 Gwenael Casaccio + * Debugger/GtkDebugger.st: Eval code in the debugger. 2013-10-18 Gwenael Casaccio diff --git a/packages/visualgst/Debugger/GtkDebugger.st b/packages/visualgst/Debugger/GtkDebugger.st index f0fb969..29a3f22 100644 --- a/packages/visualgst/Debugger/GtkDebugger.st +++ b/packages/visualgst/Debugger/GtkDebugger.st @@ -285,22 +285,28 @@ GtkBrowsingTool subclass: GtkDebugger [ stepInto [ - debugger step. - self updateContextWidget + self debugWith: [ debugger step ] ] stepOver [ - debugger next. - self updateContextWidget + self debugWith: [ debugger next ] ] stepOut [ - debugger finish. - self updateContextWidget + self debugWith: [ debugger finish ] + ] + + debugWith: aBlock [ + + + TaskQueue uniqueInstance add: [ + self isLastContextSelected ifFalse: [ self stepToSelectedContext ]. + aBlock value. + self updateContextWidget ] ] continue [ @@ -375,7 +381,7 @@ GtkBrowsingTool subclass: GtkDebugger [ codeWidget hasFocus ifFalse: [ ^ self focusedWidget doIt: object ]. codeWidget hasSelection ifFalse: [ ^ self ]. - debugger eval: codeWidget selectedText. + TaskQueue uniqueInstance add: [ debugger eval: codeWidget selectedText ]. ] debugIt: object [ @@ -391,7 +397,7 @@ GtkBrowsingTool subclass: GtkDebugger [ codeWidget hasFocus ifFalse: [ ^ self focusedWidget inspectIt: object ]. codeWidget hasSelection ifFalse: [ ^ self ]. - (debugger eval: codeWidget selectedText) gtkInspect. + TaskQueue uniqueInstance add: [ (debugger eval: codeWidget selectedText) gtkInspect ]. ] printIt: object [ @@ -399,7 +405,7 @@ GtkBrowsingTool subclass: GtkDebugger [ codeWidget hasFocus ifFalse: [ ^ self focusedWidget printIt: object ]. codeWidget hasSelection ifFalse: [ ^ self ]. - codeWidget printString: (debugger eval: codeWidget selectedText). + TaskQueue uniqueInstance add: [ codeWidget printString: (debugger eval: codeWidget selectedText) ]. ] state [ @@ -438,6 +444,12 @@ GtkBrowsingTool subclass: GtkDebugger [ PrintItCommand executeOn: self ] + isLastContextSelected [ + + + ^ contextWidget selectedContext == debugger suspendedContext + ] + hasChanged [ diff --git a/packages/visualgst/Makefile.frag b/packages/visualgst/Makefile.frag index 7436df7..3a744bc 100644 --- a/packages/visualgst/Makefile.frag +++ b/packages/visualgst/Makefile.frag @@ -1,5 +1,5 @@ VisualGST_FILES = \ -packages/visualgst/AbstractFinder.st packages/visualgst/Category/AbstractNamespace.st packages/visualgst/Category/ClassCategory.st packages/visualgst/Category/Class.st packages/visualgst/ClassFinder.st packages/visualgst/Clock/GtkClock.st packages/visualgst/Commands/CategoryMenus/AddCategoryCommand.st packages/visualgst/Commands/CategoryMenus/CategoryCommand.st packages/visualgst/Commands/CategoryMenus/FileoutCategoryCommand.st packages/visualgst/Commands/CategoryMenus/RenameCategoryCommand.st packages/visualgst/Commands/ClassMenus/AddClassCommand.st packages/visualgst/Commands/ClassMenus/ClassCommand.st packages/visualgst/Commands/ClassMenus/DeleteClassCommand.st packages/visualgst/Commands/ClassMenus/FileoutClassCommand.st packages/visualgst/Commands/ClassMenus/InspectClassCommand.st packages/visualgst/Commands/ClassMenus/RenameClassCommand.st packages/visualgst/Commands/Command.st packages/visualgst/Commands/DebugMenus/ContinueDebugCommand.st packages/visualgst/Commands/DebugMenus/DebugCommand.st packages/visualgst/Commands/DebugMenus/StepIntoDebugCommand.st packages/visualgst/Commands/DebugMenus/StepOverDebugCommand.st packages/visualgst/Commands/EditMenus/CancelEditCommand.st packages/visualgst/Commands/EditMenus/CopyEditCommand.st packages/visualgst/Commands/EditMenus/CutEditCommand.st packages/visualgst/Commands/EditMenus/FindEditCommand.st packages/visualgst/Commands/EditMenus/PasteEditCommand.st packages/visualgst/Commands/EditMenus/RedoEditCommand.st packages/visualgst/Commands/EditMenus/ReplaceEditCommand.st packages/visualgst/Commands/EditMenus/SelectAllEditCommand.st packages/visualgst/Commands/EditMenus/UndoEditCommand.st packages/visualgst/Commands/HistoryCommands/HistoryBackCommand.st packages/visualgst/Commands/HistoryCommands/HistoryDisplayCommand.st packages/visualgst/Commands/HistoryCommands/HistoryForwardCommand.st packages/visualgst/Commands/InspectorMenus/InspectorBackCommand.st packages/visualgst/Commands/InspectorMenus/InspectorDiveCommand.st packages/visualgst/Commands/MethodMenus/DebugTestCommand.st packages/visualgst/Commands/MethodMenus/DeleteMethodCommand.st packages/visualgst/Commands/MethodMenus/FileoutMethodCommand.st packages/visualgst/Commands/MethodMenus/InspectMethodCommand.st packages/visualgst/Commands/MethodMenus/MethodCommand.st packages/visualgst/Commands/NamespaceMenus/AddNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/DeleteNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/FileoutNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/InspectNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/NamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/RenameNamespaceCommand.st packages/visualgst/Commands/OpenBrowserCommand.st packages/visualgst/Commands/OpenTabbedBrowserCommand.st packages/visualgst/Commands/OpenWorkspaceCommand.st packages/visualgst/Commands/SaveImageAsCommand.st packages/visualgst/Commands/SaveImageCommand.st packages/visualgst/Commands/SmalltalkMenus/AcceptItCommand.st packages/visualgst/Commands/SmalltalkMenus/CancelCommand.st packages/visualgst/Commands/SmalltalkMenus/DebugItCommand.st packages/visualgst/Commands/SmalltalkMenus/DoItCommand.st packages/visualgst/Commands/SmalltalkMenus/InspectItCommand.st packages/visualgst/Commands/SmalltalkMenus/PrintItCommand.st packages/visualgst/Commands/System/AddClassCommand.st packages/visualgst/Commands/System/AddMethodCommand.st packages/visualgst/Commands/System/AddNamespaceCommand.st packages/visualgst/Commands/System/DeleteClassCommand.st packages/visualgst/Commands/System/DeleteMethodCommand.st packages/visualgst/Commands/System/DeleteNamespaceCommand.st packages/visualgst/Commands/System/RenameCategoryCommand.st packages/visualgst/Commands/System/RenameClassCommand.st packages/visualgst/Commands/System/RenameNamespaceCommand.st packages/visualgst/Commands/TabsMenus/CloseTabCommand.st packages/visualgst/Commands/TabsMenus/NextTabCommand.st packages/visualgst/Commands/TabsMenus/PreviousTabCommand.st packages/visualgst/Commands/ToolsMenus/OpenAssistantCommand.st packages/visualgst/Commands/ToolsMenus/OpenBottomPaneCommand.st packages/visualgst/Commands/ToolsMenus/OpenImplementorCommand.st packages/visualgst/Commands/ToolsMenus/OpenPackageBuilderCommand.st packages/visualgst/Commands/ToolsMenus/OpenSenderCommand.st packages/visualgst/Commands/ToolsMenus/OpenSUnitCommand.st packages/visualgst/Commands/ToolsMenus/OpenWebBrowserCommand.st packages/visualgst/Commands/WorkspaceMenus/DeleteItemCommand.st packages/visualgst/Commands/WorkspaceMenus/InspectItemCommand.st packages/visualgst/Commands/WorkspaceMenus/WorkspaceVariableCommand.st packages/visualgst/Debugger/Extensions.st packages/visualgst/Debugger/GtkContextWidget.st packages/visualgst/Debugger/GtkDebugger.st packages/visualgst/Debugger/GtkStackInspector.st packages/visualgst/Debugger/GtkStackInspectorView.st packages/visualgst/Extensions.st packages/visualgst/FakeNamespace.st packages/visualgst/GtkAbstractConcreteWidget.st packages/visualgst/GtkAnnouncer.st packages/visualgst/GtkAssistant.st packages/visualgst/GtkBrowsingTool.st packages/visualgst/GtkClassSelectionChanged.st packages/visualgst/GtkClassSUnitWidget.st packages/visualgst/GtkConcreteWidget.st packages/visualgst/GtkEntryDialog.st packages/visualgst/GtkEntryWidget.st packages/visualgst/Gtk/GtkEntryBuffer.st packages/visualgst/Gtk/GtkEntry.st packages/visualgst/GtkHistoryWidget.st packages/visualgst/GtkHSidebarWidget.st packages/visualgst/GtkLauncher.st packages/visualgst/GtkListModel.st packages/visualgst/GtkMainWindow.st packages/visualgst/GtkMethodSUnitWidget.st packages/visualgst/GtkNamespaceSelectionChanged.st packages/visualgst/GtkNotebookWidget.st packages/visualgst/GtkPackageBuilderWidget.st packages/visualgst/GtkScrollTreeWidget.st packages/visualgst/GtkSidebarWidget.st packages/visualgst/GtkSimpleListWidget.st packages/visualgst/GtkTranscriptWidget.st packages/visualgst/GtkTreeModel.st packages/visualgst/GtkVariableTrackerWidget.st packages/visualgst/GtkVisualGSTTool.st packages/visualgst/GtkVSidebarWidget.st packages/visualgst/GtkWebBrowser.st packages/visualgst/GtkWebView.st packages/visualgst/GtkWorkspaceWidget.st packages/visualgst/HistoryStack.st packages/visualgst/Icons/category.gif packages/visualgst/Icons/extension.png packages/visualgst/Icons/go-bottom.png packages/visualgst/Icons/go-down.png packages/visualgst/Icons/go-first.png packages/visualgst/Icons/go-home.png packages/visualgst/Icons/go-jump.png packages/visualgst/Icons/go-last.png packages/visualgst/Icons/go-next.png packages/visualgst/Icons/go-previous.png packages/visualgst/Icons/go-run.png packages/visualgst/Icons/go-top.png packages/visualgst/Icons/go-up.png packages/visualgst/Icons/namespace.gif packages/visualgst/Icons/NUnit.Failed.png packages/visualgst/Icons/NUnit.Loading.png packages/visualgst/Icons/NUnit.None.png packages/visualgst/Icons/NUnit.NotRun.png packages/visualgst/Icons/NUnit.Running.png packages/visualgst/Icons/NUnit.SuccessAndFailed.png packages/visualgst/Icons/NUnit.Success.png packages/visualgst/Icons/overridden.png packages/visualgst/Icons/override.png packages/visualgst/Icons/visualgst.png packages/visualgst/Image/GtkImageModel.st packages/visualgst/Image/GtkImageWidget.st packages/visualgst/Implementors/GtkImageResultsWidget.st packages/visualgst/Implementors/GtkImplementorResultsWidget.st packages/visualgst/Implementors/GtkSenderResultsWidget.st packages/visualgst/Inspector/Extensions.st packages/visualgst/Inspector/GtkCharacterInspectorView.st packages/visualgst/Inspector/GtkCompiledBlockInspectorView.st packages/visualgst/Inspector/GtkCompiledMethodInspectorView.st packages/visualgst/Inspector/GtkContextInspectorView.st packages/visualgst/Inspector/GtkDictionaryInspectorView.st packages/visualgst/Inspector/GtkFloatInspectorView.st packages/visualgst/Inspector/GtkInspectorBrowserWidget.st packages/visualgst/Inspector/GtkInspectorSourceWidget.st packages/visualgst/Inspector/GtkInspector.st packages/visualgst/Inspector/GtkInspectorWidget.st packages/visualgst/Inspector/GtkIntegerInspectorView.st packages/visualgst/Inspector/GtkObjectInspectorView.st packages/visualgst/Inspector/GtkSequenceableCollectionInspectorView.st packages/visualgst/Inspector/GtkSetInspectorView.st packages/visualgst/Menus/CategoryMenus.st packages/visualgst/Menus/ClassMenus.st packages/visualgst/Menus/ContextMenus.st packages/visualgst/Menus/DebuggerToolbar.st packages/visualgst/Menus/EditMenus.st packages/visualgst/Menus/HistoryMenus.st packages/visualgst/Menus/InspectorMenus.st packages/visualgst/Menus/LauncherToolbar.st packages/visualgst/Menus/MenuBuilder.st packages/visualgst/Menus/MenuSeparator.st packages/visualgst/Menus/MethodMenus.st packages/visualgst/Menus/NamespaceMenus.st packages/visualgst/Menus/SimpleWorkspaceMenus.st packages/visualgst/Menus/SmalltalkMenus.st packages/visualgst/Menus/TabsMenus.st packages/visualgst/Menus/TextMenus.st packages/visualgst/Menus/ToolbarSeparator.st packages/visualgst/Menus/ToolsMenus.st packages/visualgst/Menus/WorkspaceMenus.st packages/visualgst/Menus/WorkspaceVariableMenus.st packages/visualgst/MethodFinder.st packages/visualgst/Model/GtkColumnOOPType.st packages/visualgst/Model/GtkColumnPixbufType.st packages/visualgst/Model/GtkColumnTextType.st packages/visualgst/Model/GtkColumnType.st packages/visualgst/NamespaceFinder.st packages/visualgst/Notification/AbstractEvent.st packages/visualgst/Notification/AddedEvent.st packages/visualgst/Notification/CommentedEvent.st packages/visualgst/Notification/DoItEvent.st packages/visualgst/Notification/EventDispatcher.st packages/visualgst/Notification/EventMultiplexer.st packages/visualgst/Notification/Kernel/AbstractNamespace.st packages/visualgst/Notification/Kernel/Class.st packages/visualgst/Notification/Kernel/Metaclass.st packages/visualgst/Notification/Kernel/MethodDictionary.st packages/visualgst/Notification/ModifiedClassDefinitionEvent.st packages/visualgst/Notification/ModifiedEvent.st packages/visualgst/Notification/RecategorizedEvent.st packages/visualgst/Notification/RemovedEvent.st packages/visualgst/Notification/RenamedEvent.st packages/visualgst/Notification/ReorganizedEvent.st packages/visualgst/Notification/SystemChangeNotifier.st packages/visualgst/Notification/SystemEventManager.st packages/visualgst/Source/BrowserMethodSource.st packages/visualgst/Source/CategorySource.st packages/visualgst/Source/ClassHeaderSource.st packages/visualgst/Source/ClassSource.st packages/visualgst/Source/MethodSource.st packages/visualgst/Source/NamespaceHeaderSource.st packages/visualgst/Source/NamespaceSource.st packages/visualgst/Source/PackageSource.st packages/visualgst/Source/SourceFormatter.st packages/visualgst/State/BrowserState.st packages/visualgst/State/CategoryState.st packages/visualgst/State/ClassState.st packages/visualgst/State/MethodState.st packages/visualgst/State/NamespaceState.st packages/visualgst/StBrowser/GtkCategorizedClassWidget.st packages/visualgst/StBrowser/GtkCategorizedNamespaceWidget.st packages/visualgst/StBrowser/GtkCategoryWidget.st packages/visualgst/StBrowser/GtkClassBrowserWidget.st packages/visualgst/StBrowser/GtkClassHierarchyWidget.st packages/visualgst/StBrowser/GtkMethodWidget.st packages/visualgst/SUnit/GtkSUnitResultWidget.st packages/visualgst/SUnit/GtkSUnit.st packages/visualgst/SUnit/TestBacktraceLog.st packages/visualgst/SyntaxHighlighter.st packages/visualgst/Tests/AddClassUndoCommandTest.st packages/visualgst/Tests/AddNamespaceUndoCommandTest.st packages/visualgst/Tests/CategoryTest.st packages/visualgst/Tests/CompiledMethodTest.st packages/visualgst/Tests/EmptyTest.st packages/visualgst/Tests/ExtractLiteralsTest.st packages/visualgst/Tests/FinderTest.st packages/visualgst/Tests/GtkAssistantTest.st packages/visualgst/Tests/GtkCategorizedClassWidgetTest.st packages/visualgst/Tests/GtkCategorizedNamespaceWidgetTest.st packages/visualgst/Tests/GtkCategoryWidgetTest.st packages/visualgst/Tests/GtkConcreteWidgetTest.st packages/visualgst/Tests/GtkMethodWidgetTest.st packages/visualgst/Tests/GtkScrollTreeWidgetTest.st packages/visualgst/Tests/GtkSimpleListWidgetTest.st packages/visualgst/Tests/MenuBuilderTest.st packages/visualgst/Tests/PragmaTest.st packages/visualgst/Tests/StateTest.st packages/visualgst/Tetris/BlockWidget.st packages/visualgst/Tetris/HighScores.st packages/visualgst/Tetris/Score.st packages/visualgst/Tetris/TetrisField.st packages/visualgst/Tetris/TetrisPieceI.st packages/visualgst/Tetris/TetrisPieceJ.st packages/visualgst/Tetris/TetrisPieceL.st packages/visualgst/Tetris/TetrisPieceO.st packages/visualgst/Tetris/TetrisPieceS.st packages/visualgst/Tetris/TetrisPiece.st packages/visualgst/Tetris/TetrisPieceT.st packages/visualgst/Tetris/TetrisPieceWidget.st packages/visualgst/Tetris/TetrisPieceZ.st packages/visualgst/Tetris/Tetris.st packages/visualgst/Text/GtkFindWidget.st packages/visualgst/Text/GtkReplaceWidget.st packages/visualgst/Text/GtkSaveTextWidget.st packages/visualgst/Text/GtkSourceCodeWidget.st packages/visualgst/Text/GtkTextPluginWidget.st packages/visualgst/Text/GtkTextWidget.st packages/visualgst/Undo/Text/DeleteTextCommand.st packages/visualgst/Undo/Text/InsertTextCommand.st packages/visualgst/Undo/Text/ReplaceTextCommand.st packages/visualgst/Undo/UndoCommand.st packages/visualgst/Undo/UndoStack.st packages/visualgst/WorkspaceVariableTracker.st +packages/visualgst/AbstractFinder.st packages/visualgst/Category/AbstractNamespace.st packages/visualgst/Category/ClassCategory.st packages/visualgst/Category/Class.st packages/visualgst/ClassFinder.st packages/visualgst/Clock/GtkClock.st packages/visualgst/Commands/CategoryMenus/AddCategoryCommand.st packages/visualgst/Commands/CategoryMenus/CategoryCommand.st packages/visualgst/Commands/CategoryMenus/FileoutCategoryCommand.st packages/visualgst/Commands/CategoryMenus/RenameCategoryCommand.st packages/visualgst/Commands/ClassMenus/AddClassCommand.st packages/visualgst/Commands/ClassMenus/ClassCommand.st packages/visualgst/Commands/ClassMenus/DeleteClassCommand.st packages/visualgst/Commands/ClassMenus/FileoutClassCommand.st packages/visualgst/Commands/ClassMenus/InspectClassCommand.st packages/visualgst/Commands/ClassMenus/RenameClassCommand.st packages/visualgst/Commands/Command.st packages/visualgst/Commands/DebugMenus/ContinueDebugCommand.st packages/visualgst/Commands/DebugMenus/DebugCommand.st packages/visualgst/Commands/DebugMenus/StepIntoDebugCommand.st packages/visualgst/Commands/DebugMenus/StepOverDebugCommand.st packages/visualgst/Commands/EditMenus/CancelEditCommand.st packages/visualgst/Commands/EditMenus/CopyEditCommand.st packages/visualgst/Commands/EditMenus/CutEditCommand.st packages/visualgst/Commands/EditMenus/FindEditCommand.st packages/visualgst/Commands/EditMenus/PasteEditCommand.st packages/visualgst/Commands/EditMenus/RedoEditCommand.st packages/visualgst/Commands/EditMenus/ReplaceEditCommand.st packages/visualgst/Commands/EditMenus/SelectAllEditCommand.st packages/visualgst/Commands/EditMenus/UndoEditCommand.st packages/visualgst/Commands/HistoryCommands/HistoryBackCommand.st packages/visualgst/Commands/HistoryCommands/HistoryDisplayCommand.st packages/visualgst/Commands/HistoryCommands/HistoryForwardCommand.st packages/visualgst/Commands/InspectorMenus/InspectorBackCommand.st packages/visualgst/Commands/InspectorMenus/InspectorDiveCommand.st packages/visualgst/Commands/MethodMenus/DebugTestCommand.st packages/visualgst/Commands/MethodMenus/DeleteMethodCommand.st packages/visualgst/Commands/MethodMenus/FileoutMethodCommand.st packages/visualgst/Commands/MethodMenus/InspectMethodCommand.st packages/visualgst/Commands/MethodMenus/MethodCommand.st packages/visualgst/Commands/NamespaceMenus/AddNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/DeleteNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/FileoutNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/InspectNamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/NamespaceCommand.st packages/visualgst/Commands/NamespaceMenus/RenameNamespaceCommand.st packages/visualgst/Commands/OpenBrowserCommand.st packages/visualgst/Commands/OpenTabbedBrowserCommand.st packages/visualgst/Commands/OpenWorkspaceCommand.st packages/visualgst/Commands/SaveImageAsCommand.st packages/visualgst/Commands/SaveImageCommand.st packages/visualgst/Commands/SmalltalkMenus/AcceptItCommand.st packages/visualgst/Commands/SmalltalkMenus/CancelCommand.st packages/visualgst/Commands/SmalltalkMenus/DebugItCommand.st packages/visualgst/Commands/SmalltalkMenus/DoItCommand.st packages/visualgst/Commands/SmalltalkMenus/InspectItCommand.st packages/visualgst/Commands/SmalltalkMenus/PrintItCommand.st packages/visualgst/Commands/System/AddClassCommand.st packages/visualgst/Commands/System/AddMethodCommand.st packages/visualgst/Commands/System/AddNamespaceCommand.st packages/visualgst/Commands/System/DeleteClassCommand.st packages/visualgst/Commands/System/DeleteMethodCommand.st packages/visualgst/Commands/System/DeleteNamespaceCommand.st packages/visualgst/Commands/System/RenameCategoryCommand.st packages/visualgst/Commands/System/RenameClassCommand.st packages/visualgst/Commands/System/RenameNamespaceCommand.st packages/visualgst/Commands/TabsMenus/CloseTabCommand.st packages/visualgst/Commands/TabsMenus/NextTabCommand.st packages/visualgst/Commands/TabsMenus/PreviousTabCommand.st packages/visualgst/Commands/ToolsMenus/OpenAssistantCommand.st packages/visualgst/Commands/ToolsMenus/OpenBottomPaneCommand.st packages/visualgst/Commands/ToolsMenus/OpenImplementorCommand.st packages/visualgst/Commands/ToolsMenus/OpenPackageBuilderCommand.st packages/visualgst/Commands/ToolsMenus/OpenSenderCommand.st packages/visualgst/Commands/ToolsMenus/OpenSUnitCommand.st packages/visualgst/Commands/ToolsMenus/OpenWebBrowserCommand.st packages/visualgst/Commands/WorkspaceMenus/DeleteItemCommand.st packages/visualgst/Commands/WorkspaceMenus/InspectItemCommand.st packages/visualgst/Commands/WorkspaceMenus/WorkspaceVariableCommand.st packages/visualgst/Debugger/Extensions.st packages/visualgst/Debugger/GtkContextWidget.st packages/visualgst/Debugger/GtkDebugger.st packages/visualgst/Debugger/GtkStackInspector.st packages/visualgst/Debugger/GtkStackInspectorView.st packages/visualgst/Extensions.st packages/visualgst/FakeNamespace.st packages/visualgst/GtkAbstractConcreteWidget.st packages/visualgst/GtkAnnouncer.st packages/visualgst/GtkAssistant.st packages/visualgst/GtkBrowsingTool.st packages/visualgst/GtkClassSelectionChanged.st packages/visualgst/GtkClassSUnitWidget.st packages/visualgst/GtkConcreteWidget.st packages/visualgst/GtkEntryDialog.st packages/visualgst/GtkEntryWidget.st packages/visualgst/Gtk/GtkEntryBuffer.st packages/visualgst/Gtk/GtkEntry.st packages/visualgst/GtkHistoryWidget.st packages/visualgst/GtkHSidebarWidget.st packages/visualgst/GtkLauncher.st packages/visualgst/GtkListModel.st packages/visualgst/GtkMainWindow.st packages/visualgst/GtkMethodSUnitWidget.st packages/visualgst/GtkNamespaceSelectionChanged.st packages/visualgst/GtkNotebookWidget.st packages/visualgst/GtkPackageBuilderWidget.st packages/visualgst/GtkScrollTreeWidget.st packages/visualgst/GtkSidebarWidget.st packages/visualgst/GtkSimpleListWidget.st packages/visualgst/GtkTranscriptWidget.st packages/visualgst/GtkTreeModel.st packages/visualgst/GtkVariableTrackerWidget.st packages/visualgst/GtkVisualGSTTool.st packages/visualgst/GtkVSidebarWidget.st packages/visualgst/GtkWebBrowser.st packages/visualgst/GtkWebView.st packages/visualgst/GtkWorkspaceWidget.st packages/visualgst/HistoryStack.st packages/visualgst/Icons/category.gif packages/visualgst/Icons/extension.png packages/visualgst/Icons/go-bottom.png packages/visualgst/Icons/go-down.png packages/visualgst/Icons/go-first.png packages/visualgst/Icons/go-home.png packages/visualgst/Icons/go-jump.png packages/visualgst/Icons/go-last.png packages/visualgst/Icons/go-next.png packages/visualgst/Icons/go-previous.png packages/visualgst/Icons/go-run.png packages/visualgst/Icons/go-top.png packages/visualgst/Icons/go-up.png packages/visualgst/Icons/namespace.gif packages/visualgst/Icons/NUnit.Failed.png packages/visualgst/Icons/NUnit.Loading.png packages/visualgst/Icons/NUnit.None.png packages/visualgst/Icons/NUnit.NotRun.png packages/visualgst/Icons/NUnit.Running.png packages/visualgst/Icons/NUnit.SuccessAndFailed.png packages/visualgst/Icons/NUnit.Success.png packages/visualgst/Icons/overridden.png packages/visualgst/Icons/override.png packages/visualgst/Icons/visualgst.png packages/visualgst/Image/GtkImageModel.st packages/visualgst/Image/GtkImageWidget.st packages/visualgst/Implementors/GtkImageResultsWidget.st packages/visualgst/Implementors/GtkImplementorResultsWidget.st packages/visualgst/Implementors/GtkSenderResultsWidget.st packages/visualgst/Inspector/Extensions.st packages/visualgst/Inspector/GtkCharacterInspectorView.st packages/visualgst/Inspector/GtkCompiledBlockInspectorView.st packages/visualgst/Inspector/GtkCompiledMethodInspectorView.st packages/visualgst/Inspector/GtkContextInspectorView.st packages/visualgst/Inspector/GtkDictionaryInspectorView.st packages/visualgst/Inspector/GtkFloatInspectorView.st packages/visualgst/Inspector/GtkInspectorBrowserWidget.st packages/visualgst/Inspector/GtkInspectorSourceWidget.st packages/visualgst/Inspector/GtkInspector.st packages/visualgst/Inspector/GtkInspectorWidget.st packages/visualgst/Inspector/GtkIntegerInspectorView.st packages/visualgst/Inspector/GtkObjectInspectorView.st packages/visualgst/Inspector/GtkSequenceableCollectionInspectorView.st packages/visualgst/Inspector/GtkSetInspectorView.st packages/visualgst/Menus/CategoryMenus.st packages/visualgst/Menus/ClassMenus.st packages/visualgst/Menus/ContextMenus.st packages/visualgst/Menus/DebuggerToolbar.st packages/visualgst/Menus/EditMenus.st packages/visualgst/Menus/HistoryMenus.st packages/visualgst/Menus/InspectorMenus.st packages/visualgst/Menus/LauncherToolbar.st packages/visualgst/Menus/MenuBuilder.st packages/visualgst/Menus/MenuSeparator.st packages/visualgst/Menus/MethodMenus.st packages/visualgst/Menus/NamespaceMenus.st packages/visualgst/Menus/SimpleWorkspaceMenus.st packages/visualgst/Menus/SmalltalkMenus.st packages/visualgst/Menus/TabsMenus.st packages/visualgst/Menus/TextMenus.st packages/visualgst/Menus/ToolbarSeparator.st packages/visualgst/Menus/ToolsMenus.st packages/visualgst/Menus/WorkspaceMenus.st packages/visualgst/Menus/WorkspaceVariableMenus.st packages/visualgst/MethodFinder.st packages/visualgst/Misc/TaskQueue.st packages/visualgst/Model/GtkColumnOOPType.st packages/visualgst/Model/GtkColumnPixbufType.st packages/visualgst/Model/GtkColumnTextType.st packages/visualgst/Model/GtkColumnType.st packages/visualgst/NamespaceFinder.st packages/visualgst/Notification/AbstractEvent.st packages/visualgst/Notification/AddedEvent.st packages/visualgst/Notification/CommentedEvent.st packages/visualgst/Notification/DoItEvent.st packages/visualgst/Notification/EventDispatcher.st packages/visualgst/Notification/EventMultiplexer.st packages/visualgst/Notification/Kernel/AbstractNamespace.st packages/visualgst/Notification/Kernel/Class.st packages/visualgst/Notification/Kernel/Metaclass.st packages/visualgst/Notification/Kernel/MethodDictionary.st packages/visualgst/Notification/ModifiedClassDefinitionEvent.st packages/visualgst/Notification/ModifiedEvent.st packages/visualgst/Notification/RecategorizedEvent.st packages/visualgst/Notification/RemovedEvent.st packages/visualgst/Notification/RenamedEvent.st packages/visualgst/Notification/ReorganizedEvent.st packages/visualgst/Notification/SystemChangeNotifier.st packages/visualgst/Notification/SystemEventManager.st packages/visualgst/Source/BrowserMethodSource.st packages/visualgst/Source/CategorySource.st packages/visualgst/Source/ClassHeaderSource.st packages/visualgst/Source/ClassSource.st packages/visualgst/Source/MethodSource.st packages/visualgst/Source/NamespaceHeaderSource.st packages/visualgst/Source/NamespaceSource.st packages/visualgst/Source/PackageSource.st packages/visualgst/Source/SourceFormatter.st packages/visualgst/State/BrowserState.st packages/visualgst/State/CategoryState.st packages/visualgst/State/ClassState.st packages/visualgst/State/MethodState.st packages/visualgst/State/NamespaceState.st packages/visualgst/StBrowser/GtkCategorizedClassWidget.st packages/visualgst/StBrowser/GtkCategorizedNamespaceWidget.st packages/visualgst/StBrowser/GtkCategoryWidget.st packages/visualgst/StBrowser/GtkClassBrowserWidget.st packages/visualgst/StBrowser/GtkClassHierarchyWidget.st packages/visualgst/StBrowser/GtkMethodWidget.st packages/visualgst/SUnit/GtkSUnitResultWidget.st packages/visualgst/SUnit/GtkSUnit.st packages/visualgst/SUnit/TestBacktraceLog.st packages/visualgst/SyntaxHighlighter.st packages/visualgst/Tests/AddClassUndoCommandTest.st packages/visualgst/Tests/AddNamespaceUndoCommandTest.st packages/visualgst/Tests/CategoryTest.st packages/visualgst/Tests/CompiledMethodTest.st packages/visualgst/Tests/EmptyTest.st packages/visualgst/Tests/ExtractLiteralsTest.st packages/visualgst/Tests/FinderTest.st packages/visualgst/Tests/GtkAssistantTest.st packages/visualgst/Tests/GtkCategorizedClassWidgetTest.st packages/visualgst/Tests/GtkCategorizedNamespaceWidgetTest.st packages/visualgst/Tests/GtkCategoryWidgetTest.st packages/visualgst/Tests/GtkConcreteWidgetTest.st packages/visualgst/Tests/GtkMethodWidgetTest.st packages/visualgst/Tests/GtkScrollTreeWidgetTest.st packages/visualgst/Tests/GtkSimpleListWidgetTest.st packages/visualgst/Tests/MenuBuilderTest.st packages/visualgst/Tests/PragmaTest.st packages/visualgst/Tests/StateTest.st packages/visualgst/Tetris/BlockWidget.st packages/visualgst/Tetris/HighScores.st packages/visualgst/Tetris/Score.st packages/visualgst/Tetris/TetrisField.st packages/visualgst/Tetris/TetrisPieceI.st packages/visualgst/Tetris/TetrisPieceJ.st packages/visualgst/Tetris/TetrisPieceL.st packages/visualgst/Tetris/TetrisPieceO.st packages/visualgst/Tetris/TetrisPieceS.st packages/visualgst/Tetris/TetrisPiece.st packages/visualgst/Tetris/TetrisPieceT.st packages/visualgst/Tetris/TetrisPieceWidget.st packages/visualgst/Tetris/TetrisPieceZ.st packages/visualgst/Tetris/Tetris.st packages/visualgst/Text/GtkFindWidget.st packages/visualgst/Text/GtkReplaceWidget.st packages/visualgst/Text/GtkSaveTextWidget.st packages/visualgst/Text/GtkSourceCodeWidget.st packages/visualgst/Text/GtkTextPluginWidget.st packages/visualgst/Text/GtkTextWidget.st packages/visualgst/Undo/Text/DeleteTextCommand.st packages/visualgst/Undo/Text/InsertTextCommand.st packages/visualgst/Undo/Text/ReplaceTextCommand.st packages/visualgst/Undo/UndoCommand.st packages/visualgst/Undo/UndoStack.st packages/visualgst/WorkspaceVariableTracker.st $(VisualGST_FILES): $(srcdir)/packages/visualgst/stamp-classes: $(VisualGST_FILES) touch $(srcdir)/packages/visualgst/stamp-classes diff --git a/packages/visualgst/Misc/TaskQueue.st b/packages/visualgst/Misc/TaskQueue.st new file mode 100644 index 0000000..5922309 --- /dev/null +++ b/packages/visualgst/Misc/TaskQueue.st @@ -0,0 +1,81 @@ +"====================================================================== +| +| TaskQueue class definition +| +======================================================================" + +"====================================================================== +| +| Copyright (c) 2013 +| Gwenael Casaccio , +| +| +| This file is part of VisualGST. +| +| Permission is hereby granted, free of charge, to any person obtaining +| a copy of this software and associated documentation files (the +| 'Software'), to deal in the Software without restriction, including +| without limitation the rights to use, copy, modify, merge, publish, +| distribute, sublicense, and/or sell copies of the Software, and to +| permit persons to whom the Software is furnished to do so, subject to +| the following conditions: +| +| The above copyright notice and this permission notice shall be +| included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +| IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +| CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +| TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +| +======================================================================" + +Object subclass: TaskQueue [ + + TaskQueue class [ | uniqueInstance | ] + + | queue queueHandler currentProcess | + + TaskQueue class >> new [ + + + ^ super new + initialize; + yourself + ] + + TaskQueue class >> uniqueInstance [ + + + ^ uniqueInstance ifNil: [ uniqueInstance := self new ] + ] + + initialize [ + + + queue := SharedQueue new + ] + + add: aBlock [ + + + queue nextPut: aBlock + ] + + run [ + + + queueHandler := [ | task sem | + sem := Semaphore new. + [ task := queue next. + currentProcess := [ [ task value. + sem signal ] on: Exception do: [ :ex | [ sem signal ] fork. + ex pass ] ] fork. + sem wait. + currentProcess := nil ] repeat ] fork + ] +] + diff --git a/packages/visualgst/Text/GtkTextWidget.st b/packages/visualgst/Text/GtkTextWidget.st index 0036562..0008237 100644 --- a/packages/visualgst/Text/GtkTextWidget.st +++ b/packages/visualgst/Text/GtkTextWidget.st @@ -381,17 +381,23 @@ GtkConcreteWidget subclass: GtkTextWidget [ ] - doIt: object [ + doWithoutForkIt: object [ - | result | + | result | self beforeEvaluation. result := Behavior - evaluate: self buffer selectedText - to: object - ifError: [ :fname :lineNo :errorString | self error: errorString ]. - self afterEvaluation. - ^ result + evaluate: self buffer selectedText + to: object + ifError: [ :fname :lineNo :errorString | self error: errorString ]. + self afterEvaluation. + ^ result + ] + + doIt: object [ + + + TaskQueue uniqueInstance add: [ self doWithoutForkIt: object ] ] debugIt: object [ @@ -409,19 +415,20 @@ GtkConcreteWidget subclass: GtkTextWidget [ inspectIt: object [ - GtkInspector openOn: (self doIt: object) + TaskQueue uniqueInstance add: [ GtkInspector openOn: (self doWithoutForkIt: object) ] ] printIt: object [ - | iter start end result | - iter := self buffer iterOfSelectedText second. - result := ' ', ((self doIt: object) displayString), ' '. - self buffer insertInteractive: iter text: result len: result size defaultEditable: true. - start := self buffer getIterAtOffset: (iter getOffset - result size). - end := self buffer getIterAtOffset: (iter getOffset). - self buffer selectRange: start bound: end + TaskQueue uniqueInstance add: + [ | iter start end result | + iter := self buffer iterOfSelectedText second. + result := ' ', ((self doWithoutForkIt: object) displayString), ' '. + self buffer insertInteractive: iter text: result len: result size defaultEditable: true. + start := self buffer getIterAtOffset: (iter getOffset - result size). + end := self buffer getIterAtOffset: (iter getOffset). + self buffer selectRange: start bound: end ] ] - ] + diff --git a/packages/visualgst/package.xml b/packages/visualgst/package.xml index d21c5e3..52e7a31 100644 --- a/packages/visualgst/package.xml +++ b/packages/visualgst/package.xml @@ -71,6 +71,7 @@ Gtk/GtkEntry.st Gtk/GtkEntryBuffer.st Extensions.st + Misc/TaskQueue.st Notification/AbstractEvent.st Notification/AddedEvent.st Notification/CommentedEvent.st @@ -556,5 +557,6 @@ Icons/override.png Icons/visualgst.png VisualGST.GtkLauncher open. - GTK.Gtk main + VisualGST.TaskQueue uniqueInstance run. + GTK.Gtk main. -- 1.8.3.2