root/BF_GUI_Setup.cpp

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. Load
  2. Clear
  3. Load
  4. SavePanel
  5. Save
  6. WriteVar
  7. WriteVar
  8. VarUnpack
  9. Save
  10. StylesStrToInt
  11. MakeFont
  12. CalcVars
  13. Load
  14. Save
  15. InitDefault
  16. SetColor
  17. MainStyle
  18. FPanelFullStyle
  19. FPanelColsStyle
  20. SetMainStyle
  21. UpdateFrom
  22. CopyTo
  23. WriteStyle
  24. IsLineVar
  25. ReadLine
  26. VarTo
  27. ReadColor
  28. Save_Colors
  29. Save_Fonts
  30. Load
  31. Save
  32. LoadPalete
  33. LoadColors
  34. ColorIndexByCode
  35. SetColorByCode
  36. SavePalete

   1 #include <stdlib.h>     
   2 #include <stdio.h>
   3 
   4 #include "BF_Dict.h"    
   5 #include "BL_Tools.h"   
   6 #include "BF_GUI_Setup.h"       
   7 
   8 #include "BF_Roster.h"
   9 #include "BF_GUI_DlgViews.h"
  10 #include "BF_GUI_WinMain.h"
  11 #include "BF_GUI_NodePanel.h"
  12 
  13 BF_GUI_Setup *poSysSetup = NULL;
  14 
  15 //////////////////////////////////////////////////////////////////////////
  16 
  17 #define VARS_FILE "vars.settings"
  18 
  19 BF_GUI_Setup_Vars_Panel::BF_GUI_Setup_Vars_Panel()
  20 {
  21         iModeFullStyles = 0;
  22         iModeColsStyles = 0;
  23         iMode = 0;
  24         sPath = "";
  25 }
  26 
  27 void                                    
  28 BF_GUI_Setup_Vars_Panel::Load(BF_ConfigFile &o_File)    /* [previous][next][first][last][top][bottom][index][help] */
  29 {
  30         Clear();
  31         
  32         BL_String s,sValue,sName;
  33         while(B_OK==o_File.ReadString(&s)){
  34                 if(s=="}") break;else
  35                 if(s=="full_styles{"){
  36                         iModeFullStyles = 0;
  37                         while(B_OK==o_File.ReadString(&s)){
  38                                 if(s=="name") iModeFullStyles = iModeFullStyles|BF_NODEPANEL_FULL_NAME;else
  39                                 if(s=="date") iModeFullStyles = iModeFullStyles|BF_NODEPANEL_FULL_DATE;else
  40                                 if(s=="size") iModeFullStyles = iModeFullStyles|BF_NODEPANEL_FULL_SIZE;else
  41                                 if(s=="type") iModeFullStyles = iModeFullStyles|BF_NODEPANEL_FULL_TYPE;else
  42                                 if(s=="sicon") iModeFullStyles = iModeFullStyles|BF_NODEPANEL_FULL_SICON;else
  43                                 if(s=="}") break;
  44                         }
  45                 }else
  46                 if(s=="cols_styles{"){
  47                         iModeColsStyles = 0;
  48                         while(B_OK==o_File.ReadString(&s)){
  49                                 if(s=="name") iModeColsStyles = iModeColsStyles|BF_NODEPANEL_COLS_NAME;else
  50                                 if(s=="sicon") iModeColsStyles = iModeColsStyles|BF_NODEPANEL_COLS_SICON;else
  51                                 if(s=="}") break;
  52                         }
  53                 }else           
  54                 {
  55                         o_File.VarUnpack(s,sName,sValue);
  56                         if(sName=="path") sPath = sValue;else
  57                         if(sName=="mode"){
  58                                 if(sValue == "full") iMode = BF_NODEPANEL_MODE_FULL;else
  59                                 if(sValue == "cols") iMode = BF_NODEPANEL_MODE_COLS;else
  60                                 {}
  61                         }else
  62                         {}
  63                         sName = "";
  64                 }
  65         }
  66 }
  67 
  68 void                                    
  69 BF_GUI_Setup_Vars_Panel::Clear()    /* [previous][next][first][last][top][bottom][index][help] */
  70 {
  71         iModeFullStyles = 0;
  72         iModeColsStyles = 0;
  73         iMode = 0;
  74         sPath = "";
  75 }
  76 
  77 BF_GUI_Setup_Vars::BF_GUI_Setup_Vars()
  78 {
  79         bLoaded = false;
  80 }
  81 
  82 status_t                                        
  83 BF_GUI_Setup_Vars::Load()    /* [previous][next][first][last][top][bottom][index][help] */
  84 {       
  85         bLoaded = false;
  86 
  87         BL_String       s,s1;
  88         s = BEFAR_SETTINGS_DIR;
  89         s<<VARS_FILE;
  90         
  91         BF_ConfigFile oFile(s.String(),B_READ_WRITE);
  92         status_t uRes = oFile.InitCheck();
  93         
  94         if(uRes!=B_OK)  return uRes;
  95         
  96         BL_String sName,sValue;
  97         
  98         while(B_OK==oFile.ReadString(&s)){
  99                 if(s=="left_panel{") oLPanel.Load(oFile);else
 100                 if(s=="right_panel{") oRPanel.Load(oFile);else
 101                 {
 102                         if(B_OK!=oFile.VarUnpack(s,sName,sValue)) continue;                             
 103                         if(sName=="win_x") oWinFrame.left = sValue.Float();else
 104                         if(sName=="win_y") oWinFrame.top = sValue.Float();else
 105                         if(sName=="win_x1") oWinFrame.right = sValue.Float();else
 106                         if(sName=="win_y1") oWinFrame.bottom = sValue.Float();else              
 107                         {}
 108                 }
 109         }       
 110         
 111         if(oLPanel.sPath=="" || oRPanel.sPath=="") return B_ERROR;
 112         
 113         bLoaded = true;
 114         return B_OK;
 115         
 116 }
 117 void                                    
 118 BF_GUI_Setup_Vars::SavePanel(BF_ConfigFile &o_File,const BF_GUI_Setup_Vars_Panel & o_Panel,bool b_LeftPanel)    /* [previous][next][first][last][top][bottom][index][help] */
 119 {
 120         o_File.WriteString(b_LeftPanel?"left_panel{":"right_panel{");   
 121         o_File.WriteVar("path",o_Panel.sPath.String());
 122         
 123         o_File.WriteString("full_styles{");     
 124         o_File.WriteStyle(o_Panel.iModeFullStyles,BF_NODEPANEL_FULL_NAME,"name");
 125         o_File.WriteStyle(o_Panel.iModeFullStyles,BF_NODEPANEL_FULL_DATE,"date");
 126         o_File.WriteStyle(o_Panel.iModeFullStyles,BF_NODEPANEL_FULL_SIZE,"size");
 127         o_File.WriteStyle(o_Panel.iModeFullStyles,BF_NODEPANEL_FULL_TYPE,"type");
 128         o_File.WriteStyle(o_Panel.iModeFullStyles,BF_NODEPANEL_FULL_SICON,"sicon");
 129         o_File.WriteString("}");
 130         
 131         o_File.WriteString("cols_styles{");     
 132         o_File.WriteStyle(o_Panel.iModeColsStyles,BF_NODEPANEL_COLS_NAME,"name");
 133         o_File.WriteStyle(o_Panel.iModeColsStyles,BF_NODEPANEL_COLS_SICON,"sicon");
 134         o_File.WriteString("}");
 135         
 136         if(o_Panel.iMode==BF_NODEPANEL_MODE_FULL) o_File.WriteVar("mode","full");else
 137         if(o_Panel.iMode==BF_NODEPANEL_MODE_COLS) o_File.WriteVar("mode","cols");
 138                 
 139         o_File.WriteString("}");        
 140 }
 141 
 142 void                                    
 143 BF_GUI_Setup_Vars::Save()    /* [previous][next][first][last][top][bottom][index][help] */
 144 {
 145         oLPanel.Clear();
 146         oRPanel.Clear();
 147  
 148         // fill vars//
 149         {
 150                 ASSERT(poWin);
 151                 oWinFrame = poWin->Frame();
 152                 // left panel //
 153                 BF_GUI_NodePanel *po = (BF_GUI_NodePanel*)poWinView->PanelByIndex(BF_PANEL_WINPOS_LEFT,0);              
 154                 if(po)  po->StoreVars(oLPanel);
 155                 // right panel //
 156                 po = (BF_GUI_NodePanel*)poWinView->PanelByIndex(BF_PANEL_WINPOS_RIGHT,0);               
 157                 if(po)  po->StoreVars(oRPanel);
 158         }
 159         //
 160         BL_String sFilePath(BEFAR_SETTINGS_DIR);
 161         sFilePath<<VARS_FILE;
 162         
 163         BF_ConfigFile oFile(sFilePath.String(),B_READ_WRITE|B_CREATE_FILE|B_ERASE_FILE);
 164         status_t uErr = oFile.InitCheck();
 165                 
 166         if(uErr!=B_OK){
 167                 BL_String s(BF_DictAt(BF_DICT_SETUP_ERR1)),s1;
 168                 BL_System_TranslError(uErr,s1);
 169                 s<<s1;
 170                 BF_Dialog_Alert_Sep(s1.String(),"",NULL,poWin->CurrentFocus());
 171                 return;
 172         }
 173                         
 174         oFile.WriteVar("win_x",oWinFrame.left);
 175         oFile.WriteVar("win_y",oWinFrame.top);
 176         oFile.WriteVar("win_x1",oWinFrame.right);
 177         oFile.WriteVar("win_y1",oWinFrame.bottom);
 178         
 179         // save styles //
 180         SavePanel(oFile,oLPanel,true);
 181         SavePanel(oFile,oRPanel,false);
 182 }
 183 
 184 
 185 
 186 //////////////////////////////////////////////////////////////////////////
 187 status_t                                
 188 BF_ConfigFile::WriteVar(const char *pc_Name,float f_Value)    /* [previous][next][first][last][top][bottom][index][help] */
 189 {
 190         BL_String s(pc_Name);
 191         s<<"=";
 192         s<<f_Value;
 193         return WriteString(s);          
 194 }
 195 
 196 status_t                                
 197 BF_ConfigFile::WriteVar(const char *pc_Name,const char *pc_Value)    /* [previous][next][first][last][top][bottom][index][help] */
 198 {
 199         BString s(pc_Name);
 200         s<<"=";
 201         s<<pc_Value;
 202         return WriteString(s);
 203 }
 204 
 205 status_t        
 206 BF_ConfigFile::VarUnpack(BL_String & s_Var,BL_String & s_Name,BL_String & s_Value)    /* [previous][next][first][last][top][bottom][index][help] */
 207 {
 208         int iPos = s_Var.FindFirst('=');
 209         if(iPos<=0) return B_ERROR;
 210         s_Var.CopyInto(s_Name,0,iPos);
 211         s_Var.CopyInto(s_Value,iPos+1,s_Var.Length()-iPos-1);
 212         return B_OK;
 213 }
 214 
 215 
 216 void                                    
 217 BF_GUI_Setup_Color::operator = (BF_GUI_Setup_Color & o_From)
 218 {
 219         rgb = o_From.rgb;
 220 }
 221 
 222 void                                    
 223 BF_GUI_Setup_Color::Save(BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 224 {
 225         BL_String s;
 226         s<<sCode;
 227         s<<"=";
 228         s<<(uint32)rgb.red;
 229         s<<",";
 230         s<<(uint32)rgb.green;
 231         s<<",";
 232         s<<(uint32)rgb.blue;
 233         o_File.WriteString(&s);
 234 }
 235 
 236 void                                    
 237 BF_GUI_Setup_Font::Set(const char *pc_Name,int i_Styles,int i_Flags,float f_Size)
 238 {
 239         sName = pc_Name;
 240         iStyles = i_Styles;
 241         iFlags = i_Flags;
 242         fSize = f_Size;
 243         MakeFont();
 244 }
 245 
 246 int
 247 BF_GUI_Setup_Font::StylesStrToInt(const char *pc_Styles)    /* [previous][next][first][last][top][bottom][index][help] */
 248 {
 249         ASSERT(pc_Styles);
 250         
 251         int iStyles=0;
 252                 
 253         if(strstr(pc_Styles,"Bold")!=NULL) iStyles = iStyles | B_BOLD_FACE;
 254         if(strstr(pc_Styles,"Regular")!=NULL) iStyles = iStyles | B_REGULAR_FACE;
 255         if(strstr(pc_Styles,"Italic")!=NULL) iStyles = iStyles | B_ITALIC_FACE;
 256         
 257         return iStyles;
 258 }
 259 
 260 void                                    
 261 BF_GUI_Setup_Font::MakeFont()    /* [previous][next][first][last][top][bottom][index][help] */
 262 {
 263         oFont.SetFamilyAndFace(sName.String(),iStyles); 
 264         // check font //
 265         {
 266                 font_family oFamily;
 267                 font_style      oStyle;
 268                 oFont.GetFamilyAndStyle(&oFamily,&oStyle);
 269                 if(sName!=oFamily) sName = oFamily;             
 270                 iStyles = StylesStrToInt(oStyle);
 271         }
 272         oFont.SetSize(fSize);
 273         oFont.SetFlags( iFlags );
 274         CalcVars();
 275 }
 276 
 277 void                                    
 278 BF_GUI_Setup_Font::CalcVars()    /* [previous][next][first][last][top][bottom][index][help] */
 279 {
 280         font_height     oFontHeight;
 281 
 282         oFont.GetHeight(&oFontHeight);
 283 
 284         fAscent = oFontHeight.ascent;
 285         fDescent = oFontHeight.descent;         
 286         fHeight = (float)(int)(oFontHeight.ascent + oFontHeight.descent);
 287         if(fHeight<(oFontHeight.ascent + oFontHeight.descent)) fHeight+=1.0;
 288 }
 289 
 290 void                                    
 291 BF_GUI_Setup_Font::operator = (BF_GUI_Setup_Font & o_From)
 292 {
 293         oFont = o_From.oFont;
 294         fSize  = o_From.fSize;
 295         iStyles  = o_From.iStyles;
 296         iFlags = o_From.iFlags;
 297         sName = o_From.sName;
 298         
 299         fHeight = o_From.fHeight;
 300         fAscent = o_From.fAscent;
 301         fDescent = o_From.fDescent;
 302 }
 303 
 304 void                                    
 305 BF_GUI_Setup_Font::Load(BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 306 {
 307         BL_String       s,sVarName,sVarValue;           
 308         iStyles = 0;
 309         iFlags = 0;
 310         while(B_OK==o_File.ReadString(&s)){             
 311                 if(s=="}") break;
 312                 if(B_OK!=o_File.VarUnpack(s,sVarName,sVarValue)) break;
 313                 //
 314                 if(sVarName=="name"){
 315                         sName = sVarValue;      
 316                 }else
 317                 if(sVarName=="size"){
 318                         fSize = sVarValue.Float();                      
 319                 }else
 320                 if(sVarName=="style"){
 321                         if(sVarValue=="bold") iStyles = iStyles | B_BOLD_FACE;else
 322                         if(sVarValue=="regular") iStyles = iStyles | B_REGULAR_FACE;else
 323                         if(sVarValue=="italic") iStyles = iStyles | B_ITALIC_FACE;else
 324                         {}
 325                 }else
 326                 if(sVarName=="flag"){
 327                         if(sVarValue=="force_antialising")      iFlags =  iFlags | B_FORCE_ANTIALIASING;else
 328                         if(sVarValue=="disable_antialising") iFlags =  iFlags | B_DISABLE_ANTIALIASING;else
 329                         {}
 330                 }else
 331                 {}
 332         }
 333         // post_settings 
 334         if( !(iFlags & B_FORCE_ANTIALIASING) && !(iFlags & B_DISABLE_ANTIALIASING)) iFlags =  iFlags | B_FORCE_ANTIALIASING;
 335         MakeFont();
 336 }
 337 
 338 void                                    
 339 BF_GUI_Setup_Font::Save(const char *pc_Type,BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 340 {
 341         o_File.WriteChar("font{");
 342         o_File.WriteChar(pc_Type);
 343         
 344         BL_String s;    
 345         s="name=";
 346         s<<sName;
 347         o_File.WriteString(&s);
 348         s="size=";
 349         s<<fSize;
 350         o_File.WriteString(&s);
 351         
 352         printf("iStyles=%i\n",iStyles);
 353         if(iStyles & B_BOLD_FACE) o_File.WriteChar("style=bold");
 354         if(iStyles & B_REGULAR_FACE) o_File.WriteChar("style=regular");
 355         if(iStyles & B_ITALIC_FACE) o_File.WriteChar("style=italic");                   
 356         
 357         if(iFlags & B_FORCE_ANTIALIASING) o_File.WriteChar("flag=force_antialising");
 358         if(iFlags & B_DISABLE_ANTIALIASING) o_File.WriteChar("flag=disable_antialising");
 359         
 360         
 361         o_File.WriteChar("}");
 362 }
 363 
 364 BF_GUI_Setup::BF_GUI_Setup()
 365 {
 366         InitDefault();  
 367         if(!poSysSetup) poSysSetup = this;
 368 }
 369 
 370 void                                    
 371 BF_GUI_Setup::InitDefault()    /* [previous][next][first][last][top][bottom][index][help] */
 372 {
 373         iCmdLineHistorySize = 20;
 374         
 375         sDictFile = "BeFar_Dict_Eng.dict";
 376         
 377         /* path */
 378         oPathSysTrash.SetTo("/boot/home/Desktop/Trash");
 379         /* vars */
 380         iPathHistorySize = 100; 
 381         iFPanelFullStyle = 0;
 382         iFPanelFullStyle = iFPanelFullStyle | BF_SETUP_FPANELMODE_FULL_DRAWLINES;
 383         iFPanelColsStyle = 0;
 384         iFPanelColsStyle = iFPanelColsStyle | BF_SETUP_FPANELMODE_COLS_DRAWLINES;
 385         iMainStyle = 0;
 386         iMainStyle = iMainStyle | BF_SETUP_MAIN_RETURN_REMEMBER;
 387         iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_DELETE;
 388         iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSICON;
 389         iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSPEC;     
 390         iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSTACK;    
 391         iMainStyle = iMainStyle | BF_SETUP_MAIN_FP_HEADERICON;
 392         iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_EXIT;
 393         iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_COPY;
 394         iMainStyle = iMainStyle | BF_SETUP_NODEPANEL_DESELECT_AFTER_COPY;
 395         iMainStyle = iMainStyle | BF_SETUP_NODEPANEL_DESELECT_AFTER_MOVE;       
 396         iMainStyle = iMainStyle | BF_SETUP_OPERROSTER_DEFDIALOG;
 397         iMainStyle = iMainStyle | BF_SETUP_CMDLINE_SHOWPATH;
 398         iMainStyle = iMainStyle | BF_SETUP_FILESPANEL_TRACKERADDONS_SHOWICONS;
 399         iMainStyle = iMainStyle | BF_SETUP_SEARCH_SETUP_VOLICONS;
 400         iMainStyle = iMainStyle | BF_SETUP_AUTOSAVE;
 401                 
 402         
 403         /* colors */
 404         SetColor(BF_COLOR_BACK,BF_DICT_SETUPCOLOR_PANELBACK,"back",0,0,200);
 405         SetColor(BF_COLOR_FRAME,BF_DICT_SETUPCOLOR_PANELFRAME,"frame",82,255,255);
 406         SetColor(BF_COLOR_NODE,BF_DICT_SETUPCOLOR_PANELNODE,"node",82,255,255);
 407         SetColor(BF_COLOR_NODE_LINK,BF_DICT_SETUPCOLOR_PANELNODELINK,"node_link",255,200,200);  
 408         SetColor(BF_COLOR_NODE_DIR,BF_DICT_SETUPCOLOR_PANELNODEDIR,"node_dir",255,255,255);
 409         SetColor(BF_COLOR_NODE_DIR_LINK,BF_DICT_SETUPCOLOR_PANELNODEDIRLINK,"node_dir_link",255,200,200);
 410         SetColor(BF_COLOR_PANEL_INFO_TEXT,BF_DICT_SETUPCOLOR_PANELINFOTEXT,"panel_info_text",82,255,255);               
 411         SetColor(BF_COLOR_CURSOR_BACK,BF_DICT_SETUPCOLOR_PANELCURSORBACK,"cursor_back",0,170,189);
 412         SetColor(BF_COLOR_CURSOR_TEXT,BF_DICT_SETUPCOLOR_PANELCURSORTEXT,"cursor_text",0,0,0);    
 413         SetColor(BF_COLOR_HEADER_TEXT,BF_DICT_SETUPCOLOR_PANELHEADERSTEXT,"header_text",0,170,189);
 414         SetColor(BF_COLOR_PATH_FOCUSTEXT,BF_DICT_SETUPCOLOR_PANELFOCUSPATHTEXT,"focuspath_text",0,0,0);
 415         SetColor(BF_COLOR_PATH_FOCUSBACK,BF_DICT_SETUPCOLOR_PANELFOCUSPATHBACK,"focuspath_back",0,170,189);
 416         SetColor(BF_COLOR_PATH_TEXT,BF_DICT_SETUPCOLOR_PANELPATHTEXT,"path_text",82,255,255);
 417         SetColor(BF_COLOR_PATH_BACK,BF_DICT_SETUPCOLOR_PANELPATHBACK,"path_back",0,0,200);
 418         SetColor(BF_COLOR_NODE_SELECT,BF_DICT_SETUPCOLOR_PANELNODESELECTING,"node_select",255,255,0);
 419         SetColor(BF_COLOR_NODE_FOCUSSELECT,BF_DICT_SETUPCOLOR_PANELNODEFOCUSSELECTING,"node_focusselect",255,255,0);
 420         
 421         SetColor(BF_COLOR_DIALOG_VIEWBORDER_FOCUSED,BF_DICT_SETUPCOLOR_DIALOGFOCUSEDBORDER,"viewwborder_focused",200,0,0);
 422         SetColor(BF_COLOR_DIALOG_VIEWBORDER_UNFOCUSED,BF_DICT_SETUPCOLOR_DIALOGUNFOCUSEDBAR,"viewwborder_unfocused",0,0,0);
 423                 
 424         SetColor(BF_COLOR_DIALOG_BACK,BF_DICT_SETUPCOLOR_DIALOGBACK,"dialog_back",170,170,170);
 425         SetColor(BF_COLOR_DIALOG_TEXT,BF_DICT_SETUPCOLOR_DIALOGTEXT,"dialog_text",0,0,0);
 426         SetColor(BF_COLOR_DIALOG_MENU_ITEMSELECTED,BF_DICT_SETUPCOLOR_DIALOGMENU,"dialog_menu_itemselected",0,255,0);
 427         SetColor(BF_COLOR_DIALOG_EDIT_TEXT,BF_DICT_SETUPCOLOR_DIALOGEDITTEXT,"dialog_edit_text",0,0,0);
 428         SetColor(BF_COLOR_DIALOG_EDIT_BACK,BF_DICT_SETUPCOLOR_DIALOGEDITBACK,"dialog_edit_back",0,170,189);
 429         SetColor(BF_COLOR_DIALOG_BUTTON_FOCUS,BF_DICT_SETUPCOLOR_DIALOGBUTTONFOCUS,"dialog_button_focus",0,170,189);
 430         SetColor(BF_COLOR_DIALOG_BUTTON_TEXT,BF_DICT_SETUPCOLOR_DIALOGBUTTONTEXT,"dialog_button_text",0,0,0);
 431         SetColor(BF_COLOR_DIALOG_PROGRESS_EMPTY,BF_DICT_SETUPCOLOR_DIALOGPROGRESSBARE,"dialog_progress_empty",150,150,150);             
 432         SetColor(BF_COLOR_DIALOG_PROGRESS_FILLED,BF_DICT_SETUPCOLOR_DIALOGPROGRESSBARF,"dialog_progress_filled",100,100,100);                   
 433         
 434         SetColor(BF_COLOR_RED,BF_DICT_SETUPCOLOR_DIALOGRED,"red_color",255,0,0);
 435         
 436         SetColor(BF_COLOR_CMDLINE_BACK,BF_DICT_SETUPCOLOR_COMMANDLINE_BACK,"cmdline_back",0,0,0);
 437         SetColor(BF_COLOR_CMDLINE_TEXT,BF_DICT_SETUPCOLOR_COMMANDLINE_TEXT,"cmdline_text",82,255,255);
 438         
 439         SetColor(BF_COLOR_TEXTVIEWER_STATUS_TEXT,BF_DICT_SETUPCOLOR_TEXTVIEWER1,"textviewer_statusbar_text",0,0,0);
 440         SetColor(BF_COLOR_TEXTVIEWER_STATUS_BACK,BF_DICT_SETUPCOLOR_TEXTVIEWER2,"textviewer_statusbar_back",0,170,189);         
 441         SetColor(BF_COLOR_TEXTVIEWER_TEXT,BF_DICT_SETUPCOLOR_TEXTVIEWER3,"textviewer_text",255,255,255);        
 442         SetColor(BF_COLOR_TEXTVIEWER_BACK,BF_DICT_SETUPCOLOR_TEXTVIEWER4,"textviewer_back",0,0,200);    
 443         
 444         /* fonts */
 445         {
 446                 oFontNode.Set("Tahoma",B_REGULAR_FACE,B_FORCE_ANTIALIASING,11.0);
 447                 oFontMono.Set("Courier New",B_REGULAR_FACE,B_FORCE_ANTIALIASING,11.0);          
 448                 oFontToolView = oFontNode;              
 449                 oFontCMDLine  = oFontNode;
 450         }
 451         /* finish init */
 452 }
 453 
 454 void                                    
 455 BF_GUI_Setup::SetColor(int i_Index,int32 i_DictCode,const char *pc_Code,uint8 i_R,uint8 i_G,uint8 i_B,uint8 i_A)    /* [previous][next][first][last][top][bottom][index][help] */
 456 {       
 457         RGBA_SET(aoColor[i_Index].rgb,i_R,i_G,i_B,i_A);
 458         aoColor[i_Index].iDictCode = i_DictCode;
 459         aoColor[i_Index].sCode = pc_Code;
 460 }
 461 
 462 uint32                                  
 463 BF_GUI_Setup::MainStyle()    /* [previous][next][first][last][top][bottom][index][help] */
 464 {       return iMainStyle; }
 465 
 466 uint32                                  
 467 BF_GUI_Setup::FPanelFullStyle()    /* [previous][next][first][last][top][bottom][index][help] */
 468 { return iFPanelFullStyle;}
 469 uint32
 470 BF_GUI_Setup::FPanelColsStyle()    /* [previous][next][first][last][top][bottom][index][help] */
 471 { return iFPanelColsStyle;}
 472 
 473 void
 474 BF_GUI_Setup::SetMainStyle(uint32 i_Style)    /* [previous][next][first][last][top][bottom][index][help] */
 475 {
 476         iMainStyle = i_Style;
 477 }
 478 
 479 void                                    
 480 BF_GUI_Setup::UpdateFrom(BF_GUI_Setup & o_Src)    /* [previous][next][first][last][top][bottom][index][help] */
 481 {
 482         o_Src.CopyTo(*this);
 483 }
 484 
 485 void                                    
 486 BF_GUI_Setup::CopyTo(BF_GUI_Setup & o_Res)    /* [previous][next][first][last][top][bottom][index][help] */
 487 {
 488         // copy styles
 489         o_Res.iFPanelFullStyle = iFPanelFullStyle;
 490         o_Res.iFPanelColsStyle = iFPanelColsStyle;
 491         o_Res.iMainStyle = iMainStyle;
 492         // copy colors
 493         for(int iCol=0;iCol<BF_COLOR_END;iCol++){
 494                 o_Res.aoColor[iCol] = aoColor[iCol];
 495         }
 496         // copy trash_path
 497         o_Res.oPathSysTrash = oPathSysTrash;
 498         // copy fonts
 499         o_Res.oFontNode = oFontNode;
 500         o_Res.oFontToolView = oFontToolView;
 501         o_Res.oFontMono = oFontMono;
 502         o_Res.oFontCMDLine = oFontCMDLine;
 503         // copy others
 504         o_Res.iPathHistorySize = iPathHistorySize;
 505 }
 506 
 507 BF_ConfigFile::BF_ConfigFile(const char *pc_Path, uint32 i_OpenMode)
 508 :BL_File(pc_Path,i_OpenMode)
 509 {}
 510 
 511 status_t
 512 BF_ConfigFile::WriteStyle(uint32 i_Styles,uint32 i_Style,const char *pc_Text)    /* [previous][next][first][last][top][bottom][index][help] */
 513 {
 514         if(!(i_Styles & i_Style))  return B_OK;
 515         return WriteChar(pc_Text);      
 516 }
 517 
 518 bool                                    
 519 BF_ConfigFile::IsLineVar(const char *pc_VarName)    /* [previous][next][first][last][top][bottom][index][help] */
 520 {
 521         ASSERT(pc_VarName);
 522         return sLine.FindFirst(pc_VarName)==0;
 523 }
 524 
 525 status_t                                
 526 BF_ConfigFile::ReadLine()    /* [previous][next][first][last][top][bottom][index][help] */
 527 {
 528         return ReadString(&sLine);
 529 }
 530 
 531 bool                                    
 532 BF_ConfigFile::VarTo(BL_String & s_Var)    /* [previous][next][first][last][top][bottom][index][help] */
 533 {
 534         int i=sLine.FindFirst("=");
 535         if(i<0) return false;
 536         sLine.CopyInto(s_Var,i+1,sLine.Length()-i);
 537         return true;
 538 }
 539 
 540 status_t                                
 541 BF_ConfigFile::ReadColor(BF_GUI_Setup_Color &o_Color)    /* [previous][next][first][last][top][bottom][index][help] */
 542 {
 543         BL_String s,s1;
 544         status_t uRes = ReadString(&s);
 545         if(B_OK!=uRes) return uRes;
 546         if(s=="}") return B_ERROR;
 547         
 548         // code
 549         int i=s.FindFirst("=");
 550         if(i<0) return B_ERROR;
 551         s.CopyInto(o_Color.sCode,0,i);
 552         i++;
 553         
 554         // red
 555         int i1=s.FindFirst(",",i);
 556         if(i1<0) return B_ERROR;
 557         s.CopyInto(s1,i,i1-i);
 558         o_Color.rgb.red=s1.Int32();
 559         i = i1+1;
 560                 
 561         // green
 562         i1=s.FindFirst(",",i);
 563         if(i1<0) return B_ERROR;
 564         s.CopyInto(s1,i,i1-i);
 565         o_Color.rgb.green=s1.Int32();
 566         i = i1+1;
 567         
 568         // blue 
 569         if(i1<0) return B_ERROR;
 570         s.CopyInto(s1,i,s.Length()-i);
 571         o_Color.rgb.blue=s1.Int32();
 572         
 573         return B_OK;
 574 }
 575 
 576 void
 577 BF_GUI_Setup::Save_Colors(BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 578 {
 579         o_File.WriteChar("colors{");
 580         for(int iColor=0;iColor<BF_COLOR_END;iColor++){
 581                 aoColor[iColor].Save(o_File);
 582         }
 583         o_File.WriteChar("}");
 584 }
 585 
 586 void
 587 BF_GUI_Setup::Save_Fonts(BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 588 {
 589         oFontNode.Save("node",o_File);
 590         oFontToolView.Save("tool",o_File);
 591         oFontMono.Save("mono",o_File);
 592         oFontCMDLine.Save("cmdline",o_File);            
 593 }
 594 
 595 void
 596 BF_GUI_Setup::Load(bool b_ShowErrors)    /* [previous][next][first][last][top][bottom][index][help] */
 597 {       
 598         BL_String s,s1; 
 599         // load main setup
 600         
 601         s="";
 602         s<<BEFAR_SETTINGS_DIR;
 603         s<<"main.settings";
 604         
 605         BF_ConfigFile oFile(s.String(),B_READ_ONLY);
 606         status_t uErr = oFile.InitCheck();
 607                 
 608         if(B_OK==uErr){ 
 609                 while(B_OK==oFile.ReadLine()){                                          
 610                         // load setup_version //
 611                         if(oFile.IsLineVar("settings_version")) continue;else
 612                         // load dict_file_name //
 613                         if(oFile.IsLineVar("dict_file=")){
 614                                 oFile.VarTo(sDictFile);
 615                         }else
 616                         // load setup //                
 617                         if(oFile.IsLineVar("main_style")){
 618                                 iMainStyle=0;
 619                                 while(B_OK==oFile.ReadLine() && oFile.sLine!="}"){
 620                                         s = oFile.sLine;
 621                                         if(s=="RETURN_REMEMBER") iMainStyle = iMainStyle | BF_SETUP_MAIN_RETURN_REMEMBER;else
 622                                         if(s=="ASK_DELETE") iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_DELETE;else
 623                                         if(s=="ASK_COPY") iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_COPY;else                         
 624                                         if(s=="ASK_EXIT") iMainStyle = iMainStyle | BF_SETUP_MAIN_ASK_EXIT;else
 625                                         if(s=="SELECTVOL_SHOWSICON") iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSICON;else
 626                                         if(s=="SELECTVOL_SHOWSPEC") iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSPEC;else     
 627                                         if(s=="SELECTVOL_SHOWSTACK") iMainStyle = iMainStyle | BF_SETUP_MAIN_SELECTVOL_SHOWSTACK;else   
 628                                         if(s=="FP_HEADERICON") iMainStyle = iMainStyle | BF_SETUP_MAIN_FP_HEADERICON;else       
 629                                         if(s=="NODEPANEL_DESELECT_AFTER_COPY") iMainStyle = iMainStyle | BF_SETUP_NODEPANEL_DESELECT_AFTER_COPY;else    
 630                                         if(s=="NODEPANEL_DESELECT_AFTER_MOVE") iMainStyle = iMainStyle | BF_SETUP_NODEPANEL_DESELECT_AFTER_MOVE;else    
 631                                         if(s=="NODEPANEL_USE_BACKSPACE") iMainStyle = iMainStyle | BF_SETUP_NODEPANEL_USE_BACKSPACE;else                                        
 632                                         if(s=="OPERROSTER_DEFDIALOG")           iMainStyle = iMainStyle | BF_SETUP_OPERROSTER_DEFDIALOG;else    
 633                                         if(s=="CMDLINE_SHOWPATH")       iMainStyle = iMainStyle | BF_SETUP_CMDLINE_SHOWPATH;else        
 634                                         if(s=="FILESPANEL_TRACKERADDONS_SHOWICONS")     iMainStyle = iMainStyle | BF_SETUP_FILESPANEL_TRACKERADDONS_SHOWICONS;else
 635                                         if(s=="SETUP_SEARCH_SETUP_VOLICONS")    iMainStyle = iMainStyle | BF_SETUP_SEARCH_SETUP_VOLICONS;else
 636                                         if(s=="SETUP_AUTOSAVE") iMainStyle = iMainStyle | BF_SETUP_AUTOSAVE;    else
 637                                         
 638                                         if(s=="SETUP_DEB_NOMONITORING") iMainStyle = iMainStyle | BF_SETUP_DEB_NOMONITORING;    else
 639                                         if(s=="BF_SETUP_DEB_NOSORTING") iMainStyle = iMainStyle | BF_SETUP_DEB_NOSORTING;               else
 640                                         {}
 641                                 }
 642                         }else
 643                         // load colors
 644                         if(oFile.IsLineVar("colors{")){
 645                                 LoadColors(oFile);
 646                         }else
 647                         // load fonts 
 648                         if(oFile.IsLineVar("font{")){
 649                                 if(B_OK!=oFile.ReadString(&s)) break;
 650                                 if(s=="node")   oFontNode.Load(oFile);else
 651                                 if(s=="tool")   oFontToolView.Load(oFile);else
 652                                 if(s=="mono")   oFontMono.Load(oFile);else
 653                                 if(s=="cmdline")oFontCMDLine.Load(oFile);else
 654                                 {}
 655                         }else
 656                         {}
 657                 }       
 658         }
 659         
 660         // load vars //
 661         oVars.Load();
 662 }
 663 
 664 void
 665 BF_GUI_Setup::Save()    /* [previous][next][first][last][top][bottom][index][help] */
 666 {
 667         if(B_OK!=BF_Roster_MakeDir(BEFAR_SETTINGS_DIR)){
 668                 BF_Dialog_Alert_Sep(BF_DictAt(BF_DICT_SETUP_ERR2),"",NULL,poWin->CurrentFocus());
 669                 return; 
 670         }
 671         /* create  file */
 672         BL_String       s,s1;
 673         status_t        uErr;           
 674         s = BEFAR_SETTINGS_DIR;
 675         s<<"main.settings";
 676         
 677         BF_ConfigFile oFile(s.String(),B_READ_WRITE|B_CREATE_FILE|B_ERASE_FILE);
 678         uErr = oFile.InitCheck();
 679                 
 680         if(uErr!=B_OK){
 681                 s = BF_DictAt( BF_DICT_SETUP_ERR2 );
 682                 BL_System_TranslError(uErr,s1);
 683                 s<<s1;
 684                 BF_Dialog_Alert_Sep(s1.String(),"",NULL,poWin->CurrentFocus());
 685                 return;
 686         }
 687         // save setup_version //
 688         oFile.WriteChar("settings_version=1");
 689         // set current dictionary_name //
 690         oFile.WriteVar("dict_file",sDictFile.String()); 
 691         
 692         /* save styles */
 693         oFile.WriteChar("main_style{");
 694         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_RETURN_REMEMBER,"RETURN_REMEMBER");
 695         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_ASK_DELETE,"ASK_DELETE");
 696         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_ASK_EXIT,"ASK_EXIT");
 697         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_ASK_COPY,"ASK_COPY");
 698         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_SELECTVOL_SHOWSICON,"SELECTVOL_SHOWSICON");
 699         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_SELECTVOL_SHOWSPEC,"SELECTVOL_SHOWSPEC");
 700         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_SELECTVOL_SHOWSTACK,"SELECTVOL_SHOWSTACK");
 701         oFile.WriteStyle(iMainStyle,BF_SETUP_MAIN_FP_HEADERICON,"FP_HEADERICON");
 702         oFile.WriteStyle(iMainStyle,BF_SETUP_NODEPANEL_DESELECT_AFTER_COPY,"NODEPANEL_DESELECT_AFTER_COPY");                    
 703         oFile.WriteStyle(iMainStyle,BF_SETUP_NODEPANEL_DESELECT_AFTER_MOVE,"NODEPANEL_DESELECT_AFTER_MOVE");
 704         oFile.WriteStyle(iMainStyle,BF_SETUP_NODEPANEL_USE_BACKSPACE,"NODEPANEL_USE_BACKSPACE");        
 705         oFile.WriteStyle(iMainStyle,BF_SETUP_OPERROSTER_DEFDIALOG,"OPERROSTER_DEFDIALOG");
 706         oFile.WriteStyle(iMainStyle,BF_SETUP_CMDLINE_SHOWPATH,"CMDLINE_SHOWPATH");      
 707         oFile.WriteStyle(iMainStyle,BF_SETUP_FILESPANEL_TRACKERADDONS_SHOWICONS,"FILESPANEL_TRACKERADDONS_SHOWICONS");          
 708         oFile.WriteStyle(iMainStyle,BF_SETUP_SEARCH_SETUP_VOLICONS,"SETUP_SEARCH_SETUP_VOLICONS");                      
 709         oFile.WriteStyle(iMainStyle,BF_SETUP_AUTOSAVE,"SETUP_AUTOSAVE");                        
 710         
 711         oFile.WriteStyle(iMainStyle,BF_SETUP_DEB_NOMONITORING,"SETUP_DEB_NOMONITORING");                        
 712         oFile.WriteStyle(iMainStyle,BF_SETUP_DEB_NOSORTING,"SETUP_DEB_NOSORTING");                              
 713         
 714         oFile.WriteChar("}");
 715         /* save colors */
 716         Save_Colors(oFile);
 717         /* save fonsts */
 718         Save_Fonts(oFile);
 719         /* save vars */
 720         oVars.Save();
 721 }
 722 
 723 
 724 void
 725 BF_GUI_Setup::LoadPalete(const char *pc_FileName)    /* [previous][next][first][last][top][bottom][index][help] */
 726 {
 727         ASSERT(pc_FileName);
 728         //
 729         BL_String       s,s1;
 730         s = BEFAR_SETTINGS_DIR;
 731         s<<"paletes/";
 732         s<<pc_FileName;
 733         
 734         BF_ConfigFile oFile(s.String(),B_READ_WRITE);
 735         status_t uErr = oFile.InitCheck();
 736         
 737         if(uErr!=B_OK){
 738                 s = BF_DictAt(BF_DICT_SETUP_ERR4);
 739                 BL_System_TranslError(uErr,s1);
 740                 s<<s1;
 741                 BF_Dialog_Alert_Sep(s1.String(),"",NULL,poWin->CurrentFocus());
 742                 return;
 743         }                                                       
 744         //
 745         oFile.ReadString(&s);
 746         if(s!="colors{") return;        
 747         //      
 748         LoadColors(oFile);
 749         //
 750 }
 751 
 752 void
 753 BF_GUI_Setup::LoadColors(BF_ConfigFile & o_File)    /* [previous][next][first][last][top][bottom][index][help] */
 754 {
 755         BF_GUI_Setup_Color oCol;
 756         while(B_OK==o_File.ReadColor(oCol)){            
 757                 SetColorByCode(oCol);
 758         }
 759 }
 760 
 761 int32   
 762 BF_GUI_Setup::ColorIndexByCode(const char *pc_Code)    /* [previous][next][first][last][top][bottom][index][help] */
 763 {
 764         ASSERT(pc_Code);
 765         for(int iCol=0;iCol<BF_COLOR_END;iCol++){
 766                 if(aoColor[iCol].sCode==pc_Code) return iCol;
 767         }
 768         return -1;
 769 }
 770 
 771 void
 772 BF_GUI_Setup::SetColorByCode(BF_GUI_Setup_Color & o_ColFrom)    /* [previous][next][first][last][top][bottom][index][help] */
 773 {
 774         int32 iColIndex = ColorIndexByCode(o_ColFrom.sCode.String());
 775         if(iColIndex<0) return;
 776         aoColor[iColIndex] = o_ColFrom;
 777         
 778 }
 779 
 780 void
 781 BF_GUI_Setup::SavePalete(const char *pc_FileName)    /* [previous][next][first][last][top][bottom][index][help] */
 782 {
 783         // yes, save now //
 784         BL_String       s,s1;
 785         s = BEFAR_SETTINGS_DIR;
 786         s<<"paletes";
 787         if(B_OK!=BF_Roster_MakeDir(s.String())){
 788                 BF_Dialog_Alert_Sep(BF_DictAt(BF_DICT_SETUP_ERR2),"",NULL,poWin->CurrentFocus());
 789                 return; 
 790         }
 791         /* create  file */              
 792         status_t        uErr;                   
 793         s<<"/";
 794         s<<pc_FileName;
 795         
 796         BF_ConfigFile oFile(s.String(),B_READ_WRITE|B_CREATE_FILE|B_ERASE_FILE);
 797         uErr = oFile.InitCheck();
 798                         
 799         if(uErr!=B_OK){
 800                 s = BF_DictAt(BF_DICT_SETUP_ERR5);
 801                 BL_System_TranslError(uErr,s1);
 802                 s<<s1;
 803                 BF_Dialog_Alert_Sep(s1.String(),"",NULL,poWin->CurrentFocus());
 804                 return;
 805         }                       
 806 
 807         Save_Colors(oFile);             

/* [previous][next][first][last][top][bottom][index][help] */