├── .gitignore ├── classPreferences.xojo_resources ├── Build Automation.xojo_code ├── App.xojo_code ├── FileTypes1.xojo_filetypeset ├── classPreferences.xojo_project ├── README.md ├── classPreferences.xojo_code └── frmMain.xojo_window /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.xojo_uistate 3 | -------------------------------------------------------------------------------- /classPreferences.xojo_resources: -------------------------------------------------------------------------------- 1 | ICNS -------------------------------------------------------------------------------- /Build Automation.xojo_code: -------------------------------------------------------------------------------- 1 | #tag BuildAutomation 2 | Begin BuildStepList Linux 3 | Begin BuildProjectStep Build 4 | End 5 | End 6 | Begin BuildStepList Mac OS X 7 | Begin BuildProjectStep Build 8 | End 9 | End 10 | Begin BuildStepList Windows 11 | Begin BuildProjectStep Build 12 | End 13 | End 14 | #tag EndBuildAutomation 15 | -------------------------------------------------------------------------------- /App.xojo_code: -------------------------------------------------------------------------------- 1 | #tag Class 2 | Protected Class App 3 | Inherits Application 4 | #tag Event 5 | Sub Open() 6 | Preferences = new classPreferences("PreferencesTest") 7 | End Sub 8 | #tag EndEvent 9 | 10 | 11 | #tag Property, Flags = &h0 12 | Preferences As classPreferences 13 | #tag EndProperty 14 | 15 | 16 | #tag ViewBehavior 17 | #tag EndViewBehavior 18 | End Class 19 | #tag EndClass 20 | -------------------------------------------------------------------------------- /FileTypes1.xojo_filetypeset: -------------------------------------------------------------------------------- 1 | #tag FileTypeSet 2 | #tag FileType 3 | CodeName=Jpeg 4 | Extension=.jfif;.jpe;.jpeg;.jpg 5 | Flags=&h0 6 | MacCreator=prvw 7 | MacType=JPEG 8 | Name=image/jpeg 9 | UTI=public.jpeg 10 | #tag EndFileType 11 | 12 | #tag FileType 13 | CodeName=Png 14 | Extension=.png 15 | Flags=&h0 16 | MacCreator=ogle 17 | MacType=PNGf 18 | Name=image/png 19 | UTI=public.png 20 | #tag EndFileType 21 | 22 | #tag EndFileTypeSet 23 | -------------------------------------------------------------------------------- /classPreferences.xojo_project: -------------------------------------------------------------------------------- 1 | Type=Desktop 2 | RBProjectVersion=2014.02 3 | MinIDEVersion=20070100 4 | Class=classPreferences;classPreferences.xojo_code;&h3E4FB51E;&h0;false 5 | Class=App;App.xojo_code;&h149CC5E9;&h0;false 6 | BuildSteps=Build Automation;Build Automation.xojo_code;&h40859037;&h0;false 7 | Window=frmMain;frmMain.xojo_window;&h3FDC5F39;&h0;false 8 | FileTypeSet=FileTypes1;FileTypes1.xojo_filetypeset;&hFC0D2F1;&h0;false 9 | DefaultWindow=frmMain 10 | MajorVersion=1 11 | MinorVersion=0 12 | SubVersion=0 13 | NonRelease=0 14 | Release=0 15 | InfoVersion= 16 | LongVersion= 17 | ShortVersion= 18 | WinCompanyName= 19 | WinInternalName= 20 | WinProductName= 21 | WinFileDescription= 22 | AutoIncrementVersionInformation=True 23 | BuildFlags=&h2100 24 | BuildLanguage=&h0 25 | DebugLanguage=&h0 26 | Region= 27 | WindowsName=My Application.exe 28 | MacCarbonMachName=My Application 29 | LinuxX86Name=MyApplication 30 | MacCreator= 31 | MDI=0 32 | MDICaption= 33 | DefaultEncoding=&h0 34 | AppIcon=classPreferences.xojo_resources;&h0 35 | OSXBundleID= 36 | DebuggerCommandLine= 37 | UseGDIPlus=False 38 | UseBuildsFolder=True 39 | IsWebProject=False 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | classPreferences ================ 2 | 3 | A cross platform preferences class for Xojo using SQLite. 4 | 5 | #Revisions 6 | #### 24 July 2014 7 | First Release 8 | 9 | #### 25 July 2014 10 | Thanks to Axel Schneider for the addition of setColorValue and 11 | getColorValue methods. 12 | Added the Optional Default as VariableType argument to each get 13 | method. 14 | Added the picture datatype. 15 | 16 | #Summary 17 | classPreferences is a class to simply generate a preferences storage 18 | mechanism using an SQLite database. Calling the constructor with: 19 | 20 | ####Dim prefs as new classPreferences([bundleID]) 21 | #### 22 | will create the database file if it does not exist already. Once the 23 | file is created, simply use the get and set methods outlined below to 24 | store and retrieve your applications settings. 25 | 26 | #Events 27 | ###PreferencesChanged 28 | PreferencesChanged is raised each time one of the set methods has 29 | successfully written a value to the preferences file. It is useful for 30 | updating your application when a user has changed one of their 31 | preferences. 32 | 33 | #Methods 34 | # 35 | ###Constructor(bundleID as String) 36 | The constructor's argument, bundleID, is the name which will be used for 37 | your preferences file. The preferences file, by default, will be written 38 | to SpecialFolder.ApplicationData and placed in a folder with the name of 39 | bundleID and the file will be named bundleID.preferences. It is 40 | therefore important that the bundleID argument contains a string which 41 | will be valid for use as a folder and a filename on your platform. 42 | 43 | ##set Methods 44 | The set methods all set the value of the specified type to the 45 | preferences database. Keys are case insensitive but must be unique or 46 | the method will replace the existing value stored in the preferences 47 | database. 48 | 49 | All values are actually converted to string and stored in the 50 | preferences database as text and then converted back to their datatype 51 | when retrieved. This is transparent to you when coding. 52 | 53 | ####setBooleanValue(key as String, value as Boolean) 54 | ### 55 | ####setDoubleValue(key as String, value as Double) 56 | ### 57 | ####setSingleValue(key as String, value as Single) 58 | ### 59 | ####setColorValue(key as String, value as Color) 60 | ### 61 | ####setIntegerValue(key as String, value as Integer) 62 | ### 63 | ####setStringValue(key as String, value as String) 64 | ### 65 | ####setPictureValue(key as String, value as Picture) 66 | ### 67 | ##get Methods 68 | The get methods all return the value of the specified type from the 69 | preferences database. Keys are case insensitive and must exist in the 70 | database. If the key does not exists in the preferences database a 71 | KeyNotFoundException will be raised. To avoid this the HasKey method can 72 | be used prior to calling the get methods to check the existence of a 73 | key. Alternatively pass the optional default value to be returned if the 74 | key cannot be found, however, you will not be notified if the key was 75 | not found and the method will return correctly. 76 | 77 | ####getBooleanValue(key as String,Optional default as Boolean) as Boolean 78 | ### 79 | ####getDoubleValue(key as String,Optional default as Double) as Double 80 | ### 81 | ####getSingleValue(key as String,Optional default as Single) as Single 82 | ### 83 | ####getColorValue(key as String,Optional default as Color) as Color 84 | ### 85 | ####getIntegerValue(key as String,Optional default as Integer) as Integer 86 | ### 87 | ####getStringValue(key as String,Optional default as String) as String 88 | ### 89 | ####getPictureValue(key as String,Optional default as Picture) as Picture 90 | ### 91 | ##Utility Methods 92 | ## 93 | ####deleteValue(key as string) 94 | Deletes a key and value pair from your preferences file. Keys are case 95 | insensitive and must exist. If the key does not exists in the 96 | preferences file a KeyNotFoundException will be raised. To avoid this 97 | the HasKey method can be used prior to calling the get methods to check 98 | the existence of a key. 99 | 100 | ####hasKey(key as string) as Boolean 101 | Checks the preferences file for the existence of key. Returns true if 102 | the key exists, false if not. 103 | Useful for checking the existence of a key prior to calling any of the 104 | get methods if you are unsure if the key exists. 105 | -------------------------------------------------------------------------------- /classPreferences.xojo_code: -------------------------------------------------------------------------------- 1 | #tag Class 2 | Protected Class classPreferences 3 | #tag Method, Flags = &h0 4 | Sub Constructor(bundleID as String) 5 | Dim prefFile as FolderItem 6 | 7 | prefDB = new SQLiteDatabase 8 | 9 | prefFile = SpecialFolder.ApplicationData.Child(bundleID) 10 | 11 | prefFile.CreateAsFolder 12 | 13 | prefFile = SpecialFolder.ApplicationData.Child(bundleID).Child(bundleID + ".preferences") 14 | 15 | prefDB.DatabaseFile = prefFile 16 | 17 | if not prefFile.Exists then 18 | if CreatePrefsFile = False then 19 | MsgBox "Error creating preferences file" 20 | exit Sub 21 | end if 22 | end if 23 | 24 | if prefDB.Connect = False then 25 | MsgBox "Error connecting to preferences file" 26 | end if 27 | 28 | 29 | End Sub 30 | #tag EndMethod 31 | 32 | #tag Method, Flags = &h21 33 | Private Function createPrefsFile() As Boolean 34 | if prefDB.CreateDatabaseFile = False then 35 | Return False 36 | else 37 | prefDB.SQLExecute("CREATE TABLE tblPreferences(id integer PRIMARY KEY AUTOINCREMENT,key varchar,value varchar);") 38 | return True 39 | end if 40 | End Function 41 | #tag EndMethod 42 | 43 | #tag Method, Flags = &h0 44 | Sub deleteValue(key as String) 45 | Dim rs as RecordSet 46 | 47 | //Check the database is connected 48 | if prefDB.Connect = True then 49 | //Get any records where key already exists 50 | rs = prefDB.SQLSelect("SELECT * FROM tblPreferences WHERE key='" + Uppercase(key) + "'") 51 | if prefDB.Error then 52 | MsgBox prefDB.ErrorMessage 53 | end if 54 | 55 | if rs.RecordCount = 0 then 56 | Raise new KeyNotFoundException 57 | else 58 | prefDB.SQLExecute("DELETE FROM tblPreferences WHERE key='" + Uppercase(key) + "'") 59 | end if 60 | end if 61 | End Sub 62 | #tag EndMethod 63 | 64 | #tag Method, Flags = &h0 65 | Function getBooleanValue(key as String, Optional default as Boolean) As Boolean 66 | Return (GetValue(key,default)="TRUE") 67 | End Function 68 | #tag EndMethod 69 | 70 | #tag Method, Flags = &h0 71 | Function getColorValue(key as variant, Optional default as Color) As color 72 | dim v as Variant = (GetValue(key,default)) 73 | Return v.ColorValue 74 | End Function 75 | #tag EndMethod 76 | 77 | #tag Method, Flags = &h0 78 | Function getDoubleValue(key as string, Optional default as Double) As Double 79 | Return CDbl(GetValue(key,default)) 80 | End Function 81 | #tag EndMethod 82 | 83 | #tag Method, Flags = &h0 84 | Function getIntegerValue(key as string, Optional default as Integer) As Integer 85 | Return CDbl(GetValue(key,default)) 86 | End Function 87 | #tag EndMethod 88 | 89 | #tag Method, Flags = &h0 90 | Function getPictureValue(key as String, Optional default as picture) As Picture 91 | dim tmpDef as Variant 92 | 93 | if default <> Nil then 94 | tmpDef = EncodeBase64(default.GetData(Picture.FormatPNG)) 95 | end if 96 | 97 | return Picture.FromData(DecodeBase64(getValue(key,tmpDef))) 98 | End Function 99 | #tag EndMethod 100 | 101 | #tag Method, Flags = &h0 102 | Function getSingleValue(key as string, Optional default as Single) As Single 103 | Return CDbl(GetValue(key,default)) 104 | End Function 105 | #tag EndMethod 106 | 107 | #tag Method, Flags = &h0 108 | Function getStringValue(key as string, Optional default as String) As String 109 | Return GetValue(key,default) 110 | End Function 111 | #tag EndMethod 112 | 113 | #tag Method, Flags = &h21 114 | Private Function getValue(key as String, Optional default as Variant) As String 115 | Dim rs as RecordSet 116 | 117 | //Check the database is connected 118 | if prefDB.Connect = True then 119 | //Get any records where key already exists 120 | rs = prefDB.SQLSelect("SELECT * FROM tblPreferences WHERE key='" + Uppercase(key) + "'") 121 | if prefDB.Error then 122 | MsgBox prefDB.ErrorMessage 123 | end if 124 | 125 | if rs.RecordCount = 0 then 126 | if default <> nil then 127 | return default 128 | Else 129 | Raise new KeyNotFoundException 130 | end if 131 | else 132 | return rs.Field("value").StringValue 133 | end if 134 | 135 | end if 136 | 137 | End Function 138 | #tag EndMethod 139 | 140 | #tag Method, Flags = &h0 141 | Function hasKey(key as String) As Boolean 142 | Dim rs as RecordSet 143 | 144 | //Check the database is connected 145 | if prefDB.Connect = True then 146 | //Get any records where key already exists 147 | rs = prefDB.SQLSelect("SELECT * FROM tblPreferences WHERE key='" + Uppercase(key) + "'") 148 | if prefDB.Error then 149 | MsgBox prefDB.ErrorMessage 150 | end if 151 | 152 | if rs.RecordCount = 0 then 153 | return False 154 | else 155 | return True 156 | end if 157 | 158 | end if 159 | End Function 160 | #tag EndMethod 161 | 162 | #tag Method, Flags = &h0 163 | Sub setBooleanValue(key as String, value as Boolean) 164 | SetValue(key,str(value)) 165 | 166 | End Sub 167 | #tag EndMethod 168 | 169 | #tag Method, Flags = &h0 170 | Sub setColorValue(key as String, value as Color) 171 | SetValue(key,value) 172 | End Sub 173 | #tag EndMethod 174 | 175 | #tag Method, Flags = &h0 176 | Sub setDoubleValue(key as String, value as Double) 177 | SetValue(key,value) 178 | 179 | End Sub 180 | #tag EndMethod 181 | 182 | #tag Method, Flags = &h0 183 | Sub setIntegerValue(key as String, value as Integer) 184 | SetValue(key,str(value)) 185 | 186 | End Sub 187 | #tag EndMethod 188 | 189 | #tag Method, Flags = &h0 190 | Sub setPictureValue(key as string,value as Picture) 191 | SetValue(key,EncodeBase64(value.GetData(Picture.FormatPNG))) 192 | End Sub 193 | #tag EndMethod 194 | 195 | #tag Method, Flags = &h0 196 | Sub setSingleValue(key as String, value as single) 197 | SetValue(key,value) 198 | 199 | End Sub 200 | #tag EndMethod 201 | 202 | #tag Method, Flags = &h0 203 | Sub setStringValue(key as String, value as String) 204 | SetValue(key,value) 205 | 206 | End Sub 207 | #tag EndMethod 208 | 209 | #tag Method, Flags = &h21 210 | Private Sub setValue(key as string, value as variant) 211 | Dim ps As PreparedSQLStatement 212 | Dim rs As RecordSet 213 | 214 | //Check the database is connected 215 | If prefDB.Connect =True Then 216 | //Get any records where key already exists 217 | rs = prefDB.SQLSelect("SELECT * FROM tblPreferences WHERE key='" + Uppercase(key) + "'") 218 | If prefDB.Error Then 219 | MsgBox prefDB.ErrorMessage 220 | End If 221 | 222 | //If the key does not already exist 223 | If rs.RecordCount = 0 Then 224 | ps = prefDB.Prepare("INSERT INTO tblPreferences (key,value) VALUES (?,?)") 225 | ps.Bind(0, Uppercase(key), SQLitePreparedStatement.SQLITE_TEXT) 226 | ps.Bind(1, Str(value), SQLitePreparedStatement.SQLITE_TEXT) 227 | ps.SQLExecute 228 | If prefDB.Error Then 229 | MsgBox prefDB.ErrorMessage 230 | End If 231 | Else 232 | //Otherwise if it does exists update the value with the new value 233 | ps = prefDB.Prepare("UPDATE tblPreferences SET value=? WHERE key=?") 234 | ps.Bind(0, Str(value), SQLitePreparedStatement.SQLITE_TEXT) 235 | ps.Bind(1, Uppercase(key), SQLitePreparedStatement.SQLITE_TEXT) 236 | ps.SQLExecute 237 | End If 238 | 239 | RaiseEvent PreferencesChanged 240 | 241 | End If 242 | 243 | End Sub 244 | #tag EndMethod 245 | 246 | 247 | #tag Hook, Flags = &h0 248 | Event PreferencesChanged() 249 | #tag EndHook 250 | 251 | 252 | #tag Property, Flags = &h21 253 | Private prefDB As SQLiteDatabase 254 | #tag EndProperty 255 | 256 | 257 | #tag ViewBehavior 258 | #tag ViewProperty 259 | Name="Index" 260 | Visible=true 261 | Group="ID" 262 | InitialValue="-2147483648" 263 | Type="Integer" 264 | #tag EndViewProperty 265 | #tag ViewProperty 266 | Name="Left" 267 | Visible=true 268 | Group="Position" 269 | InitialValue="0" 270 | Type="Integer" 271 | #tag EndViewProperty 272 | #tag ViewProperty 273 | Name="Name" 274 | Visible=true 275 | Group="ID" 276 | Type="String" 277 | #tag EndViewProperty 278 | #tag ViewProperty 279 | Name="Super" 280 | Visible=true 281 | Group="ID" 282 | Type="String" 283 | #tag EndViewProperty 284 | #tag ViewProperty 285 | Name="Top" 286 | Visible=true 287 | Group="Position" 288 | InitialValue="0" 289 | Type="Integer" 290 | #tag EndViewProperty 291 | #tag EndViewBehavior 292 | End Class 293 | #tag EndClass 294 | -------------------------------------------------------------------------------- /frmMain.xojo_window: -------------------------------------------------------------------------------- 1 | #tag Window 2 | Begin Window frmMain 3 | BackColor = &cFFFFFF00 4 | Backdrop = 0 5 | CloseButton = True 6 | Compatibility = "" 7 | Composite = False 8 | Frame = 0 9 | FullScreen = False 10 | FullScreenButton= False 11 | HasBackColor = False 12 | Height = 400 13 | ImplicitInstance= True 14 | LiveResize = True 15 | MacProcID = 0 16 | MaxHeight = 32000 17 | MaximizeButton = True 18 | MaxWidth = 32000 19 | MenuBar = 0 20 | MenuBarVisible = True 21 | MinHeight = 64 22 | MinimizeButton = True 23 | MinWidth = 64 24 | Placement = 0 25 | Resizeable = True 26 | Title = "Preferences Test Window" 27 | Visible = True 28 | Width = 600 29 | Begin CheckBox chkBool 30 | AutoDeactivate = True 31 | Bold = False 32 | Caption = "Click to store a boolean value" 33 | DataField = "" 34 | DataSource = "" 35 | Enabled = True 36 | Height = 20 37 | HelpTag = "" 38 | Index = -2147483648 39 | InitialParent = "" 40 | Italic = False 41 | Left = 20 42 | LockBottom = False 43 | LockedInPosition= False 44 | LockLeft = True 45 | LockRight = False 46 | LockTop = True 47 | Scope = 0 48 | State = 0 49 | TabIndex = 0 50 | TabPanelIndex = 0 51 | TabStop = True 52 | TextFont = "System" 53 | TextSize = 0.0 54 | TextUnit = 0 55 | Top = 14 56 | Underline = False 57 | Value = False 58 | Visible = True 59 | Width = 224 60 | End 61 | Begin Canvas canvasImage 62 | AcceptFocus = False 63 | AcceptTabs = False 64 | AutoDeactivate = True 65 | Backdrop = 0 66 | DoubleBuffer = False 67 | Enabled = True 68 | EraseBackground = True 69 | Height = 201 70 | HelpTag = "" 71 | Index = -2147483648 72 | InitialParent = "" 73 | Left = 366 74 | LockBottom = False 75 | LockedInPosition= False 76 | LockLeft = True 77 | LockRight = False 78 | LockTop = True 79 | Scope = 0 80 | TabIndex = 1 81 | TabPanelIndex = 0 82 | TabStop = True 83 | Top = 14 84 | Transparent = True 85 | UseFocusRing = True 86 | Visible = True 87 | Width = 214 88 | End 89 | End 90 | #tag EndWindow 91 | 92 | #tag WindowCode 93 | #tag EndWindowCode 94 | 95 | #tag Events chkBool 96 | #tag Event 97 | Sub Action() 98 | app.Preferences.setBooleanValue("check",me.Value) 99 | End Sub 100 | #tag EndEvent 101 | #tag Event 102 | Sub Open() 103 | me.Value = app.Preferences.getBooleanValue("check",true) 104 | End Sub 105 | #tag EndEvent 106 | #tag EndEvents 107 | #tag Events canvasImage 108 | #tag Event 109 | Sub Open() 110 | me.AcceptPictureDrop 111 | 112 | if app.Preferences.hasKey("droppedpic") then 113 | me.Backdrop = app.Preferences.getPictureValue("droppedpic") 114 | end if 115 | End Sub 116 | #tag EndEvent 117 | #tag Event 118 | Sub DropObject(obj As DragItem, action As Integer) 119 | if obj.PictureAvailable then 120 | me.Backdrop = obj.Picture 121 | app.Preferences.setPictureValue("droppedpic",me.Backdrop) 122 | 123 | end if 124 | End Sub 125 | #tag EndEvent 126 | #tag Event 127 | Sub Paint(g As Graphics, areas() As REALbasic.Rect) 128 | g.ForeColor = &c0000ff 129 | 130 | g.DrawRect(0,0,g.Width ,g.Height ) 131 | 132 | g.DrawString("Drop a picture here",5,g.Height -12,g.Width,True) 133 | End Sub 134 | #tag EndEvent 135 | #tag EndEvents 136 | #tag ViewBehavior 137 | #tag ViewProperty 138 | Name="BackColor" 139 | Visible=true 140 | Group="Appearance" 141 | InitialValue="&hFFFFFF" 142 | Type="Color" 143 | #tag EndViewProperty 144 | #tag ViewProperty 145 | Name="Backdrop" 146 | Visible=true 147 | Group="Appearance" 148 | Type="Picture" 149 | EditorType="Picture" 150 | #tag EndViewProperty 151 | #tag ViewProperty 152 | Name="CloseButton" 153 | Visible=true 154 | Group="Appearance" 155 | InitialValue="True" 156 | Type="Boolean" 157 | EditorType="Boolean" 158 | #tag EndViewProperty 159 | #tag ViewProperty 160 | Name="Composite" 161 | Visible=true 162 | Group="Appearance" 163 | InitialValue="False" 164 | Type="Boolean" 165 | #tag EndViewProperty 166 | #tag ViewProperty 167 | Name="Frame" 168 | Visible=true 169 | Group="Appearance" 170 | InitialValue="0" 171 | Type="Integer" 172 | EditorType="Enum" 173 | #tag EnumValues 174 | "0 - Document" 175 | "1 - Movable Modal" 176 | "2 - Modal Dialog" 177 | "3 - Floating Window" 178 | "4 - Plain Box" 179 | "5 - Shadowed Box" 180 | "6 - Rounded Window" 181 | "7 - Global Floating Window" 182 | "8 - Sheet Window" 183 | "9 - Metal Window" 184 | "10 - Drawer Window" 185 | "11 - Modeless Dialog" 186 | #tag EndEnumValues 187 | #tag EndViewProperty 188 | #tag ViewProperty 189 | Name="FullScreen" 190 | Group="Appearance" 191 | InitialValue="False" 192 | Type="Boolean" 193 | EditorType="Boolean" 194 | #tag EndViewProperty 195 | #tag ViewProperty 196 | Name="FullScreenButton" 197 | Visible=true 198 | Group="Appearance" 199 | InitialValue="False" 200 | Type="Boolean" 201 | EditorType="Boolean" 202 | #tag EndViewProperty 203 | #tag ViewProperty 204 | Name="HasBackColor" 205 | Visible=true 206 | Group="Appearance" 207 | InitialValue="False" 208 | Type="Boolean" 209 | #tag EndViewProperty 210 | #tag ViewProperty 211 | Name="Height" 212 | Visible=true 213 | Group="Position" 214 | InitialValue="400" 215 | Type="Integer" 216 | #tag EndViewProperty 217 | #tag ViewProperty 218 | Name="ImplicitInstance" 219 | Visible=true 220 | Group="Appearance" 221 | InitialValue="True" 222 | Type="Boolean" 223 | EditorType="Boolean" 224 | #tag EndViewProperty 225 | #tag ViewProperty 226 | Name="Interfaces" 227 | Visible=true 228 | Group="ID" 229 | Type="String" 230 | #tag EndViewProperty 231 | #tag ViewProperty 232 | Name="LiveResize" 233 | Visible=true 234 | Group="Appearance" 235 | InitialValue="True" 236 | Type="Boolean" 237 | EditorType="Boolean" 238 | #tag EndViewProperty 239 | #tag ViewProperty 240 | Name="MacProcID" 241 | Visible=true 242 | Group="Appearance" 243 | InitialValue="0" 244 | Type="Integer" 245 | #tag EndViewProperty 246 | #tag ViewProperty 247 | Name="MaxHeight" 248 | Visible=true 249 | Group="Position" 250 | InitialValue="32000" 251 | Type="Integer" 252 | #tag EndViewProperty 253 | #tag ViewProperty 254 | Name="MaximizeButton" 255 | Visible=true 256 | Group="Appearance" 257 | InitialValue="True" 258 | Type="Boolean" 259 | EditorType="Boolean" 260 | #tag EndViewProperty 261 | #tag ViewProperty 262 | Name="MaxWidth" 263 | Visible=true 264 | Group="Position" 265 | InitialValue="32000" 266 | Type="Integer" 267 | #tag EndViewProperty 268 | #tag ViewProperty 269 | Name="MenuBar" 270 | Visible=true 271 | Group="Appearance" 272 | Type="MenuBar" 273 | EditorType="MenuBar" 274 | #tag EndViewProperty 275 | #tag ViewProperty 276 | Name="MenuBarVisible" 277 | Group="Appearance" 278 | InitialValue="True" 279 | Type="Boolean" 280 | EditorType="Boolean" 281 | #tag EndViewProperty 282 | #tag ViewProperty 283 | Name="MinHeight" 284 | Visible=true 285 | Group="Position" 286 | InitialValue="64" 287 | Type="Integer" 288 | #tag EndViewProperty 289 | #tag ViewProperty 290 | Name="MinimizeButton" 291 | Visible=true 292 | Group="Appearance" 293 | InitialValue="True" 294 | Type="Boolean" 295 | EditorType="Boolean" 296 | #tag EndViewProperty 297 | #tag ViewProperty 298 | Name="MinWidth" 299 | Visible=true 300 | Group="Position" 301 | InitialValue="64" 302 | Type="Integer" 303 | #tag EndViewProperty 304 | #tag ViewProperty 305 | Name="Name" 306 | Visible=true 307 | Group="ID" 308 | Type="String" 309 | #tag EndViewProperty 310 | #tag ViewProperty 311 | Name="Placement" 312 | Visible=true 313 | Group="Position" 314 | InitialValue="0" 315 | Type="Integer" 316 | EditorType="Enum" 317 | #tag EnumValues 318 | "0 - Default" 319 | "1 - Parent Window" 320 | "2 - Main Screen" 321 | "3 - Parent Window Screen" 322 | "4 - Stagger" 323 | #tag EndEnumValues 324 | #tag EndViewProperty 325 | #tag ViewProperty 326 | Name="Resizeable" 327 | Visible=true 328 | Group="Appearance" 329 | InitialValue="True" 330 | Type="Boolean" 331 | EditorType="Boolean" 332 | #tag EndViewProperty 333 | #tag ViewProperty 334 | Name="Super" 335 | Visible=true 336 | Group="ID" 337 | Type="String" 338 | #tag EndViewProperty 339 | #tag ViewProperty 340 | Name="Title" 341 | Visible=true 342 | Group="Appearance" 343 | InitialValue="Untitled" 344 | Type="String" 345 | #tag EndViewProperty 346 | #tag ViewProperty 347 | Name="Visible" 348 | Visible=true 349 | Group="Appearance" 350 | InitialValue="True" 351 | Type="Boolean" 352 | EditorType="Boolean" 353 | #tag EndViewProperty 354 | #tag ViewProperty 355 | Name="Width" 356 | Visible=true 357 | Group="Position" 358 | InitialValue="600" 359 | Type="Integer" 360 | #tag EndViewProperty 361 | #tag EndViewBehavior 362 | --------------------------------------------------------------------------------