[squeak-dev] The Trunk: SystemReporter-laza.2.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 19 23:32:53 UTC 2011


David T. Lewis uploaded a new version of SystemReporter to project The Trunk:
http://source.squeak.org/trunk/SystemReporter-laza.2.mcz

==================== Summary ====================

Name: SystemReporter-laza.2
Author: laza
Time: 18 January 2011, 12:12:52.537 pm
UUID: 40d39d22-fd7d-9647-9bea-11024447eefa
Ancestors: SystemReporter-laza.1

- added more reports
- use TextStream to have better formatting
- fixed menus
- preserve order of categories

=============== Diff against SystemReporter-laza.1 ===============

Item was changed:
  Object subclass: #SystemReporter
+ 	instanceVariableNames: 'categories categoriesSelected report tinyBenchmarksResult categoryList'
- 	instanceVariableNames: 'categories categoriesSelected report'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'SystemReporter'!
  
+ !SystemReporter commentStamp: 'laza 1/18/2011 12:04' prior: 0!
- !SystemReporter commentStamp: 'laza 1/17/2011 13:37' prior: 0!
  SystemReporter offers a window where information about the system is gathered. This can be easily copied to the clipboard and be attached to a bug report for better identification of the context the bug occured in.
  
  To extend the SystemReporter:
+ 	- add a method
+ 		reportXYZ: aStream
+ 	  to the reporting category
+ 	- insert a line
+ 		add: #XYZ method: #reportXYZ
+ 	  to the initialize method
- 	- add a method reportXYZ:aStream to the reporting category
- 	- add an association like XYZ->reportXYZ to the initialize method
  !

Item was added:
+ ----- Method: SystemReporter>>add:method: (in category 'accessing-categories') -----
+ add: category method: aSymbol
+ 	^self categoryList add: (self categories add: category -> aSymbol) key!

Item was changed:
  ----- Method: SystemReporter>>buildReportWith: (in category 'building') -----
  buildReportWith: aBuilder
  	^ aBuilder pluggableTextSpec new
  		model: self;
  		menu: #reportMenu:;
  		getText: #reportText;
  		yourself.!

Item was added:
+ ----- Method: SystemReporter>>categories (in category 'accessing-categories') -----
+ categories
+ 	^ categories ifNil: [categories := IdentityDictionary new]!

Item was changed:
  ----- Method: SystemReporter>>categoryList (in category 'accessing-categories') -----
  categoryList
+ 	^ categoryList ifNil: [categoryList := OrderedCollection new]!
- 	^ categories keys!

Item was changed:
  ----- Method: SystemReporter>>categoryMenu: (in category 'accessing-categories') -----
  categoryMenu: aMenu
  	^ aMenu
  		title: 'Categories';
  		add: 'Select all' action: #selectAllCategories;
- 		add: 'Select inversion' action: #selectInverseCategories;
  		add: 'Select none' action: #selectNoCategories;
  		addLine;
+ 		add: 'Refresh' action: #refresh;
- 		add: 'Filter...' action: #filterCategories;
- 		addLine;
- 		add: 'Refresh' action: #updateCategories;
  		yourself.!

Item was added:
+ ----- Method: SystemReporter>>copyReportToClipboard (in category 'accessing-report') -----
+ copyReportToClipboard
+ 	Clipboard clipboardText: self reportText.
+ 	UIManager default inform: 'Copied Report to Clipboard'!

Item was changed:
  ----- Method: SystemReporter>>header:on: (in category 'printing-report') -----
  header: aString on: aStream
+ 	aStream withAttribute: TextEmphasis bold do: [	
+ 		aStream nextPutAll: aString; cr.
+ 		aString size timesRepeat: [aStream nextPut: $-].
+ 		aStream cr]!
- 	aStream nextPutAll: aString; cr.
- 	aString size timesRepeat: [aStream nextPut: $-].
- 	aStream cr!

Item was changed:
  ----- Method: SystemReporter>>initialize (in category 'initialize-release') -----
  initialize
