home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************/
- /** **/
- /** : DFREE21.C Last Updated: Dec.22/90 **/
- /** : By Chris Herborth **/
- /** **/
- /** : A desk accessory that tells you how much free disk space is on **/
- /** the selected drive... **/
- /** As of v2.1, you also get the amount of free RAM on the system. **/
- /** **/
- /************************************************************************/
- #include <osbind.h>
- #include <gemdefs.h>
- #include <obdefs.h>
- #include <dfree21.h>
-
- /************************************************************************/
- /** : RSC file pulled form RSCTOC.TTP... Modified slightly so it'll **/
- /** compile properly... **/
- /************************************************************************/
- #include <dfree21r.c>
-
- extern int gl_apid;
- OBJECT *dfree_dial;
-
- main()
- {
- int menu_id, msg[8], loop, butt, disk, dum;
-
- /* Tell GEM that we're awake... */
- appl_init();
- /* See if GEM wants to sleep in... */
- if( gl_apid == -1 )
- Pterm0();
-
- /* We want a menu spot! */
- menu_id = menu_register( gl_apid, " Disk Free 2.1 " );
- /* If there's no room at the inn, we leave... */
- if( menu_id == -1 )
- {
- Cconws( "\33pDFree 2.1\33q: Unable to initialize!\n\r" );
- appl_exit();
- Pterm0();
- }
-
- fix_objects();
-
- dfree_dial = &(rs_object[0]);
-
- /* Do this forever... */
- for( ;; )
- {
- /* Are there any messages for us? */
- evnt_mesag( msg );
-
- if( msg[0] == AC_OPEN && msg[4] == menu_id )
- if( msg[4] == menu_id )
- do_dfree();
- }
-
- /* I don't have to clean anything up, 'cause this never ends!!!! */
- }
-
- do_dfree()
- {
- long vld_drv, disk_bytes, disk_k, total_bytes, total_k, mem_free;
- int loop, x, y, w, h, butt;
- char *kfree, *bfree, *memfree, *drv;
- TEDINFO *tmp;
-
- disk_info free;
-
- tmp = (TEDINFO *)dfree_dial[KFREE].ob_spec;
- kfree = tmp->te_ptext;
- tmp = (TEDINFO *)dfree_dial[BFREE].ob_spec;
- bfree = tmp->te_ptext;
- tmp = (TEDINFO *)dfree_dial[RAMTEXT].ob_spec;
- memfree = tmp->te_ptext;
- drv = dfree_dial[DRIVETXT].ob_spec;
-
- fill_blank( kfree, 7 );
- fill_blank( bfree, 10 );
- fill_blank( memfree, 5 );
- fill_blank( drv, 2 );
- kfree[0] = '0';
- bfree[0] = '0';
- drv[0] = 'A';
- drv[1] = ':';
-
- mem_free = Malloc( -1L );
- ltoa( (mem_free >> 10), memfree );
- for( loop = 0; memfree[loop] != 0x00; loop++ )
- ;
- memfree[loop] = 'k';
-
- vld_drv = Drvmap();
- butt = 1;
- for( loop = 0; loop < 16; loop++ )
- {
- if( vld_drv & butt )
- {
- dfree_dial[DRV_A + loop].ob_state &= (!DISABLED | SHADOWED);
- dfree_dial[DRV_A + loop].ob_flags |= (SELECTABLE | TOUCHEXIT);
- }
- else
- {
- dfree_dial[DRV_A + loop].ob_state |= (DISABLED | SHADOWED);
- dfree_dial[DRV_A + loop].ob_flags &= !SELECTABLE;
- }
- butt *= 2;
- }
-
- form_center( dfree_dial, &x,&y,&w,&h );
- x -= 5; y -= 5; w += 10; h += 10;
-
- form_dial( FMD_START, 0,0,0,0, x,y,w,h );
-
- butt = DRV_A;
- while( butt != DONEBUTT )
- {
- objc_draw( dfree_dial, ROOT, MAX_DEPTH, x,y,w,h );
- butt = form_do( dfree_dial, 0 );
- if( butt != DONEBUTT )
- {
- graf_mouse( 2, 0L );
- Dfree( &free, butt - DRV_A + 1 );
- drv[0] = butt - DRV_A + 'A';
- graf_mouse( 0, 0L );
-
- disk_bytes = free.b_clsiz * free.b_secsiz * free.b_free;
- total_bytes = free.b_clsiz * free.b_secsiz * free.b_total;
- disk_k = disk_bytes >> 10;
- total_k = total_bytes >> 10;
-
- ltoa( disk_k, kfree );
- ltoa( disk_bytes, bfree );
- }
- dfree_dial[butt].ob_state ^= SELECTED;
- }
-
- form_dial( FMD_FINISH, 0,0,0,0, x,y,w,h );
- }
-
-