Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » MultiEdit 2008 | Multi-Edit | MEW | mobile

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
macro_file fAttrs;
// управление атрибутами файла в текущем окне
// без параметров выводит диалог
// с параметрами молча делает заказанное
// есть подсказка
 
// 2015.09.24, nvv, finished
// 2015.09.08, nvv, started
 
#include Dialog.sh                                              // header file that contains the def for DlgExecute
#include StdDlgs.sh
 
#define nMacroName          "fAttrs"
#define nCheckRob_Ctrl      1001
#define nCheckHid_Ctrl      1002
#define nCheckSys_Ctrl      1003
#define nCheckArc_Ctrl      1004
#define nBtn_Ok_Ctrl        1061                                // кнопка "старт" (пуск)
#define nBtn_About_Ctrl     1062                                // микро подсказка "о макросе"
     
void fAttrs {
  int fAtr = Cur_File_Attr;                                     // Attributes:
  int nAtr = fAtr;
  int fRon = fAtr & 0x01;                                       // 0x01 ReadOnly
  int fHid = fAtr & 0x02;                                       // 0x02 Hidden
  int fSys = fAtr & 0x04;                                       // 0x04 System
  int fArc = fAtr & 0x20;                                       // 0x20 Archive
  int fDir = fAtr & 0x10;                                       // 0x10 Directory
  int fVol = fAtr & 0x08;                                       // 0x08 Volume ID
  int sDlg;
  str Parm = caps( mparm_str );
  char nSet;
 
  if ( fVol ) {
    MsgDlg("!Note - it's a VOLUME\\n"
        + "NO attributes to change with."
        , nMacroName + ': Note!', "", 1 );
    return();
  }  
  if ( fDir ) {
    if ( id_std_Yes != VerifyDlg
        ( "? It's a DIRECTORY\\n"
        + "Do you want to change its attributes?"
        , nMacroName + ': CONFIRM', '', id_std_Yes, 0 ) ) {
      return();
    }
  }
  if ( svl( Parm ) ) {                                          // заказаны явные дейстия, отработаем...
    int nRon = xpos( "R", Parm, 1 );                            // 0x01 Read Only
    int nHid = xpos( "H", Parm, 1 );                            // 0x02 Hidden
    int nSys = xpos( "S", Parm, 1 );                            // 0x04 System file
    int nArc = xpos( "A", Parm, 1 );                            // 0x20 Archive
 
//  int fRon = fAtr & 0x01;                                       // 0x01 Read Only  
    if ( nRon ) {
      if ( str_char( Parm, nRon + 1 ) == "+" ) {
        nAtr |= 0x01;                                           // установим этот атрибут
        Parm = str_ins( " ", str_del( Parm, nRon + 1, 1 ), nRon + 1 );
      } else if ( str_char( Parm, nRon + 1 ) == "-" ) {
        nAtr &= ( 0xFF ^ 0x01 );                                // скинем этот атрибут
        Parm = str_ins( " ", str_del( Parm, nRon + 1, 1 ), nRon + 1 );
      } else {
        nAtr ^= 0x01;                                           // обратим этот атрибут
      }    
      Parm = str_ins( " ", str_del( Parm, nRon, 1 ), nRon );    // уберём из строки параметров учтённое
    }  
//  int fHid = fAtr & 0x02;                                       // 0x02 Hidden  
    if ( nHid ) {
      if ( str_char( Parm, nHid + 1 ) == "+" ) {
        nAtr |= 0x02;
        Parm = str_ins( " ", str_del( Parm, nHid + 1, 1 ), nHid + 1 );
      } else if ( str_char( Parm, nHid + 1 ) == "-" ) {
        nAtr &= ( 0xFF ^ 0x02 );
        Parm = str_ins( " ", str_del( Parm, nHid + 1, 1 ), nHid + 1 );
      } else {
        nAtr ^= 0x02;
      }    
      Parm = str_ins( " ", str_del( Parm, nHid, 1 ), nHid );
    }  
//  int fSys = fAtr & 0x04;                                       // 0x04 System file  
    if ( nSys ) {
      if ( str_char( Parm, nSys + 1 ) == "+" ) {
        nAtr |= 0x04;
        Parm = str_ins( " ", str_del( Parm, nSys + 1, 1 ), nSys + 1 );
      } else if ( str_char( Parm, nSys + 1 ) == "-" ) {
        nAtr &= ( 0xFF ^ 0x04 );
        Parm = str_ins( " ", str_del( Parm, nSys + 1, 1 ), nSys + 1 );
      } else {
        nAtr ^= 0x04;
      }    
      Parm = str_ins( " ", str_del( Parm, nSys, 1 ), nSys );
    }  
//  int fArc = fAtr & 0x20;                                       // 0x20 Archive  
    if ( nArc ) {
      if ( str_char( Parm, nArc + 1 ) == "+" ) {
        nAtr |= 0x20;
        Parm = str_ins( " ", str_del( Parm, nArc + 1, 1 ), nArc + 1 );
      } else if ( str_char( Parm, nArc + 1 ) == "-" ) {
        nAtr &= ( 0xFF ^ 0x20 );
        Parm = str_ins( " ", str_del( Parm, nArc + 1, 1 ), nArc + 1 );
      } else {
        nAtr ^= 0x20;
      }    
      Parm = str_ins( " ", str_del( Parm, nArc, 1 ), nArc );
    }  
    if ( remove_space( Parm ) == "" ) {
      Cur_File_Attr = nAtr;                                     // сожмём то, что осталось. Пусто - Ок
    } else {                                                    // НЕ пусто - товарищь НЕ понимает...
      RM( "fAttrs_About" );                                     // ! в параметрах вызова есть лишнее-с
    }  
     
  } else {  
    DlgCreate( sDlg );
 
    DlgAddCtrl( sDlg, Dlg_Checkbox, "Read Only  ", 1, 1, 30, 1, nCheckRob_Ctrl, 0, "" );
    DlgAddCtrl( sDlg, Dlg_Checkbox, "Hidden     ", 1, 2, 30, 1, nCheckHid_Ctrl, 0, "" );
    DlgAddCtrl( sDlg, Dlg_Checkbox, "System file", 1, 3, 30, 1, nCheckSys_Ctrl, 0, "" );
    DlgAddCtrl( sDlg, Dlg_Checkbox, "Archive    ", 1, 4, 30, 1, nCheckArc_Ctrl, 0, "" );
    DlgAddCtrl( sDlg, Dlg_PushButton, "OK",        5, 5,  9, 1, nBtn_Ok_Ctrl, dlgf_DefButton, "" );
    DlgAddCtrl( sDlg, Dlg_PushButton, "&?", Dlg_PosOffset + 12, Dlg_PosOffset, 9, dlg_Units | 11
      , nBtn_About_Ctrl, 0, "/M=fAttrs_About" );
 
    DlgSetInt ( sDlg, nCheckRob_Ctrl, fRon  );                  // так было...
    DlgSetInt ( sDlg, nCheckHid_Ctrl, fHid  );
    DlgSetInt ( sDlg, nCheckSys_Ctrl, fSys  );
    DlgSetInt ( sDlg, nCheckArc_Ctrl, fArc  );
 
    if ( Return_Int = DlgExecute( sDlg, nCheckRob_Ctrl, "Attributes to reset", "", "", 0 ) ) {  // спросим...
       
      fRon =   DlgGetInt ( sDlg, nCheckRob_Ctrl );              // так стало...
      fHid = ( DlgGetInt ( sDlg, nCheckHid_Ctrl ) << 1 );
      fSys = ( DlgGetInt ( sDlg, nCheckSys_Ctrl ) << 2 );
      fArc = ( DlgGetInt ( sDlg, nCheckArc_Ctrl ) << 5 );
 
      nAtr = fRon + fHid + fSys + fArc + fDir + fVol;           // соберём атрибуты в кучу
 
      if ( nAtr != fAtr ) Cur_File_Attr = nAtr;                 // если изменилось - отработаем
    }
    DlgKill( sDlg );
  }
}  

void fAttrs_About {                                             // микро подсказка (краткая справка)
  MsgDlg( "'" + nMacroName + "' is a tool to handle\\n"
      + "current file attributes.\\n\\n"
      + "Parameters:\\n"
      + "none == to call a dialog\\n"
      + "'R' - ReadOnly (rOn)\\n"
      + "'H' - Hidden (Hid)\\n"
      + "'S' - System (Sys)\\n"
      + "'A' - Archive (Arc)\\n"
      + "(!) any case\\n\\n"
      + "Modifiers:\\n"
      + "'+' - set\\n"
      + "'-' - clear\\n"
      + "none - switch\\n"
      + "spaces ' ' - ignored\\n\\n"
      + "Example:\\n"
      + "'R-h s+' == clear rOn, switch Hid, set Sys"
      , 'About ' + nMacroName + '...', "", 1 );
}

Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 05:31 26-09-2015
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » MultiEdit 2008 | Multi-Edit | MEW | mobile


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru