亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rundlg.cpp

?? 一個功能強大的代碼編輯器源代碼
?? CPP
字號:
//this file is part of notepad++
//Copyright (C)2003 Don HO ( donho@altern.org )
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either
//version 2 of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include "RunDlg.h"
#include "FileDialog.h"
//#include "resource.h"
#include "Notepad_plus_msgs.h"
#include "shortcut.h"
#include "Parameters.h"
#include "Notepad_plus.h"


void Command::extractArgs(char *cmd2Exec, char *args, const char *cmdEntier)
{
	int i = 0;
	bool quoted = false;
	for ( ; i < int(strlen(cmdEntier)) ; i++)
	{
		if ((cmdEntier[i] == ' ') && (!quoted))
			break;
		if (cmdEntier[i]=='"')
			quoted = !quoted;

		cmd2Exec[i] = cmdEntier[i];
	}
	cmd2Exec[i] = '\0';
	
	if (i < int(strlen(cmdEntier)))
	{
		for ( ; (i < int(strlen(cmdEntier))) && (cmdEntier[i] == ' ') ; i++);
		if (i < int(strlen(cmdEntier)))
		{
			for (int k = 0 ; i <= int(strlen(cmdEntier)) ; i++, k++)
			{
				args[k] = cmdEntier[i];
			}
		}

		int l = strlen(args);
		if (args[l-1] == ' ')
		{
			for (l -= 2 ; (l > 0) && (args[l] == ' ') ; l--);
			args[l+1] = '\0';
		}

	}
	else
		args[0] = '\0';
}


int whichVar(char *str)
{
	if (!strcmp(fullCurrentPath, str))
		return FULL_CURRENT_PATH;
	else if (!strcmp(currentDirectory, str))
		return CURRENT_DIRECTORY;
	else if (!strcmp(onlyFileName, str))
		return FILE_NAME;
	else if (!strcmp(fileNamePart, str))
		return NAME_PART;
	else if (!strcmp(fileExtPart, str))
		return EXT_PART;
	else if (!strcmp(currentWord, str))
		return CURRENT_WORD;
	else if (!strcmp(nppDir, str))
		return NPP_DIRECTORY;
	return VAR_NOT_RECOGNIZED;
}

// Since I'm sure the length will be 256, I won't check the strlen : watch out!
void expandNppEnvironmentStrs(const char *strSrc, char *stringDest, size_t strDestLen, HWND hWnd)
{
	size_t j = 0;
	for (size_t i = 0  ; i < strlen(strSrc) ; i++)
	{
		int iBegin = -1;
		int iEnd = -1;
		if ((strSrc[i] == '$') && (strSrc[i+1] == '('))
		{
			iBegin = i += 2;
			for ( ; i < strlen(strSrc) ; i++)
			{
				if (strSrc[i] == ')')
				{
					iEnd = i - 1;
					break;
				}
			}
		}
		if (iBegin != -1)
		{
			if (iEnd != -1)
			{
				char str[256];
				int m = 0;
				for (int k = iBegin  ; k <= iEnd ; k++)
					str[m++] = strSrc[k];
				str[m] = '\0';

				int internalVar = whichVar(str);
				if (internalVar == VAR_NOT_RECOGNIZED)
				{
					i = iBegin - 2;
					stringDest[j++] = strSrc[i];
				}
				else
				{
					char expandedStr[256];
					::SendMessage(hWnd, RUNCOMMAND_USER + internalVar, MAX_PATH, (LPARAM)expandedStr);
					for (size_t p = 0 ; p < strlen(expandedStr) ; p++)
						stringDest[j++] = expandedStr[p];
				}
			}
			else
			{
				i = iBegin - 2;
				stringDest[j++] = strSrc[i];
			}
		}
		else
			stringDest[j++] = strSrc[i];
	}
	stringDest[j] = '\0';
}

HINSTANCE Command::run(HWND hWnd)
{
	char cmdPure[MAX_PATH];
	char cmdIntermediate[MAX_PATH];
	char cmd2Exec[MAX_PATH];
	char args[MAX_PATH];
	char argsIntermediate[MAX_PATH];
	char args2Exec[MAX_PATH];

	extractArgs(cmdPure, args, _cmdLine.c_str());
	::ExpandEnvironmentStrings(cmdPure, cmdIntermediate, sizeof(cmd2Exec));
	::ExpandEnvironmentStrings(args, argsIntermediate, sizeof(args));
	expandNppEnvironmentStrs(cmdIntermediate, cmd2Exec, sizeof(cmd2Exec), hWnd);
	expandNppEnvironmentStrs(argsIntermediate, args2Exec, sizeof(args2Exec), hWnd);

	return ::ShellExecute(hWnd, "open", cmd2Exec, args2Exec, ".", SW_SHOW);
}

