示例#1
0
// assumes UnregisterHotKeys was called before
static int RegisterHotKeys()
{
    hMessageWindow = CreateWindowEx(0, _T("STATIC"), NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
    SetWindowLongPtr(hMessageWindow, GWLP_WNDPROC, (LONG_PTR)MessageWndProc);

    int count = GetProfileCount(0, 0);
    for ( int i=0; i < count; i++ ) {
        if (!db_get_b(NULL, MODULENAME, OptName(i, SETTING_REGHOTKEY), 0))
            continue;

        WORD wHotKey = db_get_w(NULL, MODULENAME, OptName(i, SETTING_HOTKEY), 0);
        hkInfo = ( HKINFO* )realloc(hkInfo, (hkiCount+1)*sizeof(HKINFO));
        if (hkInfo == NULL)
            return -1;

        char atomname[255];
        mir_snprintf(atomname, _countof(atomname), "StatusProfile_%d", i);
        hkInfo[hkiCount].id = GlobalAddAtomA(atomname);
        if (hkInfo[hkiCount].id == 0)
            continue;

        hkInfo[hkiCount].profile = i;
        hkiCount ++;
        RegisterHotKey(hMessageWindow, (int)hkInfo[hkiCount-1].id, GetFsModifiers(wHotKey), LOBYTE(wHotKey));
    }

    if (hkiCount == 0)
        UnregisterHotKeys();

    return 0;
}
示例#2
0
static int CreateMainMenuItems(WPARAM, LPARAM)
{
    char servicename[128];
    int i, count;

    CMenuItem mi;
    mi.position = 2000100000;
    mi.flags = CMIF_TCHAR;
    mcount = 0;
    count = GetProfileCount(0, 0);
    for (i = 0; i < count; i++) {
        TCHAR profilename[128];
        if (!db_get_b(NULL, MODULENAME, OptName(i, SETTING_CREATEMMITEM), 0) || GetProfileName(i, (LPARAM)profilename))
            continue;

        if (db_get_b(NULL, MODULENAME, OptName(i, SETTING_INSUBMENU), 1))
            mi.root = Menu_CreateRoot(MO_STATUS, LPGENT("Status profiles"), 2000100000);

        mi.name.t = profilename;
        mi.position = 2000100000 + mcount;
        mir_snprintf(servicename, _countof(servicename), "%s%d", MS_SS_MENUSETPROFILEPREFIX, mcount);
        switch(mcount) {
        case 0:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService0);
            break;
        case 1:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService1);
            break;
        case 2:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService2);
            break;
        case 3:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService3);
            break;
        case 4:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService4);
            break;
        case 5:
            hProfileServices[mcount] = CreateServiceFunction(servicename, profileService5);
            break;
        default:
            MessageBox(NULL, TranslateT("There is a maximum of 6 menu items"), TranslateT("StartupStatus"), MB_OK);
            return 0;
        }
        mi.pszService = servicename;
        if (Menu_AddStatusMenuItem(&mi)) {
            menuprofiles[mcount] = i;
            mcount += 1;
        }
    }

    return 0;
}
示例#3
0
文件: optionInt.c 项目: caomw/mods
/*---------  get an integer array    ---------------------------*/
void  OptionIntArr(char *name,int *arr,int elems,char * comment)
{
  char ** option;
  int i;
  int optFound = 0;
  char buff[1000];
  
  IsInitialized();

  if (NULL != (option=GetOption(name,elems)))
  {   
    for(i=0; i<elems;i++)
      if (1 != sscanf(option[i+1],"%d ",&arr[i]))
      {
	ErrIncorrectType(name);
	break;
      }
    if (i == elems) optFound = 1;
  }

  /* a more efficient version with %n instead of strlen didn't work ??gcc */

  sprintf(buff,"%s (",OptName(name)); 
  for(i=0;i<elems;i++)
    sprintf(buff+strlen(buff),"%d ",arr[i]);
  sprintf(buff+strlen(buff),") [?] %s",comment);

  Usage(strdup(buff));
}
static void setStaticAnalyzerCheckerOpts(const ClangTidyOptions &Opts,
                                         AnalyzerOptionsRef AnalyzerOptions) {
  StringRef AnalyzerPrefix(AnalyzerCheckNamePrefix);
  for (const auto &Opt : Opts.CheckOptions) {
    StringRef OptName(Opt.first);
    if (!OptName.startswith(AnalyzerPrefix))
      continue;
    AnalyzerOptions->Config[OptName.substr(AnalyzerPrefix.size())] = Opt.second;
  }
}
示例#5
0
文件: optionInt.c 项目: caomw/mods
/*------- get a single integer  -------------------------------*/
int OptionInt(char * name, int def, char * comment)
{

  int value = def;
  char ** option;

  IsInitialized();

  if (NULL != (option=GetOption(name,1)))
    if (1 != sscanf(option[1],"%d",&value)) ErrIncorrectType(name);

  Usage(ConsStr("%s (%d) [%d] %s",OptName(name),value,def,comment)); 

  return value;
}
示例#6
0
文件: optionInt.c 项目: caomw/mods
/*--------  get an integer pair   -----------------------------*/
void
OptionIntInt(char * name, int *v1,int *v2, int def1, int def2, char * comment)
{
  char ** option;

  IsInitialized();

  * v1 = def1;
  * v2 = def2;

  if (NULL != (option=GetOption(name,2)))
  {
    if (1 != sscanf(option[1],"%d ",v1)) ErrIncorrectType(name);
    if (1 != sscanf(option[2],"%d ",v2)) ErrIncorrectType(name);
  }     

  Usage( ConsStr("%s (%d %d) [%d %d]  %s",
            OptName(name),*v1,*v2,def1,def2,comment)); 
}
示例#7
0
//.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtOptItem::ParseOpt -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
//
void  DtOptItem::ParseOpt(DtOptItem* Options, int NumOpt, int argc, char* argv[], 
                                                                  list<wstring>& FreeArgs)
{
    // First assign default values to all options
    for (int i=0; i<NumOpt; i++)
    {
        Options[i].m_Option.m_Type = Options[i].m_Type;
        switch (Options[i].m_Type)
        {
        case OPT_TYPE_BOOL:
        case OPT_TYPE_INT:
            Options[i].m_Option.m_IntValue = Options[i].m_IntValue;
            break;
        case OPT_TYPE_INT64:
            Options[i].m_Option.m_Int64Value = Options[i].m_Int64Value;
            break;
        case OPT_TYPE_DOUBLE:
            Options[i].m_Option.m_DoubleValue = Options[i].m_DoubleValue;
            break;
        case OPT_TYPE_STRING:
            break;
        case OPT_TYPE_STRING_LIST:
            Options[i].m_Option.m_Strings.clear();
            Options[i].m_Option.m_IntValue = Options[i].m_IntValue;
            for (int j=0; j<Options[i].m_Option.m_IntValue; j++)
                Options[i].m_Option.m_Strings.push_back(wstring());
            break;
        default:
            assert(false);
        }
    }
    bool  CheckOptions = true;
    // And then parse the actual commandline arguments
    for (int i=1; i<argc; i++)
    {
#ifdef WINBUILD
        if (CheckOptions && (argv[i][0]=='-' || argv[i][0]=='/'))
#else
        if (CheckOptions && argv[i][0]=='-')
#endif
        {
            if (argv[i][1] == '-')
            {
                CheckOptions = false;
                continue;
            }
            string  OptName(argv[i] + 1);
            wstring  WOptName(OptName.begin(), OptName.end());
            int j;
            for (j=0; j<NumOpt; j++)
            {
                if (Options[j].m_Name != WOptName)
                    continue;

                Options[j].m_Option.m_IsSet = true;
                if (Options[j].m_Type == OPT_TYPE_BOOL)
                {
                    Options[j].m_Option.m_IntValue = true;
                    break;
                }

                if (Options[j].m_Type == OPT_TYPE_STRING_LIST)
                {
                    if (i == argc - Options[j].m_IntValue)
                        throw DtOptException(L"Not enough arguments for command-line "
                                                            L"option: -%ls (expected %d)",
                                                            WOptName.c_str(),
                                                            Options[j].m_IntValue);
                    list<wstring>::iterator  It=Options[j].m_Option.m_Strings.begin();
                    for (int k=0; k<Options[j].m_IntValue; k++)
                    {
                        string  OptArg(argv[++i]);
                        *It = wstring(OptArg.begin(), OptArg.end());
                        It++;
                    }
                    break;
                }

                if (i == argc - 1)
                    throw DtOptException(L"Missing argument for command-line option: -%ls", 
                                                                        WOptName.c_str());
                string  OptArg(argv[++i]);
                Options[j].m_Option.m_StrValue = wstring(OptArg.begin(), OptArg.end());

                if (Options[j].m_Type == OPT_TYPE_DOUBLE)
                    Options[j].ParseDoubleOpt();
                else if (Options[j].m_Type == OPT_TYPE_INT)
                    Options[j].ParseIntOpt();
                else if (Options[j].m_Type == OPT_TYPE_INT64)
                    Options[j].ParseInt64Opt();
                break;
            }
            if (j == NumOpt)
                throw DtOptException(L"Unknown command-line option (-%ls) encountered", 
                                                                        WOptName.c_str());
        } else {
            string  Opt(argv[i]);
            FreeArgs.push_back(wstring(Opt.begin(), Opt.end()));
        }
    }
}