[squeak-dev] The Trunk: Tools-ct.1176.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Sep 13 07:07:24 UTC 2022
Christoph Thiede uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-ct.1176.mcz
==================== Summary ====================
Name: Tools-ct.1176
Author: ct
Time: 13 September 2022, 9:07:22.211523 am
UUID: 148ebbd0-9395-6244-9393-47242da1629b
Ancestors: Tools-ct.1175
Improves high-dpi support for FileList2.
=============== Diff against Tools-ct.1175 ===============
Item was changed:
----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow: (in category 'blue ui') -----
blueButtonText: aString textColor: textColor color: aColor inWindow: window
| result |
result := window
fancyText: aString translated
+ font: Preferences standardButtonFont
- font: Preferences standardEToysFont
color: textColor.
result setProperty: #buttonText toValue: aString;
hResizing: #rigid;
+ extent: 100 px @ 20 px;
+ layoutInset: 4 px;
+ borderWidth: 1 px;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: 1;
useRoundedCorners.
aColor isNil
ifFalse: [""result color: aColor. result borderColor: aColor muchDarker].
^ result!
Item was changed:
----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow:balloonText:selector:recipient: (in category 'blue ui') -----
blueButtonText: aString textColor: textColor color: aColor inWindow: window balloonText: balloonText selector: sel recipient: recip
| result |
result := window
fancyText: aString translated
+ font: Preferences standardButtonFont
- font: Preferences standardEToysFont
color: textColor.
result setProperty: #buttonText toValue: aString;
hResizing: #rigid;
+ extent: 100 px @ 20 px;
+ layoutInset: 4 px;
+ borderWidth: 1 px;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: 1;
useRoundedCorners;
setBalloonText: balloonText.
result
on: #mouseUp
send: sel
to: recip.
aColor isNil
ifFalse: [""
result color: aColor.
result borderColor: aColor muchDarker].
^ result!
Item was changed:
----- Method: FileList2 class>>morphicViewFileSelectorForSuffixes:directory: (in category 'morphic ui') -----
morphicViewFileSelectorForSuffixes: aList directory: dir
"Answer a morphic file-selector tool for the given suffix list and the given directory."
| aFileList window fixedSize midLine gap |
aFileList := self new directory: dir.
aFileList optionalButtonSpecs: aFileList okayAndCancelServices.
aList ifNotNil:
[aFileList fileSelectionBlock: [:entry :myPattern |
entry isDirectory
ifTrue:
[false]
ifFalse:
[aList includes: (FileDirectory extensionFor: entry name asLowercase)]]].
window := BorderedMorph new
layoutPolicy: ProportionalLayout new;
color: Color lightBlue;
borderColor: Color blue;
+ borderWidth: 4 px;
+ layoutInset: 4 px;
+ extent: 600 px @ 400 px;
- borderWidth: 4;
- layoutInset: 4;
- extent: 600 at 400;
useRoundedCorners.
window setProperty: #fileListModel toValue: aFileList.
aFileList modalView: window.
midLine := 0.4.
+ fixedSize := 25 px.
+ gap := 5 px.
- fixedSize := 25.
- gap := 5.
self addFullPanesTo: window from: {
{self textRow: 'Please select a file'. 0 @ 0 corner: 1 @ 0. 0 at 0 corner: 0 at fixedSize}.
{aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0 at fixedSize corner: 0@(fixedSize * 2)}.
{aFileList morphicDirectoryTreePane. 0 at 0 corner: midLine at 1.
gap @(fixedSize * 2) corner: gap negated at 0}.
{aFileList morphicFileListPane. midLine @ 0 corner: 1 at 1.
gap@(fixedSize * 2) corner: gap negated at 0}.
}.
aFileList postOpen.
^ window !
Item was changed:
----- Method: FileList2 class>>morphicViewFolderSelector: (in category 'morphic ui') -----
morphicViewFolderSelector: aDir
"Answer a tool that allows the user to select a folder"
| aFileList window fixedSize |
aFileList := self new directory: aDir.
aFileList optionalButtonSpecs: aFileList servicesForFolderSelector.
window := (SystemWindow labelled: aDir pathName) model: aFileList.
aFileList modalView: window.
+ fixedSize := 25 px.
- fixedSize := 25.
self addFullPanesTo: window from: {
{self textRow: 'Please select a folder'. 0 @ 0 corner: 1 @ 0.
0 at 0 corner: 0 at fixedSize}.
{aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
0 at fixedSize corner: 0@(fixedSize * 2)}.
{aFileList morphicDirectoryTreePane. 0 at 0 corner: 1 at 1.
0@(fixedSize * 2) corner: 0 at 0}.
}.
aFileList postOpen.
+ ^ window!
- ^ window !
Item was changed:
----- Method: FileList2 class>>morphicViewGeneralLoaderInWorld: (in category 'blue ui') -----
morphicViewGeneralLoaderInWorld: aWorld
"
FileList2 morphicViewGeneralLoaderInWorld: self currentWorld
"
| window aFileList buttons treePane textColor1 fileListPane pane2a pane2b fileTypeInfo fileTypeButtons fileTypeRow actionRow |
fileTypeInfo := self endingSpecs.
window := AlignmentMorphBob1 newColumn.
window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
aFileList := self new directory: FileDirectory default.
aFileList
fileSelectionBlock: self projectOnlySelectionBlock;
modalView: window.
window
setProperty: #FileList toValue: aFileList;
wrapCentering: #center; cellPositioning: #topCenter;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.9 g: 0.801 b: 0.2);
useRoundedCorners.
fileTypeButtons := fileTypeInfo collect: [ :each |
(self blueButtonText: each first textColor: Color gray inWindow: window)
setProperty: #enabled toValue: true;
hResizing: #shrinkWrap;
useSquareCorners
].
buttons := {{'OK'. Color lightGreen}. {'Cancel'. Color lightRed}} collect: [ :each |
self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
].
treePane := aFileList morphicDirectoryTreePane
+ extent: 250 px @ 300 px;
- extent: 250 at 300;
retractable: false;
borderWidth: 0.
fileListPane := aFileList morphicFileListPane
+ extent: 350 px @ 300 px;
- extent: 350 at 300;
retractable: false;
borderWidth: 0.
window addARow: {window fancyText: 'Find...' translated font: Preferences standardEToysTitleFont color: textColor1}.
+ fileTypeRow := window addARowCentered: fileTypeButtons cellInset: 2 px.
- fileTypeRow := window addARowCentered: fileTypeButtons cellInset: 2.
actionRow := window addARowCentered: {
buttons first.
+ (Morph new extent: 30 px @ 5 px) color: Color transparent.
- (Morph new extent: 30 at 5) color: Color transparent.
buttons second
+ } cellInset: 2 px.
- } cellInset: 2.
window
addARow: {
(window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
useRoundedCorners;
layoutInset: 0;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.6 g: 0.7 b: 1)
}) layoutInset: 10.
(window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
useRoundedCorners;
layoutInset: 0;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.6 g: 0.7 b: 1)
+ }) layoutInset: 10 px.
- }) layoutInset: 10.
}.
window fullBounds.
window fillWithRamp: (Color r: 1 g: 0.85 b: 0.975) oriented: 0.65.
pane2a fillWithRamp: (Color r: 0.85 g: 0.9 b: 1) oriented: (0.7 @ 0.35).
pane2b fillWithRamp: (Color r: 0.85 g: 0.9 b: 1) oriented: (0.7 @ 0.35).
"
buttons do: [ :each |
each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
].
"
fileTypeButtons do: [ :each |
each
on: #mouseUp
send: #value:value:
to: [ :evt :morph |
self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: morph.
]
].
buttons first on: #mouseUp send: #okHit to: aFileList.
buttons second on: #mouseUp send: #cancelHit to: aFileList.
aFileList postOpen.
window position: aWorld topLeft + (aWorld extent - window extent // 2).
aFileList directoryChangeBlock: [ :newDir |
self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: nil.
self enableTypeButtons: fileTypeButtons info: fileTypeInfo forDir: newDir.
].
aFileList directory: aFileList directory.
window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
^ window openInWorld: aWorld.!
Item was changed:
----- Method: FileList2 class>>morphicViewImageViewer (in category 'morphic ui') -----
morphicViewImageViewer
| dir aFileList window midLine fixedSize |
dir := FileDirectory default.
aFileList := self new directory: dir.
aFileList optionalButtonSpecs: aFileList specsForImageViewer.
aFileList fileSelectionBlock: [ :entry :myPattern |
entry isDirectory ifTrue: [
false
] ifFalse: [
#('bmp' 'gif' 'jpg' 'form' 'png') includes:
(FileDirectory extensionFor: entry name asLowercase)
]
].
window := (SystemWindow labelled: dir pathName) model: aFileList.
+ fixedSize := 25 px.
- fixedSize := 25.
midLine := 0.4.
self addFullPanesTo: window from: {
{aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
0 at 0 corner: 0 at fixedSize}.
{aFileList morphicDirectoryTreePane. 0 at 0 corner: midLine at 1.
0 at fixedSize corner: 0 at 0}.
{aFileList morphicFileListPane. midLine @ 0 corner: 1 at 1.
0 at fixedSize corner: 0 at 0}.
}.
aFileList postOpen.
^ window !
Item was changed:
----- Method: FileList2 class>>morphicViewNoFile (in category 'morphic ui') -----
morphicViewNoFile
| dir aFileList window midLine fixedSize |
dir := FileDirectory default.
aFileList := self new directory: dir.
window := (SystemWindow labelled: dir pathName) model: aFileList.
+ fixedSize := 25 px.
- fixedSize := 25.
midLine := 0.4.
self addFullPanesTo: window from: {
{aFileList morphicPatternPane. 0 at 0 corner: 0.3 at 0. 0 at 0 corner: 0 at fixedSize}.
{aFileList optionalButtonRow. 0.3 @ 0 corner: 1 at 0. 0 at 0 corner: 0 at fixedSize}.
{aFileList morphicDirectoryTreePane. 0 at 0 corner: midLine at 1. 0 at fixedSize corner: 0 at 0}.
{aFileList morphicFileListPane. midLine @ 0 corner: 1 at 1. 0 at fixedSize corner: 0 at 0}.
}.
aFileList postOpen.
+ ^ window!
- ^ window !
Item was changed:
----- Method: FileList2 class>>morphicViewProjectLoader (in category 'morphic ui') -----
morphicViewProjectLoader
| dir aFileList window midLine fixedSize |
dir := FileDirectory default.
aFileList := self new directory: dir.
aFileList optionalButtonSpecs: aFileList servicesForProjectLoader.
aFileList fileSelectionBlock: self projectOnlySelectionBlock.
window := (SystemWindow labelled: dir pathName) model: aFileList.
+ fixedSize := 25 px.
- fixedSize := 25.
midLine := 0.4.
self addFullPanesTo: window from: {
{aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0 at 0 corner: 0 at fixedSize}.
{aFileList morphicDirectoryTreePane. 0 at 0 corner: midLine at 1. 0 at fixedSize corner: 0 at 0}.
{aFileList morphicFileListPane. midLine @ 0 corner: 1 at 1. 0 at fixedSize corner: 0 at 0}.
}.
aFileList postOpen.
+ ^ window!
- ^ window !
Item was changed:
----- Method: FileList2 class>>morphicViewProjectLoader2InWorld:reallyLoad:dirFilterType: (in category 'blue ui') -----
morphicViewProjectLoader2InWorld: aWorld reallyLoad: aBoolean dirFilterType: aSymbol
| window aFileList buttons treePane textColor1 fileListPane pane2a pane2b treeExtent filesExtent |
window := AlignmentMorphBob1 newColumn.
window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
aFileList := self new.
aFileList
optionalButtonSpecs: aFileList servicesForProjectLoader;
fileSelectionBlock: (
aSymbol == #limitedSuperSwikiDirectoryList ifTrue: [
MessageSend receiver: Project current selector: #latestProjectVersionsFromFileEntries:
] ifFalse: [
self projectOnlySelectionBlock
]
);
"dirSelectionBlock: self hideSqueakletDirectoryBlock;"
modalView: window.
aFileList directory: FileDirectory default.
window
setProperty: #FileList toValue: aFileList;
wrapCentering: #center; cellPositioning: #topCenter;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.9 g: 0.801 b: 0.2);
useRoundedCorners.
buttons := {{'OK'. Color lightGreen}. {'Cancel'. Color lightRed}} collect: [ :each |
self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
].
+ aWorld width < 800 px ifTrue: [
+ treeExtent := 150 px @ 300 px.
+ filesExtent := 350 px @ 300 px.
- aWorld width < 800 ifTrue: [
- treeExtent := 150 at 300.
- filesExtent := 350 at 300.
] ifFalse: [
+ treeExtent := 350 px @ 500 px.
+ filesExtent := 550 px @500 px.
- treeExtent := 350 at 500.
- filesExtent := 550 at 500.
].
(treePane := aFileList morphicDirectoryTreePaneFiltered: aSymbol)
extent: treeExtent;
retractable: false;
borderWidth: 0.
fileListPane := aFileList morphicFileListPane
extent: filesExtent;
retractable: false;
borderWidth: 0.
window
addARow: {
window fancyText: 'Load A Project' translated font: Preferences standardEToysTitleFont color: textColor1
};
addARowCentered: {
buttons first.
+ (Morph new extent: 30 px @ 5 px) color: Color transparent.
- (Morph new extent: 30 at 5) color: Color transparent.
buttons second
};
addARow: {
+ window fancyText: 'Please select a project' translated font: Preferences standardButtonFont color: textColor1
- window fancyText: 'Please select a project' translated font: Preferences standardEToysFont color: textColor1
};
addARow: {
(window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
useRoundedCorners;
layoutInset: 0;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.6 g: 0.7 b: 1)
+ }) layoutInset: 10 px.
- }) layoutInset: 10.
(window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
useRoundedCorners;
layoutInset: 0;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.6 g: 0.7 b: 1)
+ }) layoutInset: 10 px.
- }) layoutInset: 10.
}.
window fullBounds.
window fillWithRamp: (Color r: 1 g: 0.85 b: 0.975) oriented: 0.65.
pane2a fillWithRamp: (Color r: 0.85 g: 0.9 b: 1) oriented: (0.7 @ 0.35).
pane2b fillWithRamp: (Color r: 0.85 g: 0.9 b: 1) oriented: (0.7 @ 0.35).
"
buttons do: [ :each |
each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
].
"
buttons first
on: #mouseUp
send: (aBoolean ifTrue: [#okHitForProjectLoader] ifFalse: [#okHit])
to: aFileList.
buttons second on: #mouseUp send: #cancelHit to: aFileList.
aFileList postOpen.
window position: aWorld topLeft + (aWorld extent - window extent // 2).
window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
^ window openInWorld: aWorld.!
Item was changed:
----- Method: FileList2 class>>morphicViewProjectSaverFor: (in category 'blue ui') -----
morphicViewProjectSaverFor: aProject
"
(FileList2 morphicViewProjectSaverFor: Project current) openInWorld
"
| window aFileList buttons treePane pane2 textColor1 option treeExtent buttonData buttonRow |
textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
aFileList := self new directory: ServerDirectory projectDefaultDirectory.
aFileList dirSelectionBlock: self hideSqueakletDirectoryBlock.
window := AlignmentMorphBob1 newColumn.
window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
aFileList modalView: window.
window
setProperty: #FileList toValue: aFileList;
wrapCentering: #center; cellPositioning: #topCenter;
borderWidth: 1;
borderColor: (Color r: 0.9 g: 0.801 b: 0.2);
useRoundedCorners.
buttonData := Preferences enableLocalSave
ifTrue: [{
{'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. Color lightGreen}.
{'Save on local disk only'. #saveLocalOnlyHit. 'saves in the Squeaklets folder'. Color lightGreen}.
{'Cancel'. #cancelHit. 'return without saving'. Color lightRed}
}]
ifFalse: [{
{'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. Color lightGreen}.
{'Cancel'. #cancelHit. 'return without saving'. Color lightRed}
}].
buttons := buttonData collect: [ :each |
(self blueButtonText: each first textColor: textColor1 color: each fourth inWindow: window)
setBalloonText: each third translated;
hResizing: #shrinkWrap;
on: #mouseUp send: each second to: aFileList
].
option := aProject world
valueOfProperty: #SuperSwikiPublishOptions
ifAbsent: [#initialDirectoryList].
aProject world removeProperty: #SuperSwikiPublishOptions.
+ treeExtent := Project current world height < 500 px
+ ifTrue: [ 350 px @ 150 px ]
+ ifFalse: [ 350 px @ 300 px ].
- treeExtent := Project current world height < 500
- ifTrue: [ 350 at 150 ]
- ifFalse: [ 350 at 300 ].
(treePane := aFileList morphicDirectoryTreePaneFiltered: option)
extent: treeExtent;
retractable: false;
borderWidth: 0.
window
addARowCentered: {
window fancyText: 'Publish This Project' translated font: Preferences standardEToysTitleFont color: textColor1
}.
buttonRow := OrderedCollection new.
+ buttons do: [:button | buttonRow add: button] separatedBy: [buttonRow add: ((Morph new extent: 30 px @ 5 px) color: Color transparent)].
- buttons do: [:button | buttonRow add: button] separatedBy: [buttonRow add: ((Morph new extent: 30 at 5) color: Color transparent)].
" addARowCentered: {
buttons first.
+ (Morph new extent: 30 px @ 5 px) color: Color transparent.
- (Morph new extent: 30 at 5) color: Color transparent.
buttons second.
+ (Morph new extent: 30 px@ 5 px) color: Color transparent.
- (Morph new extent: 30 at 5) color: Color transparent.
buttons third
};"
window
addARowCentered: buttonRow;
+ addARowCentered: { (window inAColumn: {(ProjectViewMorph on: aProject) lock}) layoutInset: 4 px};
- addARowCentered: { (window inAColumn: {(ProjectViewMorph on: aProject) lock}) layoutInset: 4};
addARowCentered: {
+ window fancyText: 'Please select a folder' translated font: Preferences standardButtonFont color: textColor1
- window fancyText: 'Please select a folder' translated font: Preferences standardEToysFont color: textColor1
};
addARow: {
(
window inAColumn: {
(pane2 := window inARow: {window inAColumn: {treePane}})
useRoundedCorners;
layoutInset: 0;
+ borderWidth: 1 px;
- borderWidth: 1;
borderColor: (Color r: 0.6 g: 0.7 b: 1)
}
+ ) layoutInset: 10 px
- ) layoutInset: 10
}.
window fullBounds.
window fillWithRamp: (Color r: 1 g: 0.85 b: 0.975) oriented: 0.65.
pane2 fillWithRamp: (Color r: 0.85 g: 0.9 b: 1) oriented: (0.7 @ 0.35).
"
buttons do: [ :each |
each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
].
"
window morphicLayerNumber: window class dialogLayer.
aFileList postOpen.
window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
^ window !
Item was changed:
----- Method: FileList2>>blueButtonForService:textColor:inWindow: (in category 'user interface') -----
blueButtonForService: aService textColor: textColor inWindow: window
| block result |
block := [self fullName isNil
ifTrue: [self inform: 'Please select a file' translated]
ifFalse: [aService performServiceFor: self]].
result := window
fancyText: aService buttonLabel capitalized translated
+ font: Preferences standardButtonFont
- font: Preferences standardEToysFont
color: textColor.
result setProperty: #buttonText toValue: aService buttonLabel capitalized;
hResizing: #rigid;
+ extent: 100 px @ 20 px;
+ layoutInset: 4 px;
+ borderWidth: 1 px;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: 1;
useRoundedCorners;
setBalloonText: aService label.
result
on: #mouseUp
send: #value
to: block.
^ result!
Item was changed:
----- Method: FileList2>>optionalButtonRow (in category 'initialization') -----
optionalButtonRow
"Answer the button row associated with a file list"
| aRow |
aRow := AlignmentMorph newRow beSticky.
aRow color: Color transparent.
aRow clipSubmorphs: true.
+ aRow layoutInset: 5 px @ 1 px; cellGap: 6 px.
- aRow layoutInset: 5 at 1; cellGap: 6.
self universalButtonServices do: "just the three sort-by items"
[:service |
aRow addMorphBack: (service buttonToTriggerIn: self).
(service selector == #sortBySize)
ifTrue:
+ [aRow addTransparentSpacerOfSize: (4 px @ 0)]].
- [aRow addTransparentSpacerOfSize: (4 at 0)]].
aRow setNameTo: 'buttons'.
aRow setProperty: #buttonRow toValue: true. "Used for dynamic retrieval later on"
^ aRow!
More information about the Squeak-dev
mailing list
|