📄 filetype.c
字号:
{
/* Exec another instance to run the session */
char exePath[_MAX_PATH];
GetModuleFileName(telnetGetInstance(), exePath, _MAX_PATH);
strlcat(exePath, " /X \"", _MAX_PATH);
strlcat(exePath, name, _MAX_PATH);
strlcat(exePath, "\"", _MAX_PATH);
WinExec(exePath, SW_SHOW);
}
}
/* Dialog procedure for the Connect dialog
*/
BOOL CALLBACK fileEditDlgProc(HWND dlg,
UINT message, WPARAM wparam, LPARAM lparam)
{
switch (message)
{
case WM_INITDIALOG:
/* Flag that we have created the dialog and register the
* dialog window handle.
*/
haveEditDlg = TRUE;
dialogRegister(dlg);
/* Initialise the dialog controls
*/
if (dlgTitle) {
SendMessage(dlg, WM_SETTEXT, 0, (LPARAM)dlgTitle);
}
connectDlgSetVars(dlg, &editVars);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wparam)) {
case IDOK:
/* Read all dialog controls into the current session
*/
connectDlgGetVars(dlg, &editVars);
if (newFile)
{
char dtelnetdir[_MAX_PATH];
OPENFILENAME ofn;
/* Get a new filename */
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = dlg;
ofn.lpstrFilter = "DTelnet Shortcuts\0*"FILETYPE"\0\0";
ofn.nFilterIndex = 1;
ofn.lpstrFile = saveName;
ofn.lpstrDefExt = FILETYPEEXT;
ofn.nMaxFile = _MAX_PATH;
getExePath(telnetGetInstance(), dtelnetdir);
ofn.lpstrInitialDir = dtelnetdir;
ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR | OFN_HIDEREADONLY;
if (!GetSaveFileName(&ofn)) {
return TRUE;
}
}
else {
if (MessageBox(dlg, "Do you want to save changes ?", "Confirm changes", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) {
return TRUE;
}
}
/* save to full name */
fileSaveSession(&editVars, saveName);
if (manageDlg){
/* parent is Manage Dialog */
SendMessage(GetParent(dlg), WM_COMMAND, ID_FAV_REFRESH, 0);
}
/* fall - through to destroy window */
case IDCANCEL:
/* Destroy the dialog and unregister the dialog handle.
*/
DestroyWindow(dlg);
dialogUnRegister(dlg);
haveEditDlg = FALSE;
return TRUE;
case IDC_PROTOCOL:
#ifdef WIN32
if (HIWORD(wparam) != CBN_SELCHANGE)
break;
#else
if (HIWORD(lparam) != CBN_SELCHANGE)
break;
#endif
connectDlgOnProtocolChange(dlg);
break;
case IDC_PORT:
#ifdef WIN32
if (HIWORD(wparam) != EN_CHANGE)
break;
#else
if (HIWORD(lparam) != EN_CHANGE)
break;
#endif
connectDlgOnPortChange(dlg);
break;
case IDC_HOSTNAME:
#ifdef WIN32
if (HIWORD(wparam) != EN_CHANGE)
break;
#else
if (HIWORD(lparam) != EN_CHANGE)
break;
#endif
connectDlgOnHostChange(dlg);
break;
}
}
return FALSE;
}
void fileFavCreate(HINSTANCE instance, HWND wnd)
{
if (!haveEditDlg){
newFile = TRUE;
strcpy(dlgTitle, "New connection Profile");
strcpy(saveName, "");
if (socketConnected()) {
connectGetVars(&editVars);
}
else {
connectGetDefVars(&editVars);
}
CreateDialog(instance, MAKEINTRESOURCE(IDD_CONNECT_DIALOG),
wnd, fileEditDlgProc);
}
}
void fileFavDelete(HWND wnd, char* name)
{
char prompt[_MAX_PATH];
char delName[_MAX_PATH];
strcpy(prompt, "Delete ");
strlcat(prompt, name, _MAX_PATH);
strlcat(prompt, "?", _MAX_PATH);
if (MessageBox(wnd, prompt, "Confirm delete", MB_OKCANCEL | MB_ICONQUESTION)==IDOK)
{
expandFavPath(delName, name);
unlink(delName);
SendMessage(wnd, WM_COMMAND, ID_FAV_REFRESH, 0);
}
}
void fileFavModify(HINSTANCE instance, HWND wnd, char *name)
{
if (!haveEditDlg){
newFile = FALSE;
strcpy(dlgTitle, "Editing ");
strlcat(dlgTitle, name, _MAX_PATH);
expandFavPath(saveName, name);
fileLoadSession(saveName, &editVars);
CreateDialog(instance, MAKEINTRESOURCE(IDD_CONNECT_DIALOG),
wnd, fileEditDlgProc);
}
}
BOOL CALLBACK fileManageDlgProc(HWND dlg,
UINT message, WPARAM wparam, LPARAM lparam)
{
Connect entry;
int sel;
char name[_MAX_PATH];
char info[256];
switch (message) {
case WM_INITDIALOG:
/* Flag that we have created the dialog, and register the
* dialog window handle with the dialog handling code.
*/
manageDlg = dlg;
dialogRegister(dlg);
fileLoadFavorites(FILETYPE_LOAD_MANAGE);
return TRUE;
case WM_COMMAND:
switch (LOWORD (wparam)) {
case ID_FAV_LISTBOX:
#ifdef WIN32
switch (HIWORD (wparam))
#else
switch (HIWORD (lparam))
#endif
{
case LBN_SELCHANGE:
/* Display connection info as string */
sel = (int)SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR)
{
SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETTEXT, (WPARAM) sel, (LPARAM) name);
if (fileLoadSession(name, &entry)) {
sprintf(info, "Host: %s/%s (%s) %s %s",
entry.host, entry.port, entry.protocol, entry.term,
entry.charset);
SendDlgItemMessage(dlg, ID_FAV_INFO, WM_SETTEXT, 0, (LPARAM)info);
}
else {
SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_SETCURSEL, -1, 0);
}
}
fileManageEnableCtls();
break;
case LBN_DBLCLK:
/* Modify current entry */
sel = (int)SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR)
{
SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETTEXT, (WPARAM) sel, (LPARAM) name);
fileFavModify(telnetGetInstance(), dlg, name);
}
break;
}
break;
case ID_FAV_DEL:
sel = (int)SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR)
{
SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETTEXT, (WPARAM) sel, (LPARAM) name);
fileFavDelete(dlg, name);
}
break;
case ID_FAV_MOD:
sel = (int)SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR)
{
SendDlgItemMessage(dlg, ID_FAV_LISTBOX, LB_GETTEXT, (WPARAM) sel, (LPARAM) name);
fileFavModify(telnetGetInstance(), dlg, name);
}
break;
case ID_FAV_NEW:
fileFavCreate(telnetGetInstance(), dlg);
break;
case ID_FAV_REFRESH:
fileLoadFavorites(FILETYPE_LOAD_MENU | FILETYPE_LOAD_MANAGE);
break;
case ID_FAV_REGASSOC:
if (MessageBox(dlg, "Do you want to associate "FILETYPE" with DTelnet?",
"Register Association", MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
{
fileTypeRegister();
}
break;
case IDOK:
/* Destroy the dialog and unregister the dialog handle
* with the dialog handling code.
*/
DestroyWindow(dlg);
dialogUnRegister(dlg);
manageDlg = NULL;
return TRUE;
}
break;
case WM_CLOSE:
DestroyWindow(dlg);
dialogUnRegister(dlg);
manageDlg = NULL;
return TRUE;
}
return FALSE;
}
/* Pop up a manage favorites dialog */
void fileTypeManage(HINSTANCE instance, HWND wnd)
{
if (!manageDlg)
CreateDialog(instance, MAKEINTRESOURCE(IDD_MANAGE_FILETYPE),
wnd, fileManageDlgProc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -