~hilaire-fernandes/drgeo/trunk

« back to all changes in this revision

Viewing changes to src/DrGeo.pck.st

  • Committer: Hilaire Fernandes
  • Date: 2023-08-08 17:15:39 UTC
  • Revision ID: hilaire@drgeo.eu-20230808171539-xdga57hh7cpjx39w
Renamed the presenter as DrGeo

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
'From Cuis 6.0 [latest update: #5968] on 5 August 2023 at 4:17:37 pm'!
 
1
'From Cuis 6.0 [latest update: #5968] on 8 August 2023 at 7:14:40 pm'!
2
2
'Description '!
3
 
!provides: 'DrGeo' 1 634!
 
3
!provides: 'DrGeo' 1 635!
4
4
!requires: 'Gettext' 1 17 nil!
5
5
!requires: 'SVG' 1 16 nil!
6
6
!requires: 'YAXO' 1 19 nil!
2190
2190
DrGUIMinimalControlsManager class
2191
2191
        instanceVariableNames: ''!
2192
2192
 
2193
 
!classDefinition: #DrGeoPresenter category: #'DrGeo-Presenter'!
2194
 
Object subclass: #DrGeoPresenter
 
2193
!classDefinition: #DrGeo category: #'DrGeo-Presenter'!
 
2194
Object subclass: #DrGeo
2195
2195
        instanceVariableNames: 'domain controlsManager tool gridStuck isCreateMultipleMode selectedTool selection sketchName exportImageName saved notInteractive'
2196
2196
        classVariableNames: ''
2197
2197
        poolDictionaries: ''
2198
2198
        category: 'DrGeo-Presenter'!
2199
 
!classDefinition: 'DrGeoPresenter class' category: #'DrGeo-Presenter'!
2200
 
DrGeoPresenter class
 
2199
!classDefinition: 'DrGeo class' category: #'DrGeo-Presenter'!
 
2200
DrGeo class
2201
2201
        instanceVariableNames: ''!
2202
2202
 
2203
2203
!classDefinition: #DrGTool category: #'DrGeo-Presenter-Tool'!
3329
3329
- I build the main Dr. Geo view (Window or simpler view)
3330
3330
!
3331
3331
 
3332
 
!DrGeoPresenter commentStamp: 'hlsf 8/3/2023 21:22:27' prior: 0!
 
3332
!DrGeo commentStamp: 'hlsf 8/3/2023 21:22:27' prior: 0!
3333
3333
A DrGPresenter is a presenter for the DrGeo app.
3334
3334
It is the interface to callback, state of the application
3335
3335
 
3415
3415
!DrGPropertyCommand commentStamp: '' prior: 0!
3416
3416
A command to record property editing!
3417
3417
 
3418
 
!DrGFactory commentStamp: '' prior: 0!
 
3418
!DrGFactory commentStamp: '<historical>' prior: 0!
3419
3419
The Factory is where are manufactured new mathematic or macro-constrcution items.
3420
3420
It owns a pool of the already manufactured items. 
3421
3421
In last is the latested created (or recreated) item, 
3422
3422
Carefull!! last may not be equal to 'pool last' when the user try
3423
 
to instantiate an already created object, in this case last return 
 
3423
to instantiate an already created object, in this case last returns 
3424
3424
the original copy somewhere in the pool.
3425
3425
 
3426
3426
When manufacturing a new item it checks for its unicity.
4306
4306
        self view deleteWithoutConfirmation.
4307
4307
        self release! !
4308
4308
 
4309
 
!DrGeoSketch methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 20:05:38'!
 
4309
!DrGeoSketch methodsFor: 'initialize-release' stamp: 'hlsf 8/8/2023 19:13:55'!
4310
4310
initialize
4311
 
        presenter := DrGeoPresenter service.
 
4311
        presenter := DrGeo service.
4312
4312
        DrGeoSketch triggerEvent: #newSmalltalkSketch with: self! !
4313
4313
 
4314
4314
!DrGeoSketch methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 20:05:38'!
7388
7388
        
7389
7389
        ! !
7390
7390
 
7391
 
!DrGFileOpenMorph methodsFor: 'actions' stamp: 'hlsf 8/4/2023 18:13:49'!
 
7391
!DrGFileOpenMorph methodsFor: 'actions' stamp: 'hlsf 8/8/2023 19:13:55'!
7392
7392
ok
7393
7393
"Open the selected sketch"
7394
7394
        self selectedFile ifNotNil: [:selectedFile |
7395
7395
                self delete.
7396
 
                DrGeoPresenter file: selectedFile]! !
 
7396
                DrGeo file: selectedFile]! !
7397
7397
 
7398
 
!DrGFileOpenMorph methodsFor: 'actions' stamp: 'hlsf 8/4/2023 18:13:57'!
 
7398
!DrGFileOpenMorph methodsFor: 'actions' stamp: 'hlsf 8/8/2023 19:13:55'!
7399
7399
open: previewMorph
7400
7400
"Open the selected sketch"
7401
7401
        self delete.
7402
 
        DrGeoPresenter file: previewMorph fileEntry! !
 
7402
        DrGeo file: previewMorph fileEntry! !
7403
7403
 
7404
7404
!DrGFileOpenMorph methodsFor: 'actions' stamp: 'hlsf 10/17/2021 12:29:46'!
7405
7405
switchToExamples
27871
27871
tools
27872
27872
        ^ tools ifNil: [tools _ self mainMenu]! !
27873
27873
 
27874
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:18:35'!
 
27874
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:18:35'!
27875
27875
axesWording
27876
27876
        ^self isAxesVisible
27877
27877
                ifTrue: ['<yes> Axes' translated]
27878
27878
                ifFalse: ['<no> Axes' translated]! !
27879
27879
 
27880
 
!DrGeoPresenter methodsFor: 'accessing'!
 
27880
!DrGeo methodsFor: 'accessing'!
27881
27881
controlsManager
27882
27882
        ^ controlsManager! !
