EnglishРусский  

   ..

   gtsave.g

   prj.g

   prj3.g

   prjnew.g

Ads

Perfect Automation tool
All-In-One: Script editor, Launcher, Scheduler, Keyboard & Mouse Recorder. Try now!

CreateInstall
Freeware and commercial installers.

Cell Phone Batteries
Batteries Plus offers batteries for laptop, camcorder, cell phone, camera.

Gentee needs your help!
How to advertise with us
 
laptop battery

source\lib\prj\prj.g
  1 /******************************************************************************
  2 *
  3 * Copyright (C) 2006, The Gentee Group. All rights reserved. 
  4 * This file is part of the Gentee open source project - http://www.gentee.com. 
  5 * 
  6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
  7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
  8 * ACCEPTANCE OF THE AGREEMENT.
  9 *
 10 * ID: prj 17.10.06 0.0.A.
 11 *
 12 * Author: Alexey Krivonogov ( gentee )
 13 *
 14 ******************************************************************************/
 15 
 16 include
 17 {
 18    $"..\gt2\gt.g"
 19 }
 20 
 21 /*-----------------------------------------------------------------------------
 22 *
 23 * ID: prj 12.10.06 1.1.A. 
 24 * 
 25 * Summary: Project type
 26 *  
 27 -----------------------------------------------------------------------------*/
 28 
 29 type prj <inherit = gt2 index = str>
 30 {
 31    uint opened       // 1 if there is an open project
 32    uint changed      // 1 if the project was changed
 33    uint nfy          // id of the notify function
 34    str  filename     // The current file name or an empty string
 35    str  program      // The unique program name
 36    uint version      // The unique version
 37    str  update       // Update data for adding missing values
 38 }
 39 
 40 /*-----------------------------------------------------------------------------
 41 *
 42 * ID: prjnfy 12.10.06 1.1.A. 
 43 * 
 44 * Summary: Project notify codes
 45 *  
 46 -----------------------------------------------------------------------------*/
 47 
 48 define <export>
 49 {
 50    PRJNFY_OPEN = 0    // The project was opened
 51    PRJNFY_CLOSE       // The project was closed
 52    PRJNFY_CANCLOSE    // Send when the user tries to close the project
 53    PRJNFY_CHANGE      // The project was chaged. Send one time (after the 
 54                       // first changing )
 55    PRJNFY_NEW         // Request the new project pattern
 56    PRJNFY_NAME        // Change the file name    
 57 }
 58 
 59 global
 60 {
 61    str  prjempty
 62 }
 63 
 64 /*-----------------------------------------------------------------------------
 65 *
 66 * ID: prj_setnotify 12.10.06 1.1.A. 
 67 * 
 68 * Summary: Specify notify function. func uint name( prj iprj, uint code )
 69   where code can be PRJNFY_*
 70 *  
 71 -----------------------------------------------------------------------------*/
 72 
 73 method  prj.settings( uint nfyfunc, str program, uint version )
 74 {
 75    this.nfy = nfyfunc
 76    this.program = program
 77    this.version = version         
 78 }
 79 
 80 /*-----------------------------------------------------------------------------
 81 *
 82 * ID: prj_notify 12.10.06 1.1.A. 
 83 * 
 84 * Summary: Send notify message PRJNFY_*
 85 *  
 86 -----------------------------------------------------------------------------*/
 87 
 88 method uint prj.notify( uint nfy )
 89 {
 90    if this.nfy : return this.nfy->func( this, nfy )
 91    return 0      
 92 }
 93 
 94 /*-----------------------------------------------------------------------------
 95 *
 96 * ID: prj_close 12.10.06 1.1.A. 
 97 * 
 98 * Summary: Close the project
 99 *  
100 -----------------------------------------------------------------------------*/
101 
102 method uint prj.close
103 {
104    if !this.opened : return 1
105    
106    this.notify( $PRJNFY_CANCLOSE ) 
107    
108    this.clear()
109    this.opened = 0
110    this.changed = 0
111 //   this.filename.clear()   
112    
113    this.notify( $PRJNFY_CLOSE )
114    return 1   
115 }
116 
117 /*-----------------------------------------------------------------------------
118 *
119 * ID: prj_new 12.10.06 1.1.A. 
120 * 
121 * Summary: Specify notify function. func uint name( prj iprj, uint code )
122   where code can be PRJNFY_*
123 *  
124 -----------------------------------------------------------------------------*/
125 
126 method uint prj.new
127 {
128    if $DEBUG : print("prj.new > OK \n")
129    if this.opened : this.close()
130    if $DEBUG : print("prj.new >> OK \n")
131    if $DEBUG : print("prj.new >>>\(this.update)<<< \n")
132    if *this.update : this += this.update
133    if $DEBUG : print("prj.new >>>> OK \n")
134 
135    this.notify( $PRJNFY_NEW )
136    this.filename.clear()
137    this.opened = 1
138    this.changed = 1   
139    this.notify( $PRJNFY_OPEN )
140    return 1   
141 }
142 
143 /*-----------------------------------------------------------------------------
144 *
145 * ID: prj_open 12.10.06 1.1.A. 
146 * 
147 * Summary: Load a project from the file
148 *  
149 -----------------------------------------------------------------------------*/
150 
151 method uint prj.open( str filename )
152 {
153    if this.opened : this.close()
154    if *this.update : this += this.update
155    this.read( filename )
156    this.filename = filename
157    this.opened = 1
158    this.notify( $PRJNFY_OPEN )
159    return 1   
160 }
161 
162 /*-----------------------------------------------------------------------------
163 *
164 * ID: prj_save 12.10.06 1.1.A. 
165 * 
166 * Summary: Save a project
167 *  
168 -----------------------------------------------------------------------------*/
169 
170 method uint prj.save()
171 {
172    gt2save gt2s
173    
174    if !this.opened || !*this.filename : return 0
175     
176    gt2s.offstep = 3
177    gt2s.inside = 0
178    gt2s.endname = 0
179    
180    this.write( this.filename, gt2s )
181    if this.changed
182    {
183       this.changed = 0
184       this.notify( $PRJNFY_CHANGE )
185    }
186    return 1   
187 }
188 
189 /*-----------------------------------------------------------------------------
190 *
191 * ID: prj_save 12.10.06 1.1.A. 
192 * 
193 * Summary: Save a project to the filename
194 *  
195 -----------------------------------------------------------------------------*/
196 
197 method uint prj.save( str filename )
198 {
199    uint ret
200    
201    this.filename = filename
202    ret = this.save()   
203    this.notify( $PRJNFY_NAME )
204    return ret
205 }
206 
207 /*-----------------------------------------------------------------------------
208 *
209 * ID: prj_index 12.10.06 1.1.A. 
210 * 
211 * Summary: 
212 *  
213 -----------------------------------------------------------------------------*/
214 
215 method uint prj.index( str name )
216 {
217    uint gti
218    
219    gti as this.find( "project/\(name)" )
220    if >i : return >i.value
221    prjempty.clear()
222    return &prjempty
223 }
224 
225 /*-----------------------------------------------------------------------------
226 *
227 * ID: prj_set 12.10.06 1.1.A. 
228 * 
229 * Summary: Set a project value
230 *  
231 -----------------------------------------------------------------------------*/
232 
233 method prj.set( str name value )
234 {
235    uint  sti
236    
237    sti as this[ name ]
238    if &sti
239    {
240       sti = value
241       if !this.changed
242       {
243          this.changed = 1
244          this.notify( $PRJNFY_CHANGE )
245       }
246    }
247 }
248 
249 /*-----------------------------------------------------------------------------
250 *
251 * ID: prj_set 12.10.06 1.1.A. 
252 * 
253 * Summary: Set a project value
254 *  
255 -----------------------------------------------------------------------------*/
256 
257 method prj.set( gt2item gti, str value )
258 {
259    gti.value = value
260    if !this.changed
261    {
262       this.changed = 1
263       this.notify( $PRJNFY_CHANGE )
264    }
265 }
266 
267 /*-----------------------------------------------------------------------------
268 *
269 * ID: prj_insert 12.10.06 1.1.A. 
270 * 
271 * Summary: Insert project items
272 *  
273 -----------------------------------------------------------------------------*/
274 
275 method gt2item prj.insert( str data, gt2item parent after )
276 {
277    uint  ret
278  
279    if $DEBUG : print("Insert > OK \(&after)\n")
280    ret as parent.load( data, after )
281    if $DEBUG : print("Insert >> OK\n")
282    if !this.changed
283    {
284       this.changed = 1
285       this.notify( $PRJNFY_CHANGE )
286    }
287    if $DEBUG : print("Insert >>> OK\n")
288     
289    return ret->gt2item
290 }
291 
292 /*-----------------------------------------------------------------------------
293 *
294 * ID: prj_moveup 12.10.06 1.1.A. 
295 * 
296 * Summary: Move the project item up
297 *  
298 -----------------------------------------------------------------------------*/
299 
300 method gt2item prj.moveup( gt2item cur )
301 {
302    if cur.moveup() && !this.changed
303    {
304       this.changed = 1
305       this.notify( $PRJNFY_CHANGE )
306    }    
307    return cur
308 }
309 
310 /*-----------------------------------------------------------------------------
311 *
312 * ID: prj_movedown 12.10.06 1.1.A. 
313 * 
314 * Summary: Move the project item down
315 *  
316 -----------------------------------------------------------------------------*/
317 
318 method gt2item prj.movedown( gt2item cur )
319 {
320    if cur.movedown() && !this.changed
321    {
322       this.changed = 1
323       this.notify( $PRJNFY_CHANGE )
324    }    
325    return cur
326 }
327 
328 /*-----------------------------------------------------------------------------
329 *
330 * ID: prj_disable 12.10.06 1.1.A. 
331 * 
332 * Summary: Move the project item down
333 *  
334 -----------------------------------------------------------------------------*/
335 
336 method uint prj.disable( gt2item gti, uint state )
337 {
338    if state : gti.setattrib( "disable" )
339    else : gti.delattrib( "disable" )
340    
341    if !this.changed
342    {
343       this.changed = 1
344       this.notify( $PRJNFY_CHANGE )
345    }    
346    return 1
347 }
348 
349 /*-----------------------------------------------------------------------------
350 *
351 * ID: prj_disable 12.10.06 1.1.A. 
352 * 
353 * Summary: Move the project item down
354 *  
355 -----------------------------------------------------------------------------*/
356 
357 method uint prj.del( gt2item gti )
358 {
359    gti.del()
360       
361    if !this.changed
362    {
363       this.changed = 1
364       this.notify( $PRJNFY_CHANGE )
365    }    
366    return 1
367 }
Edit