prefs.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #include "stdafx.h"
  2. #include "prefs.h"
  3. #include "debuggerapp.h"
  4. #include <fstream>
  5. #define SWAPRB(x) ( (((x)>>16)&0xff) | ((x)&0xff00) | (((x)&0xff)<<16) )
  6. Prefs prefs;
  7. void Prefs::open(){
  8. homeDir=getenv( "blitzpath" );
  9. AddFontResource( (homeDir+"/cfg/blitz.fon").c_str() );
  10. setDefault();
  11. bool prg_windowed;
  12. ifstream in( (homeDir+"/cfg/blitzide.prefs").c_str() );
  13. if( !in.good() ) return;
  14. while( !in.eof() ){
  15. string t;in>>t;
  16. if( !t.size() ) continue;
  17. while( in.peek()=='\t' ) in.ignore();
  18. if( t=="prg_debug" ) in>>prg_debug;
  19. else if( t=="prg_lastbuild" ) getline( in,prg_lastbuild );
  20. else if( t=="prg_windowed" ) in>>prg_windowed;
  21. else if( t=="win_maximized" ) in>>win_maximized;
  22. else if( t=="win_notoolbar" ) in>>win_notoolbar;
  23. else if( t=="win_rect" ){
  24. in>>win_rect.left;in>>win_rect.top;
  25. in>>win_rect.right;in>>win_rect.bottom;
  26. }else if( t.substr( 0,5 )=="font_" ){
  27. string s;int h;in>>s;in>>h;
  28. t=t.substr( 5 );
  29. if( t=="editor" ){
  30. font_editor=s;font_editor_height=h;
  31. }else if( t=="tabs" ){
  32. font_tabs=s;font_tabs_height=h;
  33. }else if( t=="debug" ){
  34. font_debug=s;font_debug_height=h;
  35. }
  36. }else if( t.substr( 0,4 )=="rgb_" ){
  37. t=t.substr(4);
  38. string s;in>>s;int rgb=0;
  39. for( int k=0;k<s.size();++k ){
  40. int n=s[k];rgb=(rgb<<4)|(n<='9'?n-'0':(n&31)+9);
  41. }
  42. rgb=SWAPRB(rgb);
  43. if( t=="bkgrnd" ) rgb_bkgrnd=rgb;
  44. else if( t=="string" ) rgb_string=rgb;
  45. else if( t=="ident" ) rgb_ident=rgb;
  46. else if( t=="keyword" ) rgb_keyword=rgb;
  47. else if( t=="comment" ) rgb_comment=rgb;
  48. else if( t=="digit" ) rgb_digit=rgb;
  49. else if( t=="default" ) rgb_default=rgb;
  50. }else if( t=="edit_tabs" ){
  51. in>>edit_tabs;
  52. }else if( t=="edit_blkcursor" ){
  53. in>>edit_blkcursor;
  54. }else if( t=="edit_backup" ){
  55. in>>edit_backup;
  56. }else if( t=="img_toolbar" ){
  57. getline( in,img_toolbar );
  58. }else if( t=="cmd_line" ){
  59. getline( in,cmd_line );
  60. }else if( t=="file_recent" ){
  61. string l;getline( in,l );
  62. if( recentFiles.size()<10 ) recentFiles.push_back( l );
  63. }else{
  64. string s="Unrecognized option '"+t+"' in blitzide.prefs";
  65. MessageBox( 0,s.c_str(),"Error in preferences",MB_OK );
  66. setDefault();
  67. return;
  68. }
  69. }
  70. createFonts();
  71. }
  72. void Prefs::close(){
  73. ofstream out( (homeDir+"cfg\\blitzide.prefs").c_str() );
  74. if( !out.good() ) return;
  75. out<<"prg_debug\t"<<prg_debug<<endl;
  76. out<<"prg_lastbuild\t"<<prg_lastbuild<<endl;
  77. out<<"win_maximized\t"<<win_maximized<<endl;
  78. out<<"win_notoolbar\t"<<win_notoolbar<<endl;
  79. out<<"win_rect\t"<<win_rect.left<<' '<<win_rect.top<<' '<<win_rect.right<<' '<<win_rect.bottom<<endl;
  80. out<<"font_editor\t"<<font_editor<<' '<<font_editor_height<<endl;
  81. out<<"font_tabs\t"<<font_tabs<<' '<<font_tabs_height<<endl;
  82. out<<"font_debug\t"<<font_debug<<' '<<font_debug_height<<endl;
  83. out<<hex;
  84. out<<"rgb_bkgrnd\t"<<SWAPRB(rgb_bkgrnd)<<endl;
  85. out<<"rgb_string\t"<<SWAPRB(rgb_string)<<endl;
  86. out<<"rgb_ident\t"<<SWAPRB(rgb_ident)<<endl;
  87. out<<"rgb_keyword\t"<<SWAPRB(rgb_keyword)<<endl;
  88. out<<"rgb_comment\t"<<SWAPRB(rgb_comment)<<endl;
  89. out<<"rgb_digit\t"<<SWAPRB(rgb_digit)<<endl;
  90. out<<"rgb_default\t"<<SWAPRB(rgb_default)<<endl;
  91. out<<"edit_tabs\t"<<edit_tabs<<endl;
  92. out<<"edit_blkcursor\t"<<edit_blkcursor<<endl;
  93. out<<"edit_backup\t"<<edit_backup<<endl;
  94. out<<"img_toolbar\t"<<img_toolbar<<endl;
  95. out<<"cmd_line\t"<<cmd_line<<endl;
  96. for( int k=0;k<recentFiles.size();++k ){
  97. out<<"file_recent\t"<<recentFiles[k]<<endl;
  98. }
  99. out<<dec;
  100. RemoveFontResource( (homeDir+"cfg\\blitz.fon").c_str() );
  101. }
  102. void Prefs::setDefault(){
  103. prg_debug=true;
  104. win_rect.left=win_rect.top=0;
  105. win_rect.right=640;win_rect.bottom=480;
  106. win_maximized=false;
  107. win_notoolbar=false;
  108. font_editor="blitz";
  109. font_editor_height=12;
  110. font_tabs="verdana";
  111. font_tabs_height=8;
  112. font_debug="verdana";
  113. font_debug_height=8;
  114. #ifdef PRO
  115. rgb_bkgrnd=RGB( 0x22,0x55,0x88 );
  116. rgb_string=RGB( 0x00,0xff,0x66 );
  117. rgb_ident=RGB( 0xff,0xff,0xff );
  118. rgb_keyword=RGB( 0xaa,0xff,0xff );
  119. rgb_comment=RGB( 0xff,0xee,0x00 );
  120. rgb_digit=RGB( 0x33,0xff,0xdd );
  121. rgb_default=RGB( 0xee,0xee,0xee );
  122. rgb_unsel=RGB( 0x88,0x88,0x88 );
  123. #else
  124. rgb_bkgrnd=RGB( 32,96,96 );
  125. rgb_string=RGB( 0,255,0 );
  126. rgb_ident=RGB( 255,255,255 );
  127. rgb_keyword=RGB( 255,231,95 );
  128. rgb_comment=RGB( 0,255,255 );
  129. rgb_digit=RGB( 200,240,255 );
  130. rgb_default=RGB( 255,240,200 );
  131. #endif
  132. edit_tabs=4;
  133. edit_blkcursor=false;
  134. edit_backup=2;
  135. img_toolbar="toolbar.bmp";
  136. recentFiles.clear();
  137. createFonts();
  138. }
  139. void Prefs::createFonts(){
  140. editFont.Detach();
  141. tabsFont.Detach();
  142. debugFont.Detach();
  143. conFont.Detach();
  144. editFont.CreatePointFont( font_editor_height*10,font_editor.c_str() );
  145. tabsFont.CreatePointFont( font_tabs_height*10,font_tabs.c_str() );
  146. debugFont.CreatePointFont( font_debug_height*10,font_debug.c_str() );
  147. conFont.CreatePointFont( 80,"courier" );
  148. }