27883
27883
 
27884
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 8/4/2023 18:23:44'!
 
27884
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 8/4/2023 18:23:44'!
27885
27885
controlsManager: aClass
27886
27886
        controlsManager := aClass for: self.
27887
27887
        controlsManager installTools! !
27888
27888
 
27889
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 14:52:52'!
 
27889
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 14:52:52'!
27890
27890
createMultipleModeWording
27891
27891
        ^isCreateMultipleMode
27892
27892
                ifTrue: ['<yes> Create Multiple' translated]
27893
27893
                ifFalse: ['<no> Create Multiple' translated]! !
27894
27894
 
27895
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 8/4/2023 12:38:49'!
 
27895
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 8/4/2023 12:38:49'!
27896
27896
domain
27897
27897
        ^ domain ! !
27898
27898
 
27899
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 10:07:28'!
 
27899
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 10:07:28'!
27900
27900
drawable
27901
27901
        ^ self view ifNotNil: [self view drawable]! !
27902
27902
 
27903
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:16:09'!
 
27903
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:16:09'!
27904
27904
gridWording
27905
27905
        ^self isGridVisible
27906
27906
                ifTrue: ['<yes> Grid' translated]
27907
27907
                ifFalse: ['<no> Grid' translated]! !
27908
27908
 
27909
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:20:26'!
 
27909
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 6/19/2021 15:20:26'!
27910
27910
magneticGridWording
27911
27911
        ^self isGridded 
27912
27912
                ifTrue: ['<yes> Magnetic Grid' translated]
27913
27913
                ifFalse: ['<no> Magnetic Grid' translated]! !
27914
27914
 
27915
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 8/3/2023 21:10:34'!
 
27915
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 8/3/2023 21:10:34'!
27916
27916
notInteractive: boolean
27917
27917
        notInteractive := boolean! !
27918
27918
 
27919
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 8/3/2023 20:52:32'!
 
27919
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 8/3/2023 20:52:32'!
27920
27920
saved: bool
27921
27921
        | title |
27922
27922
        title := (sketchName ifNil: ['Dr. Geo --  ' , Date today yyyymmdd])     capitalized.
27925
27925
        saved := bool.
27926
27926
! !
27927
27927
 
27928
 
!DrGeoPresenter methodsFor: 'accessing'!
 
27928
!DrGeo methodsFor: 'accessing'!
27929
27929
selection
27930
27930
        ^selection! !
27931
27931
 
27932
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 3/28/2022 14:22:25'!
 
27932
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 3/28/2022 14:22:25'!
27933
27933
sketchName
27934
27934
        ^ sketchName! !
27935
27935
 
27936
 
!DrGeoPresenter methodsFor: 'accessing'!
 
27936
!DrGeo methodsFor: 'accessing'!
27937
27937
tool
27938
27938
        ^tool! !
27939
27939
 
27940
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 4/9/2022 21:48:04'!
 
27940
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 4/9/2022 21:48:04'!
27941
27941
tool: aTool 
27942
27942
        tool ifNotNil: [tool release].
27943
27943
        tool _ aTool.
27945
27945
        (tool notNil and: [self view notNil])  ifTrue: [
27946
27946
                controlsManager setStatusBarMessage: tool description]! !
27947
27947
 
27948
 
!DrGeoPresenter methodsFor: 'accessing' stamp: 'hlsf 4/10/2022 12:42:08'!
 
27948
!DrGeo methodsFor: 'accessing' stamp: 'hlsf 4/10/2022 12:42:08'!
27949
27949
view
27950
27950
        ^ controlsManager view! !
27951
27951
 
27952
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 12/9/2022 22:10:35'!
 
27952
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 12/9/2022 22:10:35'!
27953
27953
exportToClipboard: isBackgroundTransparent
27954
27954
"       | command |
27955
27955
        self 
27960
27960
                        << (DrGeoSystem myExportsPath / 'clipboard.png') pathString].
27961
27961
        OSPlatform current runCommand: command."! !
27962
27962
 
27963
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 8/4/2023 17:24:20'!
 
27963
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 8/4/2023 17:24:20'!
27964
27964
exportToImage: aFilename
27965
27965
        | stream |
