/* * Name: StartupAddOption * Arguments: * PRUnichar* option - the option line switch we want to add to the registry key * * Return Value: none * * Description: * This function adds the given option line argument to the (appname) Quick Launch registry key * * Author: * Joseph Elwell 3/1/2002 */ NS_IMETHODIMP nsWindowsHooks::StartupAddOption(const char* option) { NS_ASSERTION(option, "nsWindowsHooks::StartupAddOption requires something like \"-turbo\""); PRBool retval; IsOptionEnabled(option, &retval); if (retval) return NS_OK; //already in there RegistryEntry startup ( HKEY_CURRENT_USER, RUNKEY, NS_QUICKLAUNCH_RUN_KEY, NULL ); nsCString cargs = startup.currentSetting(); nsCAutoString newsetting; newsetting.Assign('\"'); newsetting.Append(thisApplication()); newsetting.Append('\"'); if (!cargs.IsEmpty()) { char* args; // exploiting the fact that nsString's storage is also a char* buffer. // NS_CONST_CAST is safe here because nsCRT::strtok will only modify // the existing buffer grabArgs(cargs.BeginWriting(), &args); if (args != NULL) newsetting.Append(args); else { // check for the old style registry key that doesnot quote its executable IsOptionEnabled("-turbo", &retval); if (retval) newsetting.Append(" -turbo"); } } newsetting.Append(' '); newsetting.Append(option); startup.setting = newsetting; startup.set(); return NS_OK; }
/* * Name: StartupRemoveOption * Arguments: * PRUnichar* option - the option line switch we want to remove from the registry key * * Return Value: none. * * Description: * This function removes the given option from the (appname) Quick Launch Key. * And deletes the key entirely if no options are left. * * Author: * Joseph Elwell 3/1/2002 */ NS_IMETHODIMP nsWindowsHooks::StartupRemoveOption(const char* option) { NS_ASSERTION(option, "nsWindowsHooks::StartupRemoveOption requires something like \"-turbo\""); PRBool startupFound; IsOptionEnabled(option, &startupFound ); if ( !startupFound ) return NS_OK; // already disabled, no need to do anything RegistryEntry startup ( HKEY_CURRENT_USER, RUNKEY, NS_QUICKLAUNCH_RUN_KEY, NULL ); nsCString cargs = startup.currentSetting(); char* args; // exploiting the fact that nsString's storage is also a char* buffer. // NS_CONST_CAST is safe here because nsCRT::strtok will only modify // the existing buffer grabArgs(cargs.BeginWriting(), &args); nsCAutoString launchcommand; if (args) { launchcommand.Assign(args); PRInt32 optionlocation = launchcommand.Find(option, PR_TRUE); // modify by one to get rid of the space we prepended in StartupAddOption if (optionlocation != kNotFound) launchcommand.Cut(optionlocation - 1, strlen(option) + 1); } if (launchcommand.IsEmpty()) { startup.set(); } else { nsCAutoString ufileName; ufileName.Assign('\"'); ufileName.Append(thisApplication()); ufileName.Append('\"'); ufileName.Append(launchcommand); startup.setting = ufileName; startup.set(); } return NS_OK; }
VOID MapFilterSetting( DWORD nMapFilter, int arg, int argc, char *argv[]) { CHAR szBuffer[MAX_STRING] = {0}; CHAR Buff[MAX_STRING]={0}; PCHAR szFilterMap[] = { "hide", "show", NULL }; PMAPFILTER pMapFilter=&MapFilterOptions[nMapFilter]; if (!RequirementsMet(nMapFilter)) { WriteChatf("'%s' requires '%s' option. Please enable this option first.",pMapFilter->szName,MapFilterOptions[pMapFilter->RequiresOption].szName); return; } if (arg>=argc) { // NO VALUE char szBuffer[2048]={0}; if (pMapFilter->bIsToggle) { sprintf(szBuffer,"%s: %s",pMapFilter->szName,szFilterMap[pMapFilter->Enabled]); } else if (nMapFilter == MAPFILTER_Custom) { if (IsOptionEnabled(nMapFilter)==0) { sprintf(szBuffer,"%s: Off",pMapFilter->szName); } else { sprintf(szBuffer,"%s: %s",pMapFilter->szName,FormatSearchSpawn(Buff,&MapFilterCustom)); } } else { sprintf(szBuffer,"%s: %d",pMapFilter->szName,pMapFilter->Enabled); } if (pMapFilter->DefaultColor != -1) { DWORD R,G,B; R= (pMapFilter->Color&0xFF0000)/0x10000; G= (pMapFilter->Color&0xFF00)/0x100; B= pMapFilter->Color&0xFF; WriteChatf("%s (Color: %d %d %d)",szBuffer,R,G,B); } else WriteChatf("%s",szBuffer); return; } if (pMapFilter->bIsToggle) { if (!stricmp(szFilterMap[0],argv[arg])) { pMapFilter->Enabled = 0; } else if (!stricmp(szFilterMap[1],argv[arg])) { pMapFilter->Enabled = 1; } else { pMapFilter->Enabled = 1 - pMapFilter->Enabled; } WriteChatf("%s is now set to: %s",pMapFilter->szName,szFilterMap[IsOptionEnabled(nMapFilter)]); } else if (nMapFilter == MAPFILTER_Custom) { ClearSearchSpawn(&MapFilterCustom); { pMapFilter->Enabled = 1; ParseSearchSpawn(arg+1,argc,argv,MapFilterCustom); WriteChatf("%s is now set to: %s",pMapFilter->szName,FormatSearchSpawn(Buff,&MapFilterCustom)); } } else { pMapFilter->Enabled = atoi(argv[arg]); WriteChatf("%s is now set to: %d",pMapFilter->szName,pMapFilter->Enabled); } itoa(pMapFilter->Enabled,szBuffer,10); pISInterface->SetSettingi("ISXEQMap.xml","Map Filters",pMapFilter->szName,pMapFilter->Enabled); pISInterface->SaveSettings("ISXEQMap.xml"); }
// *************************************************************************** // Function: MapFilters // Description: Our '/mapfilter' command // Sets map filters // Usage: /mapfilter [options|help] // *************************************************************************** VOID MapFilterSetting(PSPAWNINFO pChar, DWORD nMapFilter, PCHAR szValue) { CHAR szBuffer[MAX_STRING] = { 0 }; CHAR Buff[MAX_STRING] = { 0 }; DWORD dwValue = 0; PCHAR szFilterMap[] = { "hide", "show", NULL }; if (!pChar) return; PMAPFILTER pMapFilter = &MapFilterOptions[nMapFilter]; if (!RequirementsMet(nMapFilter)) { sprintf_s(szBuffer, "'%s' requires '%s' option. Please enable this option first.", pMapFilter->szName, MapFilterOptions[pMapFilter->RequiresOption].szName); WriteChatColor(szBuffer, USERCOLOR_DEFAULT); return; } if (!szValue) { if (pMapFilter->bIsToggle) { sprintf_s(szBuffer, "%s: %s", pMapFilter->szName, szFilterMap[pMapFilter->Enabled]); } else if (nMapFilter == MAPFILTER_Custom) { if (IsOptionEnabled(nMapFilter) == 0) { sprintf_s(szBuffer, "%s: Off", pMapFilter->szName); } else { sprintf_s(szBuffer, "%s: %s", pMapFilter->szName, FormatSearchSpawn(Buff, sizeof(Buff), &MapFilterCustom)); } } else { sprintf_s(szBuffer, "%s: %d", pMapFilter->szName, pMapFilter->Enabled); } if (pMapFilter->DefaultColor != -1) { CHAR szBuffer2[MAX_STRING] = { 0 }; DWORD R, G, B; R = (pMapFilter->Color & 0xFF0000) / 0x10000; G = (pMapFilter->Color & 0xFF00) / 0x100; B = pMapFilter->Color & 0xFF; sprintf_s(szBuffer2, "%s (Color: %d %d %d)", szBuffer, R, G, B); strcpy_s(szBuffer, szBuffer2); } } else { if (pMapFilter->bIsToggle) { if (!_stricmp(szFilterMap[0], szValue)) { pMapFilter->Enabled = 0; } else if (!_stricmp(szFilterMap[1], szValue)) { pMapFilter->Enabled = 1; } else { pMapFilter->Enabled = 1 - pMapFilter->Enabled; } sprintf_s(szBuffer, "%s is now set to: %s", pMapFilter->szName, szFilterMap[IsOptionEnabled(nMapFilter)]); } else if (nMapFilter == MAPFILTER_Custom) { ClearSearchSpawn(&MapFilterCustom); if (szValue[0] == 0) { pMapFilter->Enabled = 0; sprintf_s(szBuffer, "%s is now set to: Off", pMapFilter->szName); } else { pMapFilter->Enabled = 1; ParseSearchSpawn(szValue, &MapFilterCustom); sprintf_s(szBuffer, "%s is now set to: %s", pMapFilter->szName, FormatSearchSpawn(Buff, sizeof(Buff), &MapFilterCustom)); } } else if (nMapFilter == MAPFILTER_Marker) { CHAR szBuffer2[MAX_STRING] = { 0 }; GetArg(szBuffer2, szValue, 1); if (!_stricmp(szFilterMap[0], szValue)) { pMapFilter->Enabled = 0; sprintf_s(szBuffer, "%s is now set to: %s", pMapFilter->szName, szFilterMap[IsOptionEnabled(nMapFilter)]); } else if (!_stricmp(szFilterMap[1], szValue)) { pMapFilter->Enabled = 1; sprintf_s(szBuffer, "%s is now set to: %s", pMapFilter->szName, szFilterMap[IsOptionEnabled(nMapFilter)]); } else { pMapFilter->Enabled = 1; sprintf_s(szBuffer, "%s %s", pMapFilter->szName, FormatMarker(szValue, Buff, sizeof(Buff))); } } else { pMapFilter->Enabled = atoi(szValue); sprintf_s(szBuffer, "%s is now set to: %d", pMapFilter->szName, pMapFilter->Enabled); } } WriteChatColor(szBuffer, USERCOLOR_DEFAULT); if (szValue) { _itoa_s(pMapFilter->Enabled, szBuffer, 10); WritePrivateProfileString("Map Filters", pMapFilter->szName, szBuffer, INIFileName); } }