Squeakあれこれ

Squeak関連情報など

[Squeak]サムネイルとプロジェクトファイル(3)

2005-05-28 | squeakあれこれ
ひさびさの更新です。Yaxoとかの解析とかしててblogから遠のいてました。

前回はWorkspaceから操作する方法であったが,Projectメニューの'手元のディスクにだけプロジェクトを保存する'で保存できるようにProject>>writeFileNamed:fromDirectory:toServer:を下記のように変更した。これでメニューから保存できるようになった。だが、読込はどうしようか?やはりProjectメニューの'プロジェクトをファイルから読込…'にいれるべきかな。読み込みも出来て、ある程度テストしたらチェンジセットにまとめて公開します。
	| local resp gifFileName f project writer projectFile |

	projectFile := localDirectory oldFileNamed: localFileName.
	gifFileName _ self name,'.png'.
	localDirectory deleteFileNamed: gifFileName ifAbsent: [].
	local _ localDirectory fileNamed: gifFileName.
	thumbnail ifNil: [
		(thumbnail _ Form extent: 100@80) fillColor: Color orange
	] ifNotNil: [
		thumbnail unhibernate.
	].
	f _ thumbnail colorReduced.  "minimize depth"
	f depth > 8 ifTrue: [
		f _ thumbnail asFormOfDepth: 8
	].
	project := FileStream readOnlyFileNamed: projectFile fullName.
	project binary.
	writer := PNGSqeuakObject on: local.
	[ writer nextPutImage: f interlace: 0 filter: 0 Object: project contents]	
		ensure: [local close. project close. projectFile close.].
	[local _ StandardFileStream readOnlyFileNamed: (localDirectory fullNameFor: gifFileName).
	(primaryServerDirectory isKindOf: FileDirectory)
		ifTrue: [primaryServerDirectory deleteFileNamed: gifFileName ifAbsent: []].
	resp _ primaryServerDirectory putFile: local named: gifFileName retry: false.
	] on: Error do: [:ex |].
	local close.

	primaryServerDirectory updateProjectInfoFor: self.
	primaryServerDirectory sleep.	"if ftp, close the connection"

最新の画像もっと見る