BOOL CALLBACK RunDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{/*
		case WM_INITDIALOG :
		{
			getClientRect(_rc);
			return TRUE;
		}
		*/

		case WM_COMMAND : 
		{
			switch (wParam)
			{
				case IDCANCEL :
					display(false);
					return TRUE;
				
				case IDOK :
				{
					char cmd[MAX_PATH];
					::GetDlgItemText(_hSelf, IDC_COMBO_RUN_PATH, cmd, MAX_PATH);
					_cmdLine = cmd;

					HINSTANCE hInst = run(_hParent);
					if (int(hInst) > 32)
					{
						addTextToCombo(_cmdLine.c_str());
						display(false);
					}
					else
					{
						removeTextFromCombo(_cmdLine.c_str());
					}
					return TRUE;
				}
				case IDC_BUTTON_SAVE :
				{
					std::vector<UserCommand> & theUserCmds = (NppParameters::getInstance())->getUserCommandList();

					int nbCmd = theUserCmds.size();

					int cmdID = ID_USER_CMD + nbCmd;
					char cmd[MAX_PATH];
					::GetDlgItemText(_hSelf, IDC_COMBO_RUN_PATH, cmd, MAX_PATH);
					UserCommand uc(Shortcut(), cmd, cmdID);
					uc.init(_hInst, _hSelf);

					if (uc.doDialog() != -1)
					{
						HMENU hRunMenu = ::GetSubMenu(::GetMenu(_hParent), MENUINDEX_RUN);
						int const posBase = 2;
						
						if (nbCmd == 0)
							::InsertMenu(hRunMenu, posBase - 1, MF_BYPOSITION, (unsigned int)-1, 0);
						
						theUserCmds.push_back(uc);
						::InsertMenu(hRunMenu, posBase + nbCmd, MF_BYPOSITION, cmdID, uc.toMenuItemString().c_str());
						(NppParameters::getInstance())->getAccelerator()->updateShortcuts();
					}
					return TRUE;
				}
				case IDC_BUTTON_FILE_BROWSER :
				{
					FileDialog fd(_hSelf, _hInst);
					fd.setExtFilter("Executable file : ", ".exe", ".com", ".cmd", ".bat", NULL);
					fd.setExtFilter("All files : ", ".*", NULL);

					if (const char *fn = fd.doOpenSingleFileDlg())
						addTextToCombo(fn);
					return TRUE;
				}

				default :
					break;
			}
		}
	}
	return FALSE;	
}

void RunDlg::addTextToCombo(const char *txt2Add) const
{
	HWND handle = ::GetDlgItem(_hSelf, IDC_COMBO_RUN_PATH);
	int i = ::SendMessage(handle, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)txt2Add);
	if (i == CB_ERR)
		i = ::SendMessage(handle, CB_ADDSTRING, 0, (LPARAM)txt2Add);
	::SendMessage(handle, CB_SETCURSEL, i, 0);
}
void RunDlg::removeTextFromCombo(const char *txt2Remove) const
{
	HWND handle = ::GetDlgItem(_hSelf, IDC_COMBO_RUN_PATH);
	int i = ::SendMessage(handle, CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)txt2Remove);
	if (i == CB_ERR)
		return;
	::SendMessage(handle, CB_DELETESTRING, i, 0);
}