+ 	self
+ 		add: #Image method: #reportImage;
+ 		add: #'Image Parameters' method: #reportImageParameters;
+ 		add: #'Image Sources' method: #reportSources;
+ 		add: #'VM General' method: #reportVM;
+ 		add: #'VM Options' method: #reportVMOptions;
+ 		add: #'VM Modules' method: #reportModules.
- 	categories := IdentityDictionary new
- 		add: #Image -> #reportImage;
- 		add: #'OS General' -> #reportOS;
- 		add: #'VM General' -> #reportVM;
- 		add: #Modules -> #reportModules;
- 		yourself.
  	Smalltalk os platformName = 'Win32' ifTrue: [
+ 		self
+ 			add: #'VM Configuration' method: #reportINI.
+ 		].
+ 	self
+ 		add: #'OS General' method: #reportOS.
+ 	Smalltalk os platformName = 'Win32' ifTrue: [
+ 		self
+ 			add: #'OS Details' method: #reportOSDetails;
+ 			add: #'Hardware Details' method: #reportHardwareDetails;
+ 			add: #'GFX Hardware Details' method: #reportGFXDetails.
+ 		].
+ 	self add: #'Tiny Benchmarks' method: #reportTinyBenchmarks.
- 		categories
- 			add: #'Hardware Details' -> #reportHardwareDetails;
- 			add: #'Operating System Details' -> #reportOSDetails;
- 			add: #'Graphics Hardware Details' -> #reportGFXDetails
- 			].
  	categoriesSelected := Set with: #Image with: #'VM General'.
  	self updateReport
  !

Item was added:
+ ----- Method: SystemReporter>>refresh (in category 'accessing-categories') -----
+ refresh
+ 	tinyBenchmarksResult := nil.
+ 	self updateReport!

Item was changed:
  ----- Method: SystemReporter>>reportGFXDetails: (in category 'reporting') -----
  reportGFXDetails: aStream
  	self header: 'Graphics Hardware Details' on: aStream.
+ 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10003)!
- 	aStream 
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 10003); cr!

Item was changed:
  ----- Method: SystemReporter>>reportHardwareDetails: (in category 'reporting') -----
  reportHardwareDetails: aStream
  	self header: 'Hardware Details' on: aStream.
+ 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10001)!
- 	aStream 
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 10001); cr!

Item was added:
+ ----- Method: SystemReporter>>reportINI: (in category 'reporting') -----
+ reportINI: aStream
+ 	| exePath iniData iniPath |
+ 	self header: 'VM Configuration' on: aStream.
+ 	exePath := SmalltalkImage current getSystemAttribute: 0.
+ 	iniPath := (exePath copyUpToLast: $.), '.ini'.
+ 	aStream nextPutAll: iniPath; cr.
+ 	iniData := [
+ 		(FileStream readOnlyFileNamed: iniPath)
+ 			 contentsOfEntireFile
+ 	] on: Error do:[:ex| ex return: ex printString].
+ 	aStream
+ 		nextPutAll: iniData!

Item was changed:
  ----- Method: SystemReporter>>reportImage: (in category 'reporting') -----
  reportImage: aStream
- 	| id value |
  	self header: 'Image' on: aStream.
  	aStream 
+ 		nextPutAll: SystemVersion current version; cr;
+ 		nextPutAll: SmalltalkImage current lastUpdateString; cr;
+ 		nextPutAll: SmalltalkImage current currentChangeSetString; cr;
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 1); cr!
- 		tab; nextPutAll: SystemVersion current version; cr;
- 		tab; nextPutAll: SmalltalkImage current lastUpdateString; cr;
- 		tab; nextPutAll: SmalltalkImage current currentChangeSetString; cr;
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 1); cr.
- 	id := 3.
- 	[value := (SmalltalkImage current getSystemAttribute: id).
- 	value = nil or: [id > 1000]] whileFalse: [
- 		aStream nextPutAll: value; space.
- 		id := id + 1
- 	].
- !

Item was added:
+ ----- Method: SystemReporter>>reportImageParameters: (in category 'reporting') -----
+ reportImageParameters: aStream
+ 	| id value |
+ 	self header: 'Image Commandline Parameters' on: aStream.
+ 	id := 3.
+ 	[value := (SmalltalkImage current getSystemAttribute: id).
+ 	value = nil or: [id > 1000]] whileFalse: [
+ 		aStream
+ 			nextPut: $#;
+ 			nextPutAll: id printString;
+ 			tab;
+ 			nextPutAll: value; cr.
+ 		id := id + 1
+ 	].
+ 	id = 3 ifTrue: [aStream nextPutAll: 'none'; cr]
+ !

Item was added:
+ ----- Method: SystemReporter>>reportMenu: (in category 'accessing-report') -----
+ reportMenu: aMenu
+ 	^ aMenu
+ 		title: 'Report';
+ 		add: 'Copy to Clipboard' action: #copyReportToClipboard;
+ 		yourself.!

Item was changed:
  ----- Method: SystemReporter>>reportModules: (in category 'reporting') -----
  reportModules: aStream
+ 	self header: 'Loaded VM Modules' on: aStream.
+ 	SmalltalkImage current listLoadedModules asSortedCollection do: [:each | aStream nextPutAll: each; cr].
- 	self header: 'Loaded Modules' on: aStream.
- 	SmalltalkImage current listLoadedModules do: [:each | aStream tab; nextPutAll: each; cr].
  
  !