27966
27966
        [stream := (DrGeoSystem myExportsPath // (aFilename, '.svg')) forceWriteStream.
27987
27987
        DrGeoSystem stopSpinner.
27988
27988
"! !
27989
27989
 
27990
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 3/15/2023 16:29:55'!
 
27990
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 3/15/2023 16:29:55'!
27991
27991
exportToImageAs
27992
27992
        | model |
27993
27993
        DrGeoSystem showVirtualKeyboard: true.
27999
27999
                morphCenter: self view fullBoundsInOwner center;
28000
28000
                setProperty: #layerNumber toValue: 20! !
28001
28001
 
28002
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 8/5/2023 14:25:45'!
 
28002
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 8/8/2023 19:13:55'!
28003
28003
newFigure
28004
 
        DrGeoPresenter new! !
 
28004
        DrGeo new! !
28005
28005
 
28006
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 12/2/2021 10:00:04'!
 
28006
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 12/2/2021 10:00:04'!
28007
28007
openFigureThumbnail
28008
28008
        DrGFileOpenMorph open! !
28009
28009
 
28010
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 8/4/2023 17:25:03'!
 
28010
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 8/4/2023 17:25:03'!
28011
28011
save
28012
28012
"Save the sketch with the current filename"
28013
28013
| stream |
28028
28028
Check the local resource or the server.' translated].
28029
28029
        DrGeoSystem stopSpinner.! !
28030
28030
 
28031
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 3/28/2022 11:24:20'!
 
28031
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 3/28/2022 11:24:20'!
28032
28032
saveSketch
28033
28033
        sketchName 
28034
28034
                ifNil: [self saveSketchAs]
28035
28035
                ifNotNil: [     self save]
28036
28036
! !
28037
28037
 
28038
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 3/28/2022 16:49:08'!
 
28038
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 3/28/2022 16:49:08'!
28039
28039
saveSketchAs
28040
28040
| model |
28041
28041
        DrGeoSystem showVirtualKeyboard: true.
28047
28047
                morphCenter: self view fullBoundsInOwner center;
28048
28048
                setProperty: #layerNumber toValue: 20! !
28049
28049
 
28050
 
!DrGeoPresenter methodsFor: 'callback UI' stamp: 'hlsf 3/27/2022 13:51:01'!
 
28050
!DrGeo methodsFor: 'callback UI' stamp: 'hlsf 3/27/2022 13:51:01'!
28051
28051
saveWithinLimitedTime: aBlock
28052
28052
        [aBlock value]
28053
28053
                valueWithin: 10 seconds
28056
28056
                        PopUpMenu inform: 'I can''t save the sketch.
28057
28057
Check the local resource or the server.' translated].! !
28058
28058
 
28059
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 4/5/2022 21:00:01'!
 
28059
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 4/5/2022 21:00:01'!
28060
28060
animate
28061
28061
        selectedTool == #animate        ifFalse: [
28062
28062
                self selectTool: DrGAnimateTool.
28063
28063
                selectedTool _ #animate].
28064
28064
        self changed! !
28065
28065
 
28066
 
!DrGeoPresenter methodsFor: 'callback canvas'!
 
28066
!DrGeo methodsFor: 'callback canvas'!
28067
28067
animate1
28068
28068
        self animate.
28069
28069
        self tool animateStep: 0.01.
28070
28070
! !
28071
28071
 
28072
 
!DrGeoPresenter methodsFor: 'callback canvas'!
 
28072
!DrGeo methodsFor: 'callback canvas'!
28073
28073
animate2
28074
28074
        self animate.
28075
28075
        self tool animateStep: 0.043.
28076
28076
! !
28077
28077
 
28078
 
!DrGeoPresenter methodsFor: 'callback canvas'!
 
28078
!DrGeo methodsFor: 'callback canvas'!
28079
28079
animate3
28080
28080
        self animate.
28081
28081
        self tool animateStep: 0.076.
28082
28082
! !
28083
28083
 
28084
 
!DrGeoPresenter methodsFor: 'callback canvas'!
 
28084
!DrGeo methodsFor: 'callback canvas'!
28085
28085
animate4
28086
28086
        self animate.
28087
28087
        self tool animateStep: 0.1
28088
28088
! !
28089
28089
 
28090
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 17:15:55'!
 
28090
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 17:15:55'!
28091
28091
axesOnOff
28092
28092
        self drawable axesVisibleOnOff
28093
28093
        ! !
28094
28094
 
28095
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 16:57:23'!
 
28095
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 16:57:23'!
28096
28096
createMultipleOnOff
28097
28097
        isCreateMultipleMode _ isCreateMultipleMode not! !
28098
28098
 
28099
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 17:15:21'!
 
28099
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 17:15:21'!
28100
28100
gridOnOff
28101
28101
        self drawable gridVisibleOnOff! !
28102
28102
 
28103
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 16:57:50'!
 
28103
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 16:57:50'!
28104
28104
gridStuckOnOff
28105
28105
        gridStuck _ gridStuck not.! !
28106
28106
 
28107
 
!DrGeoPresenter methodsFor: 'callback canvas'!
 
28107
!DrGeo methodsFor: 'callback canvas'!
28108
28108
move
28109
28109
        self selectTool: DrGSelectTool.
28110
28110
        selectedTool _ #move.
28111
28111
        self changed! !
28112
28112
 
28113
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
 
28113
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
28114
28114
moveOx: increment
28115
28115
        self drawable moveOx: increment.! !
28116
28116
 
28117
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
 
28117
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
28118
28118
moveOy: increment
28119
28119
        self drawable moveOy: increment negated.! !
28120
28120
 
28121
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 8/3/2023 20:53:22'!
 
28121
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 8/3/2023 20:53:22'!
28122
28122
redo
28123
28123
        self domain redo.
28124
28124
        self domain updateAllMathItems.
28125
28125
        self saved: false! !
28126
28126
 
28127
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
 
28127
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 6/19/2021 10:07:28'!
28128
28128
scale: increment
28129
28129
        self drawable scale: increment negated.! !
28130
28130
 
28131
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 8/4/2023 11:43:07'!
 
28131
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 8/4/2023 11:43:07'!
28132
28132
style
28133
28133
        selectedTool := #style.
28134
28134
        self selectTool: DrGStyleTool.
28136
28136
        self drawable redrawNeeded .
28137
28137
! !
28138
28138
 
28139
 
!DrGeoPresenter methodsFor: 'callback canvas' stamp: 'hlsf 8/3/2023 20:53:36'!
 
28139
!DrGeo methodsFor: 'callback canvas' stamp: 'hlsf 8/3/2023 20:53:36'!
28140
28140
undo
28141
28141
        self tool resetForFreshStart.
28142
28142
        self domain undo.
28143
28143
        self domain updateAllMathItems.
28144
28144
        self saved: false! !
28145
28145
 
28146
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28146
!DrGeo methodsFor: 'callback create'!
28147
28147
createAngleBisector
28148
28148
        self selectTool: DrGFlyBuildTool with: DrGAngleBisectorBuilder.
28149
28149
        selectedTool _ #angleBisector.
28150
28150
        self changed! !
28151
28151
 
28152
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 12/9/2021 15:59:49'!
 
28152
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 12/9/2021 15:59:49'!
28153
28153
createAngleGeometric
28154
28154
        self selectTool: DrGBuildTool with: DrGAngleGeometricBuilder.
28155
28155
        selectedTool _ #geometricAngle.
28156
28156
        self changed! !
28157
28157
 
28158
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 12/9/2021 15:59:16'!
 
28158
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 12/9/2021 15:59:16'!
28159
28159
createAngleOriented
28160
28160
        self selectTool: DrGBuildTool with: DrGAngleOrientedBuilder.
28161
28161
        selectedTool _ #orientedAngle.
28162
28162
        self changed! !
28163
28163
 
28164
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28164
!DrGeo methodsFor: 'callback create'!
28165
28165
createArc
28166
28166
        self selectTool: DrGFlyBuildTool with: DrGArcBuilder.
28167
28167
        selectedTool _ #arc.
28168
28168
        self changed! !
28169
28169
 
28170
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28170
!DrGeo methodsFor: 'callback create'!
28171
28171
createArcCenter
28172
28172
        self selectTool: DrGFlyBuildTool with: DrGArcCenterBuilder.
28173
28173
        selectedTool _ #arcCenter.
28174
28174
        self changed! !
28175
28175
 
28176
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:33'!
 
28176
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:33'!
28177
28177
createCircle
28178
28178
        self selectTool: DrGFlyBuildTouchTool with: DrGCircleBuilder.
28179
28179
        selectedTool _ #circle.
28180
28180
        self changed! !
28181
28181
 
28182
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28182
!DrGeo methodsFor: 'callback create'!
28183
28183
createCoordinatePoint
28184
28184
        self selectTool: DrGBuildTool with: DrGPointByCoordinatesBuilder.
28185
28185
        selectedTool _ #pointDefinedByCoordindates.
28186
28186
        self changed! !
28187
28187
 
28188
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28188
!DrGeo methodsFor: 'callback create'!
28189
28189
createCoordinates
28190
28190
        self selectTool: DrGBuildTool with: DrGCoordinatesBuilder.
28191
28191
        selectedTool _ #coordinates.
28192
28192
        self changed
28193
28193
! !
28194
28194
 
28195
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28195
!DrGeo methodsFor: 'callback create'!
28196
28196
createDistance
28197
28197
        self selectTool: DrGBuildTool with: DrGValueBuilder.
28198
28198
        selectedTool _ #distance.
28199
28199
        self changed! !
28200
28200
 
28201
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28201
!DrGeo methodsFor: 'callback create'!
28202
28202
createFreePoint
28203
28203
        self selectTool: DrGFlyPointBuildTool with: DrGFlyPointBuilder.
28204
28204
        selectedTool _ #freePoint.
28205
28205
        self changed! !
28206
28206
 
28207
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28207
!DrGeo methodsFor: 'callback create'!
28208
28208
createHomothety
28209
28209
        self selectTool: DrGBuildTool with: DrGHomothetyBuilder.
28210
28210
        selectedTool _ #scale.
28211
28211
        self changed! !
28212
28212
 
28213
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28213
!DrGeo methodsFor: 'callback create'!
28214
28214
createLine
28215
28215
        self selectTool: DrGFlyBuildTouchTool with: DrGLineBuilder.
28216
28216
        selectedTool _ #line.
28217
28217
        self changed! !
28218
28218
 
28219
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28219
!DrGeo methodsFor: 'callback create'!
28220
28220
createLocus
28221
28221
        self selectTool: DrGBuildTool with: DrGLocusBuilder.
28222
28222
        selectedTool _ #locus.
28223
28223
        self changed! !
28224
28224
 
28225
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28225
!DrGeo methodsFor: 'callback create'!
28226
28226
createMacro
28227
28227
        self selectTool: DrGMacroBuildTool with: DrGMacroBuilder.
28228
28228
        selectedTool _ #macroBuild.
28229
28229
        self changed! !
28230
28230
 
28231
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28231
!DrGeo methodsFor: 'callback create'!
28232
28232
createMiddlePoint
28233
28233
        self selectTool: DrGBuildTool with: DrGMiddleBuilder.
28234
28234
        selectedTool _ #middle.
28235
28235
        self changed! !
28236
28236
 
28237
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:28'!
 
28237
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:28'!
28238
28238
createParallel
28239
28239
        self selectTool: DrGFlyBuildTouchTool with: DrGParallelBuilder.
28240
28240
        selectedTool _ #parallel.
28241
28241
        self changed! !
28242
28242
 
28243
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:42'!
 
28243
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 9/23/2021 11:50:42'!
28244
28244
createPerpendicular
28245
28245
        self selectTool: DrGFlyBuildTouchTool with: DrGPerpendicularBuilder.
28246
28246
        selectedTool _ #perpendicular.
28247
28247
        self changed! !
28248
28248
 
28249
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28249
!DrGeo methodsFor: 'callback create'!
28250
28250
createPerpendicularBisector
28251
28251
        self selectTool: DrGFlyBuildTouchTool with: DrGPerpendicularBisectorBuilder.
28252
28252
        selectedTool _ #perpendicularBisector.
28253
28253
        self changed! !
28254
28254
 
28255
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28255
!DrGeo methodsFor: 'callback create'!
28256
28256
createPointByCoordinates
28257
28257
        self selectTool: DrGBuildTool with: DrGPointByCoordinatesBuilder.
28258
28258
        selectedTool _ #pointDefinedByCoordinates.
28259
28259
        self changed! !
28260
28260
 
28261
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28261
!DrGeo methodsFor: 'callback create'!
28262
28262
createPointIntersection
28263
28263
        self selectTool: DrGBuildTool with: DrGPointIntersectionBuilder.
28264
28264
        selectedTool _ #intersection.
28265
28265
        self changed! !
28266
28266
 
28267
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28267
!DrGeo methodsFor: 'callback create'!
28268
28268
createPolygon
28269
28269
        self selectTool: DrGFlyBuildTool with: DrGPolygonBuilder.
28270
28270
        selectedTool _ #polygon.
28271
28271
        self changed! !
28272
28272
 
28273
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28273
!DrGeo methodsFor: 'callback create'!
28274
28274
createPolygonRegular
28275
28275
        self selectTool: DrGFlyBuildTool with: DrGPolygonRegularBuilder.
28276
28276
        selectedTool _ #polygonRegular.
28277
28277
        self changed! !
28278
28278
 
28279
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28279
!DrGeo methodsFor: 'callback create'!
28280
28280
createRay
28281
28281
        self selectTool: DrGFlyBuildTouchTool with: DrGRayBuilder.
28282
28282
        selectedTool _ #ray.
28283
28283
        self changed! !
28284
28284
 
28285
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28285
!DrGeo methodsFor: 'callback create'!
28286
28286
createReflection
28287
28287
        self selectTool: DrGBuildTool with: DrGReflectionBuilder.
28288
28288
        selectedTool _ #axialSymmetry.
28289
28289
        self changed! !
28290
28290
 
28291
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28291
!DrGeo methodsFor: 'callback create'!
28292
28292
createRotation
28293
28293
        self selectTool: DrGBuildTool with: DrGRotationBuilder.
28294
28294
        selectedTool _ #rotation.
28295
28295
        self changed! !
28296
28296
 
28297
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 8/4/2023 17:38:21'!
 
28297
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 8/4/2023 17:38:21'!
28298
28298
createScript
28299
28299
        "We force to select/move mode as we do not interact with the sketch"    
28300
28300
        self move.
28301
28301
        self changed.
28302
28302
        DrGScriptDesignerDialog open: self label: 'Build a new script' translated! !
28303
28303
 
28304
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 8/4/2021 12:10:22'!
 
28304
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 8/4/2021 12:10:22'!
28305
28305
createSegment
28306
28306
        self selectTool: DrGFlyBuildTouchTool with: DrGSegmentBuilder.
28307
28307
        selectedTool _ #segment.
28308
28308
        self changed! !
28309
28309
 
28310
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28310
!DrGeo methodsFor: 'callback create'!
28311
28311
createSymmetry
28312
28312
        self selectTool: DrGBuildTool with: DrGSymmetryBuilder.
28313
28313
        selectedTool _ #centralSymmetry.
28314
28314
        self changed! !
28315
28315
 
28316
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28316
!DrGeo methodsFor: 'callback create'!
28317
28317
createText
28318
28318
        self selectTool: DrGBuildTool with: DrGTextBuilder.
28319
28319
        selectedTool _ #text.
28320
28320
        self changed! !
28321
28321
 
28322
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28322
!DrGeo methodsFor: 'callback create'!
28323
28323
createTranslation
28324
28324
        self selectTool: DrGBuildTool with: DrGTranslationBuilder.
28325
28325
        selectedTool _ #translation.
28326
28326
        self changed! !
28327
28327
 
28328
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28328
!DrGeo methodsFor: 'callback create'!
28329
28329
createVector
28330
28330
        self selectTool: DrGFlyBuildTouchTool with: DrGVectorBuilder.
28331
28331
        selectedTool _ #vector.
28332
28332
        self changed! !
28333
28333
 
28334
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28334
!DrGeo methodsFor: 'callback create'!
28335
28335
deleteMacro
28336
28336
        self selectTool: DrGSelectTool.
28337
28337
        selectedTool _ #deleteMacro.
28338
28338
        self changed! !
28339
28339
 
28340
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 4/7/2022 15:40:15'!
 
28340
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 4/7/2022 15:40:15'!
28341
28341
editScript
28342
28342
        | menu |
28343
28343
        "We force to select mode, then open a browser on the script classes"
28353
28353
        menu popUpInWorld.
28354
28354
        self changed! !
28355
28355
 
28356
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 4/7/2022 18:05:34'!
 
28356
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 4/7/2022 18:05:34'!
28357
28357
editScript: aScriptClass
28358
28358
        |  browser |
28359
28359
        browser _ Browser new setClass: aScriptClass selector: #compute.
28366
28366
                yourself
28367
28367
        ! !
28368
28368
 
28369
 
!DrGeoPresenter methodsFor: 'callback create' stamp: 'hlsf 8/4/2023 11:42:31'!
 
28369
!DrGeo methodsFor: 'callback create' stamp: 'hlsf 8/4/2023 11:42:31'!
28370
28370
eraser
28371
28371
        selectedTool := #eraser.
28372
28372
        self selectTool: DrGDeleteTool.
28373
28373
        self changed: #selectedTool.
28374
28374
        self drawable redrawNeeded .! !
28375
28375
 
28376
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28376
!DrGeo methodsFor: 'callback create'!
28377
28377
executeMacro
28378
28378
        self selectTool: DrGMacroPlayTool with: DrGMacroPlayer.
28379
28379
        selectedTool _ #macroExecute.
28380
28380
        self changed! !
28381
28381
 
28382
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28382
!DrGeo methodsFor: 'callback create'!
28383
28383
executeMacro: aMacro
28384
28384
        self selectTool: DrGMacroPlayTool with: DrGMacroPlayerHeadless.
28385
28385
        selectedTool _ #macroExecute. 
28387
28387
        self tool switchState: DrGMacroPlayToolStateSelect.
28388
28388
        self changed! !
28389
28389
 
28390
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28390
!DrGeo methodsFor: 'callback create'!
28391
28391
property 
28392
28392
        self selectTool: DrGPropertyTool.
28393
28393
        selectedTool _ #property.
28394
28394
        self changed! !
28395
28395
 
28396
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28396
!DrGeo methodsFor: 'callback create'!
28397
28397
useScript
28398
28398
        self selectTool: DrGScriptPlayTool with: DrGScriptPlayer.
28399
28399
        selectedTool _ #useScript.
28400
28400
        self changed! !
28401
28401
 
28402
 
!DrGeoPresenter methodsFor: 'callback create'!
 
28402
!DrGeo methodsFor: 'callback create'!
28403
28403
useScript: aScript
28404
28404
        self selectTool: DrGScriptPlayTool with: DrGScriptPlayerHeadless.
28405
28405
        selectedTool _ #useScript.
28407
28407
        self tool switchState: DrGMacroPlayToolStateSelect.
28408
28408
        self changed! !
28409
28409
 
28410
 
!DrGeoPresenter methodsFor: 'canvas' stamp: 'hlsf 8/3/2023 23:22:11'!
 
28410
!DrGeo methodsFor: 'canvas' stamp: 'hlsf 8/3/2023 23:22:11'!
28411
28411
previewOnFile: aFileEntry
28412
28412
"compute a preview and save it in the file entry"
28413
28413
        | stream |
28420
28420
                 
28421
28421
! !
28422
28422
 
28423
 
!DrGeoPresenter methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:17:09'!
 
28423
!DrGeo methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:17:09'!
28424
28424
initialize
28425
28425
        self initializeBasic.
28426
28426
        self controlsManager: DrGUIControlsManager.
28427
28427
        self move.
28428
28428
        self view openInWorld ! !
28429
28429
 
28430
 
!DrGeoPresenter methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:16:58'!
 
28430
!DrGeo methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:16:58'!
28431
28431
initializeBasic
28432
28432
        super initialize.
28433
28433
        isCreateMultipleMode := false.
28437
28437
        notInteractive := false.
28438
28438
        domain := DrGeoDomain new.! !
28439
28439
 
28440
 
!DrGeoPresenter methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:17:15'!
 
28440
!DrGeo methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 18:17:15'!
28441
28441
initializeService
28442
28442
        self initializeBasic.
28443
28443
        self controlsManager: DrGUIMinimalControlsManager.
28444
28444
        self move.! !
28445
28445
 
28446
 
!DrGeoPresenter methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 12:36:04'!
 
28446
!DrGeo methodsFor: 'initialize-release' stamp: 'hlsf 8/4/2023 12:36:04'!
28447
28447
release
28448
28448
        tool release.
28449
28449
        self drawable ifNotNil: [:dr | dr release].
28453
28453
        controlsManager := nil.
28454
28454
        sketchName := nil! !
28455
28455
 
28456
 
!DrGeoPresenter methodsFor: 'testing' stamp: 'hlsf 6/19/2021 10:07:28'!
 
28456
!DrGeo methodsFor: 'testing' stamp: 'hlsf 6/19/2021 10:07:28'!
28457
28457
isAxesVisible
28458
28458
        ^ self drawable 
28459
28459
                ifNotNil: [self drawable axesVisible]
28460
28460
                ifNil: [false]! !
28461
28461
 
28462
 
!DrGeoPresenter methodsFor: 'testing'!
 
28462
!DrGeo methodsFor: 'testing'!
28463
28463
isCreateMultipleMode
28464
28464
        ^isCreateMultipleMode! !
28465
28465
 
28466
 
!DrGeoPresenter methodsFor: 'testing'!
 
28466
!DrGeo methodsFor: 'testing'!
28467
28467
isForceVisible
28468
28468
        "We force unvisible costume to be visible when in style mode only"
28469
28469
        ^ (self isTool: #style) or: [self isTool: #eraser]! !
28470
28470
 
28471
 
!DrGeoPresenter methodsFor: 'testing' stamp: 'hlsf 6/19/2021 10:07:28'!
 
28471
!DrGeo methodsFor: 'testing' stamp: 'hlsf 6/19/2021 10:07:28'!
28472
28472
isGridVisible
28473
28473
        ^ self drawable 
28474
28474
                ifNotNil: [self drawable gridVisible]
28475
28475
                ifNil: [false]! !
28476
28476
 
28477
 
!DrGeoPresenter methodsFor: 'testing'!
 
28477
!DrGeo methodsFor: 'testing'!
28478
28478
isGridded
28479
28479
        ^ gridStuck! !
28480
28480
 
28481
 
!DrGeoPresenter methodsFor: 'testing' stamp: 'hlsf 8/3/2023 21:21:36'!
 
28481
!DrGeo methodsFor: 'testing' stamp: 'hlsf 8/3/2023 21:21:36'!
28482
28482
isNotInteractive
28483
28483
        ^ notInteractive ! !
28484
28484
 
28485
 
!DrGeoPresenter methodsFor: 'testing' stamp: 'hlsf 8/3/2023 20:51:22'!
 
28485
!DrGeo methodsFor: 'testing' stamp: 'hlsf 8/3/2023 20:51:22'!
28486
28486
isSaved
28487
28487
        ^ saved! !
28488
28488
 
28489
 
!DrGeoPresenter methodsFor: 'testing'!
 
28489
!DrGeo methodsFor: 'testing'!
28490
28490
isTool: symbolTool
28491
28491
"Do we have this symbolTool selected"
28492
28492
        ^ selectedTool == symbolTool ! !
28493
28493
 
28494
 
!DrGeoPresenter methodsFor: 'tool' stamp: 'hlsf 4/10/2022 14:59:57'!
 
28494
!DrGeo methodsFor: 'tool' stamp: 'hlsf 4/10/2022 14:59:57'!
28495
28495
openTools
28496
28496
        controlsManager openTools! !
28497
28497
 
28498
 
!DrGeoPresenter methodsFor: 'tool' stamp: 'hlsf 4/5/2022 20:59:11'!
 
28498
!DrGeo methodsFor: 'tool' stamp: 'hlsf 4/5/2022 20:59:11'!
28499
28499
selectTool: aToolClassName
28500
28500
        self tool: nil.
28501
28501
        self tool: (aToolClassName presenter: self)! !
28502
28502
 
28503
 
!DrGeoPresenter methodsFor: 'tool' stamp: 'hlsf 4/5/2022 20:59:06'!
 
28503
!DrGeo methodsFor: 'tool' stamp: 'hlsf 4/5/2022 20:59:06'!
28504
28504
selectTool: aToolClassName with: aBuilderClass
28505
28505
        self tool: (aToolClassName builder: aBuilderClass presenter: self).
28506
28506
        self domain changed: #selectedTool! !
28507
28507
 
28508
 
!DrGeoPresenter methodsFor: 'tool' stamp: 'hlsf 6/19/2021 14:53:45'!
 
28508
!DrGeo methodsFor: 'tool' stamp: 'hlsf 6/19/2021 14:53:45'!
28509
28509
selectToolAfterBuilding
28510
28510
        self isCreateMultipleMode
28511
28511
                ifFalse:        [self move]! !
28512
28512
 
28513
 
!DrGeoPresenter methodsFor: 'tool'!
 
28513
!DrGeo methodsFor: 'tool'!
28514
28514
selectionCleanUp
28515
28515
|createdItem|
28516
28516
        "a mathItem is just been created, do some clean up"
28525
28525
                self selectToolAfterBuilding].
28526
28526
! !
28527
28527
 
28528
 
!DrGeoPresenter methodsFor: 'updating'!
 
28528
!DrGeo methodsFor: 'updating'!
28529
28529
deleteMathItem: aCostume
28530
28530
        self domain deleteMathItem: aCostume mathItem.
28531
28531
        self domain updateAllMathItems! !
28532
28532
 
28533
 
!DrGeoPresenter methodsFor: 'updating' stamp: 'hlsf 8/4/2023 12:19:10'!
 
28533
!DrGeo methodsFor: 'updating' stamp: 'hlsf 8/4/2023 12:19:10'!
28534
28534
readyToBuild
28535
28535
        |answer|
28536
28536
        "readyToBuild event, the builder is ready to build, request to the domain the construction of the math item under the builder"
28541
28541
        self domain updateAllMathItems.
28542
28542
        self saved: false.! !
28543
28543
 
28544
 
!DrGeoPresenter methodsFor: 'updating'!
 
28544
!DrGeo methodsFor: 'updating'!
28545
28545
readyToBuildClone
28546
28546
        |answer|
28547
28547
        "readyToBuild event sent from the SelectTool. The builder is ready to clone an items and its parents,
28549
28549
        answer _ self domain createMathItem: self tool builder.
28550
28550
        self tool grabClone: answer first last.! !
28551
28551
 
28552
 
!DrGeoPresenter methodsFor: 'updating'!
 
28552
!DrGeo methodsFor: 'updating'!
28553
28553
readyToBuildMacro
28554
28554
        "readyToBuild event, the builder is ready to build a macro, request to the domain the construction of the math item under the builder"
28555
28555
        self domain createMacro: self tool builder.
28556
28556
        self move! !
28557
28557
 
28558
 
!DrGeoPresenter methodsFor: 'updating' stamp: 'hlsf 8/4/2023 17:33:11'!
 
28558
!DrGeo methodsFor: 'updating' stamp: 'hlsf 8/4/2023 17:33:11'!
28559
28559
readyToPlayMacro
28560
28560
        "readyToBuild event, the builder is ready to play a macro (enought input items), request to the domain the construction of the math items under the builder"
28561
28561
        self domain playMacro: self tool builder in: self.
28562
28562
        self move! !
28563
28563
 
28564
 
!DrGeoPresenter methodsFor: 'updating' stamp: 'hlsf 8/4/2023 12:19:10'!
 
28564
!DrGeo methodsFor: 'updating' stamp: 'hlsf 8/4/2023 12:19:10'!
28565
28565
updateSelection
28566
28566
        (self isTool: #move) ifTrue: [|aMathItem| 
28567
28567
                aMathItem := controlsManager tree selectedItem withoutListWrapper.
28569
28569
                        ifTrue: [self tool morph: nil]
28570
28570
                        ifFalse: [      self tool morph: (self drawable viewOf: aMathItem)]]! !
28571
28571
 
28572
 
!DrGeoPresenter class methodsFor: 'file' stamp: 'hlsf 8/4/2023 18:07:28'!
 
28572
!DrGeo class methodsFor: 'file' stamp: 'hlsf 8/4/2023 18:07:28'!
28573
28573
file: fileEntry
28574
28574
        |answer|
28575
28575
        DrGeoSystem startSpinner.
28577
28577
        DrGeoSystem stopSpinner.
28578
28578
        ^ answer! !
28579
28579
 
28580
 
!DrGeoPresenter class methodsFor: 'file' stamp: 'hlsf 8/4/2023 18:07:41'!
 
28580
!DrGeo class methodsFor: 'file' stamp: 'hlsf 8/4/2023 18:07:41'!
28581
28581
serviceXml: fileEntry
28582
28582
        ^ DrGeoXml new load: fileEntry for: #service
28583
28583
! !
28584
28584
 
28585
 
!DrGeoPresenter class methodsFor: 'instance creation' stamp: 'hlsf 8/4/2023 18:03:35'!
 
28585
!DrGeo class methodsFor: 'instance creation' stamp: 'hlsf 8/4/2023 18:03:35'!
28586
28586
service
28587
28587
"instanciate a DrGeo service, to embbed in third party Morph. It is just the canvas without surounding menu and icon"
28588
28588
        ^ self basicNew ::
28589
28589
                initializeService;
28590
28590
                yourself! !
28591
28591
 
28592
 
!DrGeoPresenter class methodsFor: 'saved status' stamp: 'hlsf 8/4/2023 17:40:53'!
 
28592
!DrGeo class methodsFor: 'saved status' stamp: 'hlsf 8/4/2023 17:40:53'!
28593
28593
figuresArray
28594
28594
        |items activeViews|
28595
28595
        activeViews := OrderedCollection new.
28604
28604
        ^ items
28605
28605
! !
28606
28606
 
28607
 
!DrGeoPresenter class methodsFor: 'saved status' stamp: 'hlsf 8/3/2023 21:40:18'!
 
28607
!DrGeo class methodsFor: 'saved status' stamp: 'hlsf 8/3/2023 21:40:18'!
28608
28608
macrosArray
28609
28609
        |items|
28610
28610
        items := OrderedCollection new.
28615
28615
                        with: (ValueHolder with: macro isSaved not) )].
