| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #include "stdafx.h"
- #include <winreg.h>
- #include <iomanip>
- #include "resource.h"
- #include "prefs.h"
- #define SWAPRB(x) ( (((x)>>16)&0xff) | ((x)&0xff00) | (((x)&0xff)<<16) )
- Prefs prefs;
- void Prefs::open(){
- char *p=getenv( "blitzpath" );
- if( !p ){
- AfxMessageBox( "blitzpath environment variable not found!",MB_TOPMOST|MB_SETFOREGROUND|MB_ICONINFORMATION );
- ExitProcess(0);
- }
- homeDir=p;
- AddFontResource( (homeDir+"/cfg/blitz.fon").c_str() );
- setDefault();
- bool prg_windowed;
- ifstream in( (homeDir+"/cfg/blitzide.prefs").c_str() );
- if( !in.good() ) return;
- while( !in.eof() ){
- string t;in>>t;
- if( !t.size() ) continue;
- while( in.peek()=='\t' ) in.ignore();
- if( t=="prg_debug" ) in>>prg_debug;
- else if( t=="prg_lastbuild" ) getline( in,prg_lastbuild );
- else if( t=="prg_windowed" ) in>>prg_windowed;
- else if( t=="win_maximized" ) in>>win_maximized;
- else if( t=="win_notoolbar" ) in>>win_notoolbar;
- else if( t=="win_rect" ){
- in>>win_rect.left;in>>win_rect.top;
- in>>win_rect.right;in>>win_rect.bottom;
- }else if( t.substr( 0,5 )=="font_" ){
- string s;int h;in>>s;in>>h;
- t=t.substr( 5 );
- if( t=="editor" ){
- font_editor=s;font_editor_height=h;
- }else if( t=="tabs" ){
- font_tabs=s;font_tabs_height=h;
- }else if( t=="debug" ){
- font_debug=s;font_debug_height=h;
- }
- }else if( t.substr( 0,4 )=="rgb_" ){
- t=t.substr(4);
- string s;in>>s;int rgb=0;
- for( int k=0;k<s.size();++k ){
- int n=s[k];rgb=(rgb<<4)|(n<='9'?n-'0':(n&31)+9);
- }
- rgb=SWAPRB(rgb);
- if( t=="bkgrnd" ) rgb_bkgrnd=rgb;
- else if( t=="string" ) rgb_string=rgb;
- else if( t=="ident" ) rgb_ident=rgb;
- else if( t=="keyword" ) rgb_keyword=rgb;
- else if( t=="comment" ) rgb_comment=rgb;
- else if( t=="digit" ) rgb_digit=rgb;
- else if( t=="default" ) rgb_default=rgb;
- }else if( t=="edit_tabs" ){
- in>>edit_tabs;
- }else if( t=="edit_blkcursor" ){
- in>>edit_blkcursor;
- }else if( t=="edit_backup" ){
- in>>edit_backup;
- }else if( t=="img_toolbar" ){
- getline( in,img_toolbar );
- }else if( t=="cmd_line" ){
- getline( in,cmd_line );
- }else if( t=="file_recent" ){
- string l;getline( in,l );
- if( recentFiles.size()<10 ) recentFiles.push_back( l );
- }else{
- string s="Unrecognized option '"+t+"' in blitzide.prefs";
- AfxMessageBox( "Error in preferences file" );
- setDefault();
- return;
- }
- }
- createFonts();
- }
- void Prefs::close(){
- ofstream out( (homeDir+"/cfg/blitzide.prefs").c_str() );
- if( !out.good() ) return;
- out<<"prg_debug\t"<<prg_debug<<endl;
- out<<"prg_lastbuild\t"<<prg_lastbuild<<endl;
- out<<"win_maximized\t"<<win_maximized<<endl;
- out<<"win_notoolbar\t"<<win_notoolbar<<endl;
- out<<"win_rect\t"<<win_rect.left<<' '<<win_rect.top<<' '<<win_rect.right<<' '<<win_rect.bottom<<endl;
- out<<"font_editor\t"<<font_editor<<' '<<font_editor_height<<endl;
- out<<"font_tabs\t"<<font_tabs<<' '<<font_tabs_height<<endl;
- out<<"font_debug\t"<<font_debug<<' '<<font_debug_height<<endl;
- out<<hex;
- out<<"rgb_bkgrnd\t"<<SWAPRB(rgb_bkgrnd)<<endl;
- out<<"rgb_string\t"<<SWAPRB(rgb_string)<<endl;
- out<<"rgb_ident\t"<<SWAPRB(rgb_ident)<<endl;
- out<<"rgb_keyword\t"<<SWAPRB(rgb_keyword)<<endl;
- out<<"rgb_comment\t"<<SWAPRB(rgb_comment)<<endl;
- out<<"rgb_digit\t"<<SWAPRB(rgb_digit)<<endl;
- out<<"rgb_default\t"<<SWAPRB(rgb_default)<<endl;
- out<<"edit_tabs\t"<<edit_tabs<<endl;
- out<<"edit_blkcursor\t"<<edit_blkcursor<<endl;
- out<<"edit_backup\t"<<edit_backup<<endl;
- out<<"img_toolbar\t"<<img_toolbar<<endl;
- out<<"cmd_line\t"<<cmd_line<<endl;
- for( int k=0;k<recentFiles.size();++k ){
- out<<"file_recent\t"<<recentFiles[k]<<endl;
- }
- out<<dec;
- RemoveFontResource( (homeDir+"/cfg/blitz.fon").c_str() );
- }
- void Prefs::setDefault(){
- prg_debug=true;
- win_rect.left=win_rect.top=0;
- win_rect.right=640;win_rect.bottom=480;
- win_maximized=false;
- win_notoolbar=false;
- #ifdef PLUS
- font_editor="courier";
- font_editor_height=10;
- #else
- font_editor="blitz";
- font_editor_height=12;
- #endif
- font_tabs="verdana";
- font_tabs_height=8;
- font_debug="verdana";
- font_debug_height=8;
- #ifdef PRO
- rgb_bkgrnd=RGB( 0x22,0x55,0x88 );
- rgb_string=RGB( 0x00,0xff,0x66 );
- rgb_ident=RGB( 0xff,0xff,0xff );
- rgb_keyword=RGB( 0xaa,0xff,0xff );
- rgb_comment=RGB( 0xff,0xee,0x00 );
- rgb_digit=RGB( 0x33,0xff,0xdd );
- rgb_default=RGB( 0xee,0xee,0xee );
- #else
- #ifdef PLUS
- rgb_bkgrnd= SWAPRB(0x225577);
- rgb_string= SWAPRB(0x00ffff);
- rgb_ident= SWAPRB(0xffffff);
- rgb_keyword=SWAPRB(0xffff00);
- rgb_comment=SWAPRB(0x00ff00);
- rgb_digit= SWAPRB(0x00ffff);
- rgb_default=SWAPRB(0xffffff);
- #else
- rgb_bkgrnd=RGB( 32,96,96 );
- rgb_string=RGB( 0,255,0 );
- rgb_ident=RGB( 255,255,255 );
- rgb_keyword=RGB( 255,231,95 );
- rgb_comment=RGB( 0,255,255 );
- rgb_digit=RGB( 200,240,255 );
- rgb_default=RGB( 255,240,200 );
- #endif
- #endif
- edit_tabs=4;
- edit_blkcursor=false;
- edit_backup=2;
- img_toolbar="toolbar.bmp";
- recentFiles.clear();
- createFonts();
- }
- void Prefs::createFonts(){
- editFont.Detach();
- tabsFont.Detach();
- debugFont.Detach();
- conFont.Detach();
- editFont.CreatePointFont( font_editor_height*10,font_editor.c_str() );
- tabsFont.CreatePointFont( font_tabs_height*10,font_tabs.c_str() );
- debugFont.CreatePointFont( font_debug_height*10,font_debug.c_str() );
- conFont.CreatePointFont( 80,"courier" );
- }
|