Saving user preferences???

Become a member of the CGSociety

Connect, Share, and Learn with our Large Growing CG Art Community. It's Free!

THREAD CLOSED
 
Thread Tools Search this Thread Display Modes
Old 11 November 2010   #1
Saving user preferences???

hi all,

I'm writing a script that will be used by a few different users.

the script saves renders to a default directory.

I would like to give the users the ability to choose any directory on their machine.

the directory is obviously stored as a string

So here's the Part I cant figure: How do I save that string back in the script file ( .ms ) so next time they run it, their preference is saved?

or is there another, better way?

thanks guys
__________________
http://www.luminous-arts.com
 
Old 11 November 2010   #2
Use createFile() to make a MyScriptSettings.ini file in the $userScripts folder, then use setINIsetting() and getINIsetting() to save/retrieve whatever settings you want.
 
Old 11 November 2010   #3
Have a look at this tool. It reads and writes to an ini in the Max Root folder. I am having to rewrite this since the firm moved to Windows 7 and a strict security policy for Program Files (limited user access). I will have to change it to point to the Users\user.name\appdata\ etc. folder. Lots of find and replace in my future!


 
 /* 
 ----Future Improvements
 Create Grid from selected polygon/face
 
  */
  
 (
 	theINI = getdir #maxroot + "ZGF_Tools.ini"
 	
 	
 	--Functions------------------------------------
 	fn gridCycle = (
 		
 		local new_grid = undefined
 		local next_grid_index = 1
 		local current_grid = activegrid
 		local grids_array = #()
 
 		grids_array = for g in helpers where classof g == grid collect g
 		append grids_array undefined
 		(
 			if current_grid == undefined then 
 				(
 				current_grid = grids_array[1]
 					activegrid = current_grid
 				)
 				else
 				(
 				for i = 1 to grids_array.count do 
 					(
 					if grids_array[i] == current_grid then next_grid_index = (i+1)   
 					)
 					
 					if next_grid_index > grids_array.count then
 					(
 					new_grid = grids_array[1]
 					)
 					else
 					(
 					new_grid = grids_array[next_grid_index]
 					)
 				activegrid = new_grid
 				toolMode.coordsys #grid
 				)
 			)
 			
 	)
 
 	fn gridMod gridSpacing gridSize= (
 	
 		for g in helpers where classof g == grid do
 		(
 			g.grid = gridSpacing
 			g.length = gridSize
 			g.width = gridSize
 		)
 		SetGridSpacing gridSpacing
 		gridPrefs.perspViewGridExtents = gridSize/gridSpacing
 	)
 
 	fn alignSelToGrid obs currentGrid = (
 		if currentGrid != undefined then 
 		(
 			gridXForm = currentGrid.transform
 		)
 		else (
 			gridXForm = (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])
 			)
 		undo "Align To Grid" on
 		(			
 			for i in obs do
 			(
 				i.transform = gridXForm
 			)
 		)	
 	)
 	
 	fn createGridAtObject obj = (
 		undo "Create Grid at Selection" on
 			if obj != undefined do
 			(
 				objSize = (obj.max - obj.min) + ((obj.max - obj.min) *.05)
 				newGrid = grid()
 				newGrid.width = objSize.x
 				newGrid.length = objSize.y
 				maxSize = (if (objSize.x > objSize.y) then objSize.x else objSize.y)
 				newGrid.grid = maxSize / 50
 				newGrid.pos = obj.pos
 				newGrid.rotation = obj.rotation
 				newGrid.name = ("Grid_"+obj.name)
 				select newGrid
 				activegrid = newGrid
 			)
 	)
 	-- UI ------------------------------------------
 		
 	try destroydialog zgfGridTools catch()
 	
 	local gridToolsBMP = (getDir #ui) + "icons" + "\gridTools.bmp"
 	
 	rollout zgfGridTools "Grid Tools" (	
 			
 			spinner spn_spacing "Spacing" range:[1,10000,60] type:#integer fieldWidth:40 align:#left offset:[-10,0] 
 			spinner spn_size "Size" range:[1,10000,1000] type:#integer fieldWidth:40 align:#left offset:[9,0]
 			button btn_gridCycle "Cycle Grids" width:120 align:#left offset:[-10,0] 
 			button btn_setView "Set Viewport to Grid" width:120 align:#left offset:[-10,0] 
 			button btn_alignToGrid "Align Selection to Grid" width: 120 align:#left offset:[-10,0] 
 			button btn_gridAtSelection "Create Grid from Sel." width:120 align:#left offset:[-10,0]
 
 		
 		
 			button btn_help "?" pos:[110,4] width:16 height:16
 			
 			--checkbutton gridToolsImage width:84 images:#(gridToolsBMP, undefined, 1, 1, 1, 1, 1) Pos:[116,0] border:false enabled:false
 	--Events------------------------------------------
 			--Grid Spacing Spinner
 			on spn_spacing buttonup do (
 				gridMod spn_spacing.value spn_size.value
 			)
 			
 			on spn_spacing entered do (
 				gridMod spn_spacing.value spn_size.value
 			)
 			
 			--Grid Size Spinner
 			on spn_size buttonup do (
 				gridMod spn_spacing.value spn_size.value
 			)
 			
 			on spn_size entered do (
 				gridMod spn_spacing.value spn_size.value
 			)
 			
 			--Cycle Grid Button
 			on btn_gridCycle pressed do (
 				if keyboard.controlPressed then 
 				(
 					max acthomegrid
 					btn_gridCycle.text = "World"
 
 				)
 				else if keyboard.shiftPressed then
 				(
 					max activate grid object
 					currentGrid = activegrid
 					if currentGrid != undefined then btn_gridCycle.text = currentGrid.name else btn_gridCycle.text = "World"
 				)
 
 				else (
 					gridCycle()
 					currentGrid = activegrid
 					if currentGrid != undefined then btn_gridCycle.text = currentGrid.name else btn_gridCycle.text = "World"
 				)
 			)
 			
 			--Set ViewPort to Grid
 			on btn_setView pressed do (
 				viewport.setType #view_grid
 			)
 			
 			--Align Selection to Grid Button
 			on btn_alignToGrid pressed do (
 				alignSelToGrid selection activegrid
 			)
 			
 			--Create Grid at Selection
 			on btn_GridAtSelection pressed do (
 				theSelection = selection[1]
 				createGridAtObject theSelection
 			)
 			--Help button
 			on btn_help pressed do (
 				try destroydialog helpInfo catch()
 				
 				rollout helpInfo "How to use Grid Tools"
 				(
 					group "Grid Spacing and Size:"
 					(
 						label lbl1a "Spinners change the Grid Spacing of all " align:#left offset:[-6,0]
 						label lbl1b "User Grids and Home Grid perspective extents." align:#left offset:[-6,0]
 					)
 					
 					group "Cycle Grids:"
 					(
 						label lbl2a "Cycle through active user Grids and Home Grid." align:#left offset:[-6,0]
 						label lbl2b "Hold Ctrl to set Home Grid current" align:#left offset:[-6,0]
 						label lbl2c "Hold Shift to set selected User Grid current" align:#left offset:[-6,0]
 					)
 					
 					group "Align Selection to Grid:"
 					(
 						label lbl3a "Align all selected objects to the current User Grid" align:#left offset:[-6,0]
 						label lbl3b "posistion, rotation and scale." align:#left offset:[-6,0]
 						label lbl3c "If Home Grid is current, objects are moved to" align:#left offset:[-6,0]
 						label lbl3d "world origin, 0,0,0." align:#left offset:[-6,0]
 					)
 
 				)
 					
 				global GridToolsHelp = newRolloutFloater "Grid Tools Help" 260 260
 				GridToolsHelp.pos = (GetDialogPos zgfGridTools) + [0,130]
 				addRollout helpInfo GridToolsHelp border:false
 				
 			)
 			
 			--On Moved
 			--on zgfGridTools moved do (GridToolsHelp.pos = (GetDialogPos zgfGridTools) + [0,130])
 			
 			--On Close
 			on zgfGridTools close do (
 				setINISetting theINI "Grid Tools" "Window Position" (GetDialogPos zgfGridTools as string)
 				
 				if GridToolsHelp != undefined do closeRolloutFloater GridToolsHelp -- Also close the Help floater
 				)
 		)
 		gtPos = execute (getINISetting theINI "Grid Tools" "Window Position")
 
 
 CreateDialog zgfGridTools width:130 pos:(if gtPos !=undefined  and gtPos != OK then gtPos else [100,100])
 	
 )
__________________

 
Old 11 November 2010   #4
Originally Posted by JohnSwafford: Use createFile() to make a MyScriptSettings.ini file in the $userScripts folder, then use setINIsetting() and getINIsetting() to save/retrieve whatever settings you want.


No need to call createFile, if you use setInisetting on a file that doesn't exist it automaticly tries to create one!

-Johan
__________________
Online: LinkedIn
 
Old 11 November 2010   #5
Thread automatically closed

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
__________________
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
 
Thread Closed share thread



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
CGSociety
Society of Digital Artists
www.cgsociety.org

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump
Miscellaneous

All times are GMT. The time now is 01:40 PM.


Powered by vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.