28616
28616
        ^ items! !
28617
28617
 
28618
 
!DrGeoPresenter class methodsFor: 'saved status' stamp: 'hlsf 8/3/2023 21:40:27'!
 
28618
!DrGeo class methodsFor: 'saved status' stamp: 'hlsf 8/3/2023 21:40:27'!
28619
28619
unsavedData
28620
28620
"Answer a collection of unsaved data"
28621
28621
        | unsavedData |
28625
28625
                addAll: (self macrosArray select: [:each | each third propertyValue]).
28626
28626
        ^ unsavedData! !
28627
28627
 
28628
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:46:41'!
 
28628
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:46:41'!
28629
28629
aboutDrgeo
28630
28630
        UISupervisor whenUIinSafeState: [
28631
28631
                (PopUpMenu labels: ' Ok ' icons: {DrGIcons drgeo}) 
28632
28632
                        startUpNonModalWithCaption:  self drgeoInformationString ]! !
28633
28633
 
28634
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:46:06'!
 
28634
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:46:06'!
28635
28635
drgeoCopyright
28636
28636
        ^ 'Source code application: Copyright 1996-2023 Hilaire Fernandes
28637
28637
Icons: Copyright 1999 Frédéric Toussaint
28638
28638
Icons: Copyright 2021-2022 David Caula (imppao)'! !
28639
28639
 
