⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filetype.c

📁 dtelent是开源的开发项目
💻 C
📖 第 1 页 / 共 2 页
字号:
    {
        /* 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 + -