Item was changed:
  ----- Method: SystemReporter>>reportOS: (in category 'reporting') -----
  reportOS: aStream
  	self header: 'Operating System/Hardware' on: aStream.
  	aStream
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 1001); space;
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 1002); space;
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 1003); cr
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 1001); space;
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 1002); space;
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 1003).
  !

Item was changed:
  ----- Method: SystemReporter>>reportOSDetails: (in category 'reporting') -----
  reportOSDetails: aStream
  	self header: 'Operating System Details' on: aStream.
+ 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10002)!
- 	aStream 
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 10002); cr!

Item was added:
+ ----- Method: SystemReporter>>reportSources: (in category 'reporting') -----
+ reportSources: aStream
+ 	self header: 'Image Sources' on: aStream.
+ 	aStream nextPutAll: SourceFiles class printString; cr.
+ 	SourceFiles do: [:each |
+ 		each ifNotNil: [aStream nextPutAll: each printString; cr]]!

Item was changed:
  ----- Method: SystemReporter>>reportText (in category 'accessing-report') -----
  reportText
  	^ (report isNil or: [categoriesSelected isEmpty])
+ 		ifTrue: ['-- Choose any category on the left --']
- 		ifTrue: ['-- empty --']
  		ifFalse: [report]!

Item was added:
+ ----- Method: SystemReporter>>reportTinyBenchmarks: (in category 'reporting') -----
+ reportTinyBenchmarks: aStream
+ 	tinyBenchmarksResult ifNil: [
+ 		UIManager inform: 'Running the Benchmarks\will take a few seconds' withCRs.
+ 		tinyBenchmarksResult := 0 tinyBenchmarks].
+ 	self header: 'Tiny Benchmarks' on: aStream.
+ 	aStream nextPutAll: tinyBenchmarksResult!

Item was changed:
  ----- Method: SystemReporter>>reportVM: (in category 'reporting') -----
  reportVM: aStream
- 	| id value |
  	self header: 'Virtual Machine' on: aStream.
  	aStream
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 1004); cr;
+ 		nextPutAll: (SmalltalkImage current getSystemAttribute: 0); cr!
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 1004); cr;
- 		tab; nextPutAll: (SmalltalkImage current getSystemAttribute: 0); cr.
- 	aStream tab.
- 		id := -1.
- 		[value := (SmalltalkImage current getSystemAttribute: id).
- 		value = nil or: [id < -1000]] whileFalse: [
- 			aStream nextPutAll: value; space.
- 			id := id - 1
- 		].
- !

Item was added:
+ ----- Method: SystemReporter>>reportVMOptions: (in category 'reporting') -----
+ reportVMOptions: aStream
+ 	| id value |
+ 	self header: 'Virtual Machine Commandline Options' on: aStream.
+ 	id := -1.
+ 	[value := (SmalltalkImage current getSystemAttribute: id).
+ 	value = nil or: [id < -1000]] whileFalse: [
+ 		aStream
+ 			nextPut: $#;
+ 			nextPutAll: id negated printString;
+ 			tab;
+ 			nextPutAll: value; cr.
+ 		id := id - 1
+ 	].
+ 	id = -1 ifTrue: [aStream nextPutAll: 'none'; cr]
+ 
+ !

Item was added:
+ ----- Method: SystemReporter>>selectAllCategories (in category 'accessing-categories') -----
+ selectAllCategories
+ 	categoriesSelected addAll: categoryList.
+ 	self changed: #categorySelected.
+ 	self updateReport!

Item was added:
+ ----- Method: SystemReporter>>selectNoCategories (in category 'accessing-categories') -----
+ selectNoCategories
+ 	categoriesSelected removeAll.
+ 	self changed: #categorySelected.
+ 	self updateReport!

Item was changed:
  ----- Method: SystemReporter>>updateReport (in category 'updating') -----
  updateReport
+ 	report := Text streamContents: [:stream | 
+ 		stream 
+ 			withAttribute: (TextFontReference toFont: ((TextStyle named: 'BitstreamVeraSansMono') fontOfSize: 16))
+ 			do: [
+ 				self categoryList do: [:each |
+ 					(categoriesSelected includes: each) ifTrue: [
+ 						self perform: ((categories at: each), ':') asSymbol with: stream.
+ 						stream cr]]]].
- 	report := String streamContents: [:stream |  
- 		self categoryList do: [:each |
- 			(categoriesSelected includes: each) ifTrue: [
- 				self perform: ((categories at: each), ':') asSymbol with: stream.
- 				stream cr; cr]]].
  	self changed: #reportText!




More information about the Squeak-dev mailing list