28640
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:45:47'!
 
28640
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:45:47'!
28641
28641
drgeoInformationString
28642
28642
        |text |
28643
28643
        text := 'Dr. Geo is about interactive geometry and programming.
28655
28655
LICENSE: GPL' translated format: {self drgeoVersion. self drgeoCopyright}.
28656
28656
        ^ text! !
28657
28657
 
28658
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/5/2023 14:26:39'!
 
28658
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/5/2023 14:26:39'!
28659
28659
drgeoVersion
28660
28660
        ^ 'Installed version: ' translated, 
28661
28661
                '23.12a beta (code revision ', 
28662
28662
                (String streamContents: [:str |         (CodePackage installedPackages at: 'DrGeo') featureSpec provides printVersionRevisionOn: str]),
28663
28663
                ')'! !
28664
28664
 
28665
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:47:35'!
 
28665
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:47:35'!
28666
28666
getMenuIn: aWorld at: aHand
28667
28667
        | menu |
28668
28668
        menu :=  (CommandBuilder on: #drgeoWorldMenu) getMenu.
28670
28670
                addTitle: 'System menu' translated.
28671
28671
        ^ menu! !
28672
28672
 
28673
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:44:17'!
 
28673
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:44:17'!
28674
28674
quit
28675
28675
        self unsavedData isEmpty ifFalse: [ 
28676
28676
                (self confirm: 'There is unsaved data!! 
28677
28677
Are you sure to quit Dr. Geo environment?' translated) ifFalse: [ ^ self]].
28678
28678
        Smalltalk quitPrimitive! !
28679
28679
 
28680
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:48:27'!
 
28680
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/3/2023 21:48:27'!
28681
28681
toolsMenu: builder
28682
28682
        <drgeoWorldMenu>
28683
28683
        builder newEntry: 'System Browser' translated in: 'Tools' translated ::
28716
28716
                icon:    #saveIcon;
28717
28717
                help: 'Save this Dr. Geo session.' translated! !
28718
28718
 
28719
 
!DrGeoPresenter class methodsFor: 'user interface' stamp: 'hlsf 8/4/2023 18:15:13'!
 
28719
!DrGeo class methodsFor: 'user interface' stamp: 'hlsf 8/8/2023 19:13:55'!
28720
28720
worldMenu: builder
28721
28721
        <drgeoWorldMenu>
28722
28722
        builder newEntry: 'New sketch' translated ::
28723
28723
                icon: #newIcon;
28724
 
                action: [DrGeoPresenter new];
 
28724
                action: [DrGeo new];
28725
28725
                order: 0.
28726
28726
        builder newEntry: 'Open a sketch' translated ::
28727
28727
                icon: #openIcon;
28739
28739
        builder newEntry: 'Tools' translated ::
28740
28740
                icon:    #systemIcon.
28741
28741
        builder newEntry: 'About' translated ::
28742
 
                action: [ DrGeoPresenter aboutDrgeo ];
 
28742
                action: [ DrGeo aboutDrgeo ];
28743
28743
                order: 7.
28744
28744
        builder newEntry:  'Quit' translated ::
28745
 
                action: [ DrGeoPresenter quit ];
 
28745
                action: [ DrGeo quit ];
28746
28746
                icon: #quitIcon;
28747
28747
                order: 999! !
28748
28748
 
31822
31822
                ]
31823
31823
        ].! !
31824
31824
 
31825
 
!DrGeoXml methodsFor: 'xml read' stamp: 'hlsf 8/4/2023 17:27:53'!
 
31825
!DrGeoXml methodsFor: 'xml read' stamp: 'hlsf 8/8/2023 19:13:55'!
31826
31826
parseOneFigure: node for: constructor
31827
31827
" Instantiate this node in a DrGeo app and return it"
31828
 
        self presenter: (DrGeoPresenter perform: constructor).
 
31828
        self presenter: (DrGeo perform: constructor).
31829
31829
        presenter notInteractive: true.
31830
31830
        self parseFigureFrom: node.
31831
31831
        self drawable forcedVisibility: false.
33278
33278
        super checkForPaths.
33279
33279
        self myExportsPath assureExistence ! !
33280
33280
 
33281
 
!DrGWorkstation methodsFor: 'initialize-release' stamp: 'hlsf 8/3/2023 21:49:12'!
 
33281
!DrGWorkstation methodsFor: 'initialize-release' stamp: 'hlsf 8/8/2023 19:13:55'!
33282
33282
initialize
33283
33283
        canWeDisplaySpinner := true.
33284
33284
        Preferences 
33285
 
                at: #worldMenu put: DrGeoPresenter;
 
33285
                at: #worldMenu put: DrGeo;
33286
33286
                at: #fullScreenLeavesDeskMargins put: false;
33287
33287
                at: #defaultFontSize put: 12.
33288
33288
        UISupervisor ui taskbar scale: 1/2.! !