void RunDlg::doDialog(bool isRTL)
{
	if (!isCreated())
		create(IDD_RUN_DLG, isRTL);

    // Adjust the position in the center
	goToCenter();
	::SetFocus(::GetDlgItem(_hSelf, IDC_COMBO_RUN_PATH));
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费国产精品| 成人免费av网站| 顶级嫩模精品视频在线看| 99精品久久99久久久久| 欧美成人女星排行榜| 一区二区三区自拍| 国产精品综合视频| 91精品国模一区二区三区| 综合色中文字幕| 国产真实乱子伦精品视频| 欧美日韩成人综合天天影院| 久久精品人人做| 男女男精品视频网| 欧美日韩在线播放三区四区| 国产午夜精品久久| 久久精工是国产品牌吗| 欧美男男青年gay1069videost| 中文字幕巨乱亚洲| 国产乱人伦偷精品视频不卡 | 视频精品一区二区| 色综合久久中文字幕综合网| 国产精品视频一二三区| 国产在线精品一区二区三区不卡 | 免费欧美高清视频| 欧美视频在线一区二区三区| 亚洲日本在线天堂| 91一区在线观看| 亚洲色图清纯唯美| 色综合天天综合色综合av | 不卡av电影在线播放| 国产亚洲欧美日韩日本| 国产在线观看一区二区| 久久久久99精品国产片| 国产精品一二三区| 中文字幕高清不卡| 9色porny自拍视频一区二区| 中文字幕乱码一区二区免费| www.欧美亚洲| 亚洲免费在线观看| 欧美色图天堂网| 日韩精品欧美成人高清一区二区| 欧美日本一区二区三区四区| 奇米四色…亚洲| 欧美变态凌虐bdsm| 国产一区免费电影| 日韩美女啊v在线免费观看| 99re在线精品| 午夜电影网一区| 日韩欧美在线综合网| 国内偷窥港台综合视频在线播放| 久久久久久久精| 国产传媒欧美日韩成人| 最新高清无码专区| 欧美视频一区二| 麻豆freexxxx性91精品| 26uuu亚洲综合色| 97se亚洲国产综合自在线观| 亚洲成人动漫在线免费观看| 欧美一区二区三区不卡| 国产一区二区h| 一区二区三区在线播放| 91精品国产欧美日韩| 国产精品一线二线三线| 亚洲综合视频网| 精品国产青草久久久久福利| 99麻豆久久久国产精品免费优播| 亚洲丶国产丶欧美一区二区三区| 亚洲精品一区二区三区99| 91麻豆视频网站| 经典三级视频一区| 国产精品不卡一区二区三区| 欧美日本高清视频在线观看| 国产美女精品人人做人人爽| 亚洲自拍与偷拍| 国产视频一区二区在线| 欧美日韩一区成人| 国产a级毛片一区| 日本sm残虐另类| 亚洲免费在线观看| 国产欧美精品区一区二区三区| 欧美性大战久久| www.亚洲国产| 国产一区二区三区免费观看| 亚洲国产一区二区在线播放| 久久久久久夜精品精品免费| 欧美麻豆精品久久久久久| 99热在这里有精品免费| 精品影视av免费| 午夜国产精品影院在线观看| 亚洲乱码国产乱码精品精可以看| 久久日韩粉嫩一区二区三区| 欧美日韩高清影院| 91美女精品福利| 成人avav影音| 国产一区二区三区综合| 免费高清成人在线| 天涯成人国产亚洲精品一区av| 中文字幕一区二区三区四区不卡| 欧美精品一区二区精品网| 欧美另类videos死尸| 91国模大尺度私拍在线视频| 99视频在线精品| 国产麻豆成人精品| 国产精品99久久不卡二区| 免费成人在线观看| 日本女人一区二区三区| 亚洲444eee在线观看| 亚洲国产日韩a在线播放性色| 自拍偷拍亚洲激情| 欧美高清在线精品一区| 久久精品网站免费观看| 久久婷婷久久一区二区三区| 日韩欧美在线观看一区二区三区| 欧美人动与zoxxxx乱| 欧美日韩午夜在线| 欧美日韩第一区日日骚| 欧美日韩大陆一区二区| 91麻豆精品国产91久久久久久 | 午夜精品aaa| 亚洲二区在线视频| 天堂在线亚洲视频| 蜜臀av一区二区在线免费观看| 日韩精品91亚洲二区在线观看| 视频在线在亚洲| 久久不见久久见免费视频1 | 美女高潮久久久| 九色porny丨国产精品| 国产一区欧美一区| 成人高清在线视频| 色天使久久综合网天天| 欧美视频在线不卡| 欧美成人精精品一区二区频| 精品国产一区久久| 欧美激情一区不卡| 一区二区三区成人| 日韩专区欧美专区| 国产美女精品在线| 9i在线看片成人免费| 亚洲女爱视频在线| 中文字幕巨乱亚洲| 处破女av一区二区| 韩国一区二区视频| 99免费精品在线| 3751色影院一区二区三区| 精品国精品国产| 亚洲免费在线观看视频| 日韩国产欧美三级| 狠狠色综合日日| 91蜜桃婷婷狠狠久久综合9色| 欧美丰满美乳xxx高潮www| 精品成人一区二区三区四区| 亚洲欧美一区二区视频| 首页国产欧美日韩丝袜| 成人在线综合网| 欧美精品一级二级| 国产精品久久久一区麻豆最新章节| 一区二区在线观看视频在线观看| 亚洲国产aⅴ天堂久久| 成人深夜福利app| 4438亚洲最大| 亚洲欧洲日产国码二区| 日本91福利区| 在线观看av不卡| 2021国产精品久久精品| 亚洲一级二级三级在线免费观看| 国模少妇一区二区三区| 欧美日韩一区三区四区| 国产农村妇女毛片精品久久麻豆| 图片区小说区区亚洲影院| 99视频国产精品| 亚洲精品一区二区三区精华液 | 亚洲午夜精品17c| 成人性色生活片| 日韩欧美一二三| 亚洲精品五月天| 成人三级伦理片| 精品福利二区三区| 午夜精品123| 欧美手机在线视频| 亚洲码国产岛国毛片在线| 国产一区二区免费在线| 欧美电影免费观看高清完整版在 | 欧美日韩视频不卡| 亚洲图片激情小说| 不卡电影一区二区三区| 国产欧美日韩在线看| 国产一区二区在线免费观看| 日韩欧美一级在线播放| 亚洲成av人片一区二区| 91成人网在线| 亚洲一区二区三区中文字幕在线| 99精品在线免费| 中文字幕一区二区视频| 99久久国产综合精品色伊 | 欧美xingq一区二区| 亚洲成人黄色影院| 欧美精品三级在线观看| 亚洲va国产天堂va久久en| 欧美图区在线视频| 亚洲成人动漫在线免费观看|