Beispiel #1
0
INT_PTR TgenericPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (!nostate && nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_GENERIC)
                switch (nmhdr->code) {
                    case LVN_ITEMCHANGED: {
                        LPNMLISTVIEW nmlv=LPNMLISTVIEW(lParam);
                        if (nmlv->uChanged&LVIF_STATE && ((nmlv->uOldState&4096)!=(nmlv->uNewState&4096))) {
                            Tflag *f=(Tflag*)nmlv->lParam;
                            if (nmlv->uNewState&8192) {
                                cfgSet(std::get<IDFF-1>(*f),cfgGet(std::get<IDFF-1>(*f))|std::get<VAL-1>(*f));
                            } else if (nmlv->uNewState&4096) {
                                cfgSet(std::get<IDFF-1>(*f),cfgGet(std::get<IDFF-1>(*f))&~std::get<VAL-1>(*f));
                            }
                            if (std::get<REPAINT-1>(*f)) {
                                cfg2dlg();
                            }
                        }
                        return TRUE;
                    }
                    break;
                }
            break;
        }
    }
    return TconfPageEnc::msgProc(uMsg,wParam,lParam);
}
Beispiel #2
0
//------------------------------------------------------------------------------
// private:
//------------------------------------------------------------------------------
INT_PTR CALLBACK AnnounceDialog::process(HWND window, UINT message, WPARAM wparam, LPARAM lparam)
{
	if (!m_instance)
	{
		return 1;
	}

	switch (message)
	{
	  case WM_INITDIALOG:
		m_instance->load(window);
		break;

	  case WM_COMMAND:
		m_instance->command(window, wparam);
		break;

	  case WM_NOTIFY:
		if (PSN_APPLY == LPNMHDR(lparam)->code)
		{	
			m_instance->save(window);
		}
		break;
	}

	return 0;
}
Beispiel #3
0
INT_PTR TkeysPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            cfgSet(IDFF_lvKeysWidth0, ListView_GetColumnWidth(hlv, 0));
            cfgSet(IDFF_lvKeysWidth1, ListView_GetColumnWidth(hlv, 1));
            break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_CHB_KEYS:
                    cfgSet(IDFF_isKeys, getCheck(IDC_CHB_KEYS));
                    keys2dlg();
                    parent->drawInter();
                    return TRUE;
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr = LPNMHDR(lParam);
            if (nmhdr->hwndFrom == hlv && nmhdr->idFrom == IDC_LV_KEYS)
                switch (nmhdr->code) {
                    case NM_DBLCLK:
                        if (keyChanging != -1) {
                            endKeyChange();
                        } else {
                            beginKeyChange();
                        }
                        return TRUE;
                    case NM_CLICK:
                        if (keyChanging != -1) {
                            endKeyChange();
                        }
                        return TRUE;
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi = (NMLVDISPINFO*)lParam;
                        int i = nmdi->item.iItem;
                        if (i == -1) {
                            break;
                        }
                        if (nmdi->item.mask & LVIF_TEXT)
                            switch (nmdi->item.iSubItem) {
                                case 0: {
                                    const char_t *descr;
                                    deciD->getKeyParamDescr(i, &descr);
                                    strcpy(nmdi->item.pszText, _(IDC_LV_KEYS, descr));
                                    break;
                                }
                                case 1:
                                    strcpy(nmdi->item.pszText, _(IDC_LV_KEYS, keyChanging == -1 ? Tkeyboard::getKeyName(deciD->getKeyParamKey2(i)) : _l("press key")));
                                    break;
                            }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return TconfPageDec::msgProc(uMsg, wParam, lParam);
}
Beispiel #4
0
// IDD_FOLDER_OPTIONS_VIEW
INT_PTR CALLBACK
FolderOptionsViewDlg(
    HWND    hwndDlg,
    UINT    uMsg,
    WPARAM  wParam,
    LPARAM  lParam)
{
    INT_PTR Result;
    NMTVCUSTOMDRAW *Draw;

    switch (uMsg)
    {
        case WM_INITDIALOG:
            return ViewDlg_OnInitDialog(hwndDlg);

        case WM_COMMAND:
            switch (LOWORD(wParam))
            {
                case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults
                    ViewDlg_RestoreDefaults(hwndDlg);
                    break;
            }
            break;

        case WM_NOTIFY:
            switch (LPNMHDR(lParam)->code)
            {
                case NM_CLICK:  // clicked on treeview
                    ViewDlg_OnTreeViewClick(hwndDlg);
                    break;

                case NM_CUSTOMDRAW:     // custom draw (for graying)
                    Draw = (NMTVCUSTOMDRAW *)lParam;
                    Result = ViewDlg_OnTreeCustomDraw(hwndDlg, Draw);
                    SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, Result);
                    return Result;

                case TVN_KEYDOWN:       // key is down
                    ViewDlg_OnTreeViewKeyDown(hwndDlg, (TV_KEYDOWN *)lParam);
                    break;

                case PSN_APPLY:         // [Apply] is clicked
                    ViewDlg_Apply(hwndDlg);
                    break;

                default:
                    break;
            }
            break;
    }

    return FALSE;
}
// virtual
LRESULT PropertyPage::wndProc(UINT msg, WPARAM wp, LPARAM lp) {
	switch(msg) {
	case WM_NOTIFY:
		switch(LPNMHDR(lp)->code) {
		case PSN_APPLY:
			onOK();
			return TRUE;
		case PSN_QUERYCANCEL:
			onCancel();
			return TRUE;
		}
	}
	return Dialog::wndProc(msg, wp, lp);
}
Beispiel #6
0
INT_PTR TinfoPageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_CHB_ALLOW_MMX:
                case IDC_CHB_ALLOW_MMXEXT:
                case IDC_CHB_ALLOW_SSE:
                case IDC_CHB_ALLOW_SSE2:
                case IDC_CHB_ALLOW_SSE3:
                case IDC_CHB_ALLOW_SSSE3:
                case IDC_CHB_ALLOW_3DNOW:
                case IDC_CHB_ALLOW_3DNOWEXT:
                case IDC_CHB_ALLOW_SSE41:
                case IDC_CHB_ALLOW_SSE42:
                case IDC_CHB_ALLOW_SSE4A:
                case IDC_CHB_ALLOW_SSE5: {
                    int allow=0;
                    if (getCheck(IDC_CHB_ALLOW_MMX     )) {
                        allow|=FF_CPU_MMX;
                    }
                    if (getCheck(IDC_CHB_ALLOW_MMXEXT  )) {
                        allow|=FF_CPU_MMXEXT;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE     )) {
                        allow|=FF_CPU_SSE;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE2    )) {
                        allow|=FF_CPU_SSE2;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE3    )) {
                        allow|=FF_CPU_SSE3;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSSE3   )) {
                        allow|=FF_CPU_SSSE3;
                    }
                    if (getCheck(IDC_CHB_ALLOW_3DNOW   )) {
                        allow|=FF_CPU_3DNOW;
                    }
                    if (getCheck(IDC_CHB_ALLOW_3DNOWEXT)) {
                        allow|=FF_CPU_3DNOWEXT;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE41   )) {
                        allow|=FF_CPU_SSE41;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE42   )) {
                        allow|=FF_CPU_SSE42;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE4A   )) {
                        allow|=FF_CPU_SSE4A;
                    }
                    if (getCheck(IDC_CHB_ALLOW_SSE5    )) {
                        allow|=FF_CPU_SSE5;
                    }
                    cfgSet(IDFF_allowedCpuFlags,allow);
                    return TRUE;
                }
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_INFO)
                switch (nmhdr->code) {
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        int i=nmdi->item.iItem;
                        if (i==-1) {
                            break;
                        }
                        if (nmdi->item.mask&LVIF_TEXT)
                            switch (nmdi->item.iSubItem) {
                                case 0: {
                                    nmdi->item.pszText = pszTextBuf;
                                    tsnprintf_s(pszTextBuf,countof(pszTextBuf),_TRUNCATE,_l("%s: %s"),infoitems[i].translatedName,infoitems[i].val?infoitems[i].val:_l(""));
                                    break;
                                }
                            }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return TconfPageDec::msgProc(uMsg,wParam,lParam);
}
Beispiel #7
0
INT_PTR TOSDpageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_CHB_OSD:
                    cfgSet(IDFF_isOSD, getCheck(IDC_CHB_OSD));
                    parent->drawInter();
                    return TRUE;
                case IDC_CHB_OSD_IS_AUTO_HIDE:
                    cfgSet(IDFF_OSDisAutoHide, getCheck(IDC_CHB_OSD_IS_AUTO_HIDE));
                    osd2dlg();
                    parent->setChange();
                    break;
                case IDC_ED_OSD_DURATION_VISIBLE:
                    if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) {
                        HWND hed = GetDlgItem(m_hwnd, LOWORD(wParam));
                        if (hed != GetFocus()) {
                            return FALSE;
                        }
                        repaint(hed);
                        parent->setChange();
                        break;
                    }
                    break;
                case IDC_CHB_OSD_USER:
                    if (!getCheck(IDC_CHB_OSD_USER)) {
                        lv2osdFormat();
                    } else {
                        cfgSet(IDFF_OSDformat, _l("user"));
                    }
                    osd2dlg();
                    parent->setChange();
                    break;
                case IDC_ED_OSD_USER:
                    if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) {
                        char_t ed[1020]; //4 chars are reserved for "user" prefix
                        GetDlgItemText(m_hwnd, IDC_ED_OSD_USER, ed, 1020);
                        char_t format[1024];
                        tsnprintf_s(format, 1024, _TRUNCATE, _l("user%s"), ed);
                        cfgSet(IDFF_OSDformat, format);
                        parent->setChange();
                    };
                    break;
                case IDC_ED_OSD_SAVE:
                    if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) {
                        char_t saveflnm[MAX_PATH];
                        GetDlgItemText(m_hwnd, IDC_ED_OSD_SAVE, saveflnm, MAX_PATH);
                        cfgSet(IDFF_OSDsaveFlnm, saveflnm);
                        return TRUE;
                    }
                    return TRUE;
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr = LPNMHDR(lParam);
            if (!nostate && nmhdr->hwndFrom == hlv && nmhdr->idFrom == IDC_LV_OSD_LINES)
                switch (nmhdr->code) {
                    case LVN_ITEMCHANGED: {
                        LPNMLISTVIEW nmlv = LPNMLISTVIEW(lParam);
                        if (nmlv->uChanged & LVIF_STATE && ((nmlv->uOldState & 4096) != (nmlv->uNewState & 4096))) {
                            lv2osdFormat();
                        }
                        return TRUE;
                    }
                    case LVN_BEGINDRAG: {
                        if (!user) {
                            LPNMLISTVIEW nmlv = LPNMLISTVIEW(lParam);
                            if (nmlv->iItem != -1) {
                                dragitem = nmlv->iItem;
                                SetCapture(m_hwnd);
                            }
                        }
                        break;
                    }
                    case NM_DBLCLK: {
                        if (user) {
                            LPNMITEMACTIVATE nmia = LPNMITEMACTIVATE(lParam);
                            if (nmia->iItem != -1) {
                                const char_t *shortcut = deci->getInfoItemShortcut((int)lvGetItemParam(IDC_LV_OSD_LINES, nmia->iItem));
                                if (shortcut && shortcut[0]) {
                                    char_t osd[1020];
                                    tsnprintf_s(osd, countof(osd), _TRUNCATE, _l("%%%s"), shortcut);
                                    SendDlgItemMessage(m_hwnd, IDC_ED_OSD_USER, EM_REPLACESEL, TRUE, LPARAM(osd));
                                }
                            }
                        }
                        break;
                    }
                }
            break;
        }
        case WM_MOUSEMOVE:
            if (dragitem != -1) {
                LVHITTESTINFO lvhti;
                lvhti.pt.x = LOWORD(lParam) - lvx;
                lvhti.pt.y = HIWORD(lParam) - lvy;
                int target = ListView_HitTest(hlv, &lvhti);
                if (target != -1) {
                    lvSwapItems(IDC_LV_OSD_LINES, target, dragitem);
                    lv2osdFormat();
                    dragitem = target;
                }
                return TRUE;
            }
            break;
        case WM_LBUTTONUP:
            if (dragitem != -1) {
                dragitem = -1;
                ReleaseCapture();
                return TRUE;
            }
            break;
    }
    return TconfPageDec::msgProc(uMsg, wParam, lParam);
}
Beispiel #8
0
INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
	switch (msg)
	{
		case WM_INITDIALOG:
		{
#ifndef _APP_NO_DARKTHEME
			_r_wnd_setdarktheme (hwnd);
#endif // _APP_NO_DARKTHEME

			// configure listview
			_r_listview_setstyle (hwnd, IDC_LISTVIEW, LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP);

			_r_listview_addcolumn (hwnd, IDC_LISTVIEW, 1, nullptr, 39, LVCFMT_LEFT);
			_r_listview_addcolumn (hwnd, IDC_LISTVIEW, 2, nullptr, 61, LVCFMT_RIGHT);

			for (UINT i = 0; i < TypeMax; i++)
				_r_listview_additem (hwnd, IDC_LISTVIEW, i, 0, nullptr);

			// configure datetime format
			{
				WCHAR date_format[MAX_PATH] = {0};
				WCHAR time_format[MAX_PATH] = {0};

				if (
					GetLocaleInfo (LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, date_format, _countof (date_format)) &&
					GetLocaleInfo (LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT, time_format, _countof (time_format))
					)
				{
					WCHAR buffer[MAX_PATH] = {0};
					StringCchPrintf (buffer, _countof (buffer), L"%s %s", date_format, time_format);

					SendDlgItemMessage (hwnd, IDC_INPUT, DTM_SETFORMAT, 0, (LPARAM)buffer);
				}
			}

			// print latest timestamp
			{
				SYSTEMTIME st = {0};

				current_timestamp_utc = app.ConfigGet (L"LatestTimestamp", _r_unixtime_now ()).AsLonglong ();

				//_app_gettime (current_timestamp_utc, 0, &st);
				//_app_printdate (hwnd, &st);
			}

			_r_ctrl_settip (hwnd, IDC_CURRENT, LPSTR_TEXTCALLBACK);

			break;
		}

		case WM_DESTROY:
		{
			// save latest timestamp
			{
				SYSTEMTIME st = {0};
				//SendDlgItemMessage (hwnd, IDC_INPUT, DTM_GETSYSTEMTIME, 0, (LPARAM)&st);

				_app_gettime (current_timestamp_utc, 0, &st);

				app.ConfigSet (L"LatestTimestamp", _r_unixtime_from_systemtime (&st));
			}

			PostQuitMessage (0);

			break;
		}

		case RM_INITIALIZE:
		{
			// configure menu
			CheckMenuItem (GetMenu (hwnd), IDM_ALWAYSONTOP_CHK, MF_BYCOMMAND | (app.ConfigGet (L"AlwaysOnTop", false).AsBool () ? MF_CHECKED : MF_UNCHECKED));
			CheckMenuItem (GetMenu (hwnd), IDM_CHECKUPDATES_CHK, MF_BYCOMMAND | (app.ConfigGet (L"CheckUpdates", true).AsBool () ? MF_CHECKED : MF_UNCHECKED));
			CheckMenuItem (GetMenu (hwnd), IDM_CLASSICUI_CHK, MF_BYCOMMAND | (app.ConfigGet (L"ClassicUI", _APP_CLASSICUI).AsBool () ? MF_CHECKED : MF_UNCHECKED));

			// configure timezone
			{
				const HMENU submenu_timezone = GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), TIMEZONE_MENU);

				// clear menu
				for (UINT i = 0;; i++)
				{
					if (!DeleteMenu (submenu_timezone, TIMEZONE_MENU + i, MF_BYCOMMAND))
					{
						DeleteMenu (submenu_timezone, 0, MF_BYPOSITION); // delete separator
						break;
					}
				}

				const LONG current_bias = _app_getcurrentbias ();
				const LONG default_bias = _app_getdefaultbias ();

				for (size_t i = 0; i < _countof (int_timezones); i++)
				{
					const LONG bias = int_timezones[i];

					MENUITEMINFO mii = {0};

					WCHAR menu_title[32] = {0};
					StringCchPrintf (menu_title, _countof (menu_title), L"GMT %s", _app_timezone2string (bias, true, L"+00:00 (UTC)").GetString ());

					if (bias == default_bias)
						StringCchCat (menu_title, _countof (menu_title), SYSTEM_BIAS);

					mii.cbSize = sizeof (mii);
					mii.fMask = MIIM_ID | MIIM_STRING;
					mii.fType = MFT_STRING;
					mii.fState = MFS_DEFAULT;
					mii.dwTypeData = menu_title;
					mii.wID = IDX_TIMEZONE + UINT (i);

					InsertMenuItem (submenu_timezone, mii.wID, FALSE, &mii);

					if (bias == current_bias)
					{
						current_bias_idx = i;

						CheckMenuRadioItem (submenu_timezone, IDX_TIMEZONE, IDX_TIMEZONE + UINT (_countof (int_timezones) - 1), mii.wID, MF_BYCOMMAND);
					}
				}

				SYSTEMTIME st = {0};

				_app_gettime (current_timestamp_utc, current_bias, &st);
				_app_printdate (hwnd, &st);
			}

			break;
		}

		case RM_LOCALIZE:
		{
			// configure menu
			const HMENU menu = GetMenu (hwnd);

			app.LocaleMenu (menu, IDS_FILE, 0, true, nullptr);
			app.LocaleMenu (menu, IDS_EXIT, IDM_EXIT, false, L"\tEsc");
			app.LocaleMenu (menu, IDS_SETTINGS, 1, true, nullptr);
			app.LocaleMenu (menu, IDS_ALWAYSONTOP_CHK, IDM_ALWAYSONTOP_CHK, false, nullptr);
			app.LocaleMenu (menu, IDS_CHECKUPDATES_CHK, IDM_CHECKUPDATES_CHK, false, nullptr);
			app.LocaleMenu (menu, IDS_CLASSICUI_CHK, IDM_CLASSICUI_CHK, false, nullptr);
			app.LocaleMenu (GetSubMenu (menu, 1), IDS_TIMEZONE, TIMEZONE_MENU, true, nullptr);
			app.LocaleMenu (GetSubMenu (menu, 1), IDS_LANGUAGE, LANG_MENU, true, L" (Language)");
			app.LocaleMenu (menu, IDS_HELP, 2, true, nullptr);
			app.LocaleMenu (menu, IDS_WEBSITE, IDM_WEBSITE, false, nullptr);
			app.LocaleMenu (menu, IDS_CHECKUPDATES, IDM_CHECKUPDATES, false, nullptr);
			app.LocaleMenu (menu, IDS_ABOUT, IDM_ABOUT, false, L"\tF1");

			app.LocaleEnum ((HWND)GetSubMenu (menu, 1), LANG_MENU, true, IDX_LANGUAGE); // enum localizations

			// configure listview
			for (UINT i = 0; i < TypeMax; i++)
				_r_listview_setitem (hwnd, IDC_LISTVIEW, i, 0, _app_gettimedescription ((EnumDateType)i, false));

			_r_wnd_addstyle (hwnd, IDC_CURRENT, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE);

			RedrawWindow (hwnd, nullptr, nullptr, RDW_ERASENOW | RDW_INVALIDATE);

			break;
		}

		case WM_CONTEXTMENU:
		{
			if (GetDlgCtrlID ((HWND)wparam) == IDC_LISTVIEW)
			{
				const HMENU menu = LoadMenu (nullptr, MAKEINTRESOURCE (IDM_LISTVIEW));
				const HMENU submenu = GetSubMenu (menu, 0);

				// localize
				app.LocaleMenu (submenu, IDS_COPY, IDM_COPY, false, L"\tCtrl+C");

				if (!SendDlgItemMessage (hwnd, IDC_LISTVIEW, LVM_GETSELECTEDCOUNT, 0, 0))
					EnableMenuItem (submenu, IDM_COPY, MF_BYCOMMAND | MF_DISABLED);

				POINT pt = {0};
				GetCursorPos (&pt);

				TrackPopupMenuEx (submenu, TPM_RIGHTBUTTON | TPM_LEFTBUTTON, pt.x, pt.y, hwnd, nullptr);

				DestroyMenu (menu);
			}

			break;
		}

		case WM_NOTIFY:
		{
			switch (LPNMHDR (lparam)->code)
			{
				case DTN_USERSTRING:
				{
					LPNMDATETIMESTRING lpds = (LPNMDATETIMESTRING)lparam;

					if (lpds)
					{
						const rstring datetime = lpds->pszUserString;

						if (datetime.IsNumeric ())
							_r_unixtime_to_systemtime (datetime.AsLonglong (), &lpds->st);
					}

					break;
				}

				case DTN_DATETIMECHANGE:
				{
					LPNMDATETIMECHANGE lpnmdtc = (LPNMDATETIMECHANGE)lparam;

					current_timestamp_utc = _r_unixtime_from_systemtime (&lpnmdtc->st); // store position of current time (utc)

					_app_printdate (hwnd, &lpnmdtc->st);

					break;
				}

				case LVN_GETINFOTIP:
				{
					LPNMLVGETINFOTIP lpnmlv = (LPNMLVGETINFOTIP)lparam;

					StringCchCopy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettimedescription ((EnumDateType)lpnmlv->iItem, true));

					break;
				}

				case TTN_GETDISPINFO:
				{
					LPNMTTDISPINFO lpnmdi = (LPNMTTDISPINFO)lparam;

					if ((lpnmdi->uFlags & TTF_IDISHWND) != 0)
					{
						WCHAR buffer[1024] = {0};
						const UINT ctrl_id = GetDlgCtrlID ((HWND)lpnmdi->hdr.idFrom);

						if (ctrl_id == IDC_CURRENT)
							StringCchCopy (buffer, _countof (buffer), app.LocaleString (IDS_CURRENT, nullptr));

						if (buffer[0])
							lpnmdi->lpszText = buffer;
					}

					break;
				}
			}

			break;
		}

		case WM_COMMAND:
		{
			if (HIWORD (wparam) == 0 && LOWORD (wparam) >= IDX_LANGUAGE && LOWORD (wparam) <= IDX_LANGUAGE + app.LocaleGetCount ())
			{
				app.LocaleApplyFromMenu (GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), LANG_MENU), LOWORD (wparam), IDX_LANGUAGE);

				return FALSE;
			}
			else if ((LOWORD (wparam) >= IDX_TIMEZONE && LOWORD (wparam) <= IDX_TIMEZONE + (_countof (int_timezones) - 1)))
			{
				const UINT idx = LOWORD (wparam) - IDX_TIMEZONE;
				const LONG bias = int_timezones[idx];

				current_bias_idx = idx;
				app.ConfigSet (L"TimezoneBias", bias);

				const HMENU submenu_timezone = GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), TIMEZONE_MENU);
				CheckMenuRadioItem (submenu_timezone, IDX_TIMEZONE, IDX_TIMEZONE + UINT (_countof (int_timezones) - 1), LOWORD (wparam), MF_BYCOMMAND);

				SYSTEMTIME st = {0};

				_app_gettime (current_timestamp_utc, bias, &st);
				_app_printdate (hwnd, &st);

				return FALSE;
			}

			switch (LOWORD (wparam))
			{
				case IDCANCEL: // process Esc key
				case IDM_EXIT:
				{
					DestroyWindow (hwnd);
					break;
				}

				case IDM_ALWAYSONTOP_CHK:
				{
					const bool new_val = !app.ConfigGet (L"AlwaysOnTop", false).AsBool ();

					CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED));
					app.ConfigSet (L"AlwaysOnTop", new_val);

					_r_wnd_top (hwnd, new_val);

					break;
				}

				case IDM_CHECKUPDATES_CHK:
				{
					const bool new_val = !app.ConfigGet (L"CheckUpdates", true).AsBool ();

					CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED));
					app.ConfigSet (L"CheckUpdates", new_val);

					break;
				}

				case IDM_CLASSICUI_CHK:
				{
					const bool new_val = !app.ConfigGet (L"ClassicUI", _APP_CLASSICUI).AsBool ();

					CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED));
					app.ConfigSet (L"ClassicUI", new_val);

					break;
				}

				case IDM_WEBSITE:
				{
					ShellExecute (hwnd, nullptr, _APP_WEBSITE_URL, nullptr, nullptr, SW_SHOWDEFAULT);
					break;
				}

				case IDM_CHECKUPDATES:
				{
					app.UpdateCheck (true);
					break;
				}

				case IDM_ABOUT:
				{
					app.CreateAboutWindow (hwnd);
					break;
				}

				case IDM_COPY:
				{
					rstring buffer;

					size_t item = LAST_VALUE;

					while ((item = (size_t)SendDlgItemMessage (hwnd, IDC_LISTVIEW, LVM_GETNEXTITEM, item, LVNI_SELECTED)) != LAST_VALUE)
					{
						buffer.AppendFormat (L"%s\r\n", _r_listview_getitemtext (hwnd, IDC_LISTVIEW, item, 1).GetString ());
					}

					if (!buffer.IsEmpty ())
					{
						buffer.Trim (L"\r\n");

						_r_clipboard_set (hwnd, buffer, buffer.GetLength ());
					}

					break;
				}

				case IDC_CURRENT:
				{
					SYSTEMTIME st = {0};

					_app_gettime (_r_unixtime_now (), _app_getcurrentbias (), &st);
					_app_printdate (hwnd, &st);

					break;
				}

				case IDM_SELECT_ALL:
				{
					ListView_SetItemState (GetDlgItem (hwnd, IDC_LISTVIEW), -1, LVIS_SELECTED, LVIS_SELECTED);
					break;
				}

				case IDM_TIMEZONE_NEXT:
				case IDM_TIMEZONE_PREV:
				{
					if (LOWORD (wparam) == IDM_TIMEZONE_NEXT)
						current_bias_idx = ((current_bias_idx == (_countof (int_timezones) - 1)) ? 0 : ++current_bias_idx);

					else
						current_bias_idx = (!current_bias_idx ? (_countof (int_timezones) - 1) : --current_bias_idx);

					SendMessage (hwnd, WM_COMMAND, MAKEWPARAM (IDX_TIMEZONE + current_bias_idx, 0), 0);

					break;
				}
			}
		}
	}

	return FALSE;
}
Beispiel #9
0
INT_PTR TconvolverPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            cfgSet(IDFF_lvConvolverWidth0,ListView_GetColumnWidth(hlv,0));
            cfgSet(IDFF_lvConvolverWidth1,ListView_GetColumnWidth(hlv,1));
            cfgSet(IDFF_lvConvolverWidth2,ListView_GetColumnWidth(hlv,2));
            cfgSet(IDFF_lvConvolverSelected,lvGetSelItem(IDC_LV_CONVOLVER_FILES));
            break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_ED_CONVOLVER_FILE:
                    if (HIWORD(wParam)==EN_CHANGE && !isSetWindowText) {
                        char_t flnm[MAX_PATH];
                        GetDlgItemText(m_hwnd,IDC_ED_CONVOLVER_FILE,flnm,MAX_PATH);
                        cfgSet(IDFF_convolverFile,flnm);
                        format2dlg(flnm);
                    }
                    return TRUE;
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_CONVOLVER_FILES)
                switch (nmhdr->code) {
                    case LVN_ITEMCHANGED: {
                        NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam);
                        enableMapping(nmlv->iItem!=-1);
                        return TRUE;
                    }
                    case NM_DBLCLK: {
                        NMITEMACTIVATE *nmia=(NMITEMACTIVATE*)lParam;
                        if (nmia->iItem==-1 || nmia->iSubItem!=1) {
                            return FALSE;
                        }
                        onManualFileSet();
                        return TRUE;
                    }
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        int i=nmdi->item.iItem;
                        if (i==-1) {
                            break;
                        }
                        if (nmdi->item.mask&LVIF_TEXT)
                            switch (nmdi->item.iSubItem) {
                                case 0: {
                                    static const int speakers[]= {SPEAKER_FRONT_LEFT,SPEAKER_FRONT_RIGHT,SPEAKER_FRONT_CENTER,SPEAKER_LOW_FREQUENCY,SPEAKER_BACK_LEFT,SPEAKER_BACK_RIGHT};
                                    strcpy(nmdi->item.pszText,_(IDC_LV_CONVOLVER_FILES,TsampleFormat::getSpeakerName(speakers[i])));
                                    break;
                                }
                                case 1: {
                                    int dx=ListView_GetColumnWidth(hlv,1);
                                    char_t flnm[MAX_PATH];
                                    cfgGet(speakersIdffs[i],flnm,MAX_PATH);
                                    HDC dc=GetDC(hlv);
                                    HGDIOBJ old=SelectObject(dc,(HGDIOBJ)SendMessage(hlv,WM_GETFONT,0,0));
                                    PathCompactPath(dc,flnm,std::max(20,dx-15));
                                    SelectObject(dc,old);
                                    ReleaseDC(hlv,dc);
                                    strcpy(nmdi->item.pszText,flnm);
                                    break;
                                }
                                case 2:
                                    if (const char_t *flnm=cfgGetStr(speakersIdffs[i]))
                                        if (flnm[0] && !speakerFormats[i]) {
                                            speakerFormats[i]=getWavDesc(flnm,IDC_LV_CONVOLVER_FILES);
                                        }
                                    strcpy(nmdi->item.pszText,speakerFormats[i].c_str());
                                    break;
                            }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return TconfPageDecAudio::msgProc(uMsg,wParam,lParam);
}
Beispiel #10
0
INT_PTR CALLBACK DlgLangpackOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	HWND hwndList = GetDlgItem(hwndDlg, IDC_LANGUAGES);

	switch (msg) {
	case WM_INITDIALOG:
		TranslateDialogDefault(hwndDlg);
		ComboBox_ResetContent(hwndList);
		EnumLangpacks(InsertPackItemEnumProc, (WPARAM)hwndList, (LPARAM)0);
		return TRUE;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_LANGEMAIL:
			{
				char buf[512];
				mir_strcpy(buf, "mailto:");
				if (GetDlgItemTextA(hwndDlg, LOWORD(wParam), &buf[7], _countof(buf) - 7))
					Utils_OpenUrl(buf);
			}
			break;

		case IDC_MORELANG:
			Utils_OpenUrl("http://wiki.miranda-ng.org/index.php?title=Langpacks/en#Download");
			break;

		case IDC_LANGUAGES:
			if (HIWORD(wParam) == CBN_SELCHANGE) {
				int idx = ComboBox_GetCurSel(hwndList);
				LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, idx);
				DisplayPackInfo(hwndDlg, pack);
				if (!(pack->flags & LPF_ENABLED))
					SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
				EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), (pack->flags & LPF_ENABLED) && !(pack->flags & LPF_DEFAULT));
			}
			break;

		case IDC_RELOAD:
			{
				EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), FALSE);
				int idx = ComboBox_GetCurSel(hwndList);
				LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, idx);
				ReloadLangpack(pack->tszFullPath);
				DisplayPackInfo(hwndDlg, pack);
				EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), TRUE);
			}
			break;
		}
		break;

	case WM_NOTIFY:
		if (LPNMHDR(lParam)->code == PSN_APPLY) {
			TCHAR tszPath[MAX_PATH]; tszPath[0] = 0;
			int idx = ComboBox_GetCurSel(hwndList);
			int count = ComboBox_GetCount(hwndList);
			for (int i = 0; i < count; i++) {
				LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, i);
				if (i == idx) {
					db_set_ts(NULL, "Langpack", "Current", pack->tszFileName);
					mir_tstrcpy(tszPath, pack->tszFullPath);
					pack->flags |= LPF_ENABLED;
				}
				else pack->flags &= ~LPF_ENABLED;
			}

			if (tszPath[0]) {
				ReloadLangpack(tszPath);

				if (LPPSHNOTIFY(lParam)->lParam == IDC_APPLY) {
					HWND hwndParent = GetParent(hwndDlg);
					PostMessage(hwndParent, WM_CLOSE, 1, 0);
					mir_forkthread(ReloadOptions, hwndParent);
				}
			}
		}
		break;

	case WM_DESTROY:
		int count = ListBox_GetCount(hwndList);
		for (int i = 0; i < count; i++)
			delete (LANGPACK_INFO*)ListBox_GetItemData(hwndList, i);
		ComboBox_ResetContent(hwndList);
		return TRUE;
	}
	return FALSE;
}
Beispiel #11
0
INT_PTR TffdshowPageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case IDC_CBX_PRESETS:
            if (HIWORD(wParam) == CBN_SELCHANGE) {
                char_t presetName[256], actPresetName[256];
                GetDlgItemText(m_hwnd, IDC_CBX_PRESETS, presetName, 255);
                deciD->getActivePresetName(actPresetName, 255);
                if (stricmp(presetName, actPresetName) != 0) {
                    selectPreset(presetName);
                }
                return TRUE;
            }
            break;
        }
        break;
    case WM_FFONNEWFILTERS: {
        for (ThtiPages::const_iterator hp = filterPages.begin(); hp != filterPages.end(); hp++)
            for (TconfPages::const_iterator i = (*hp)->begin(); i != (*hp)->end(); i++) {
                ((TconfPageDec*)(*i))->onNewFilter();
            }
        return TRUE;
    }
    case WM_NOTIFY: {
        NMHDR *nmhdr = LPNMHDR(lParam);
        if (nmhdr->hwndFrom == htv && nmhdr->idFrom == IDC_TV_TREE)
            switch (nmhdr->code) {
            case TVN_GETINFOTIP: {
                if (!cfgGet(IDFF_showHints)) {
                    return FALSE;
                }
                NMTVGETINFOTIP *nmtvit = LPNMTVGETINFOTIP(lParam);
                TconfPageBase *page = hti2page(nmtvit->hItem);
                char_t tipS[1024] = _l("");
                if (deciD->getFilterTipEx(page->filterID, page->filterPageID, tipS, 1023) != S_OK) {
                    page->getTip(tipS, 1023);
                }
                if (tipS[0] == '\0') {
                    return FALSE;
                }
                memset(nmtvit->pszText, 0, nmtvit->cchTextMax);
                ff_strncpy(nmtvit->pszText, tipS, nmtvit->cchTextMax - 1);
                return TRUE;
            }
            case NM_CUSTOMDRAW: {
                NMTVCUSTOMDRAW *tvcd = LPNMTVCUSTOMDRAW(lParam);
                int rcDy = tvcd->nmcd.rc.bottom - tvcd->nmcd.rc.top;
                if (tvcd->nmcd.dwDrawStage == CDDS_PREPAINT) {
                    setDlgResult(CDRF_NOTIFYITEMDRAW);
                    return TRUE;
                } else if (tvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT) {
                    TconfPageBase *page = ((ThtiPage*)tvcd->nmcd.lItemlParam)->getPage();
                    if (page->getInter() == -1 && page->getOrder() == -1) {
                        return FALSE;
                    }
                    setDlgResult(CDRF_NOTIFYPOSTPAINT);
                    return TRUE;
                } else if (tvcd->nmcd.dwDrawStage == CDDS_ITEMPOSTPAINT) {
                    RECT &tr = tvcd->nmcd.rc;
                    if (tr.right > tr.left && tr.bottom > tr.top) {
                        RECT rr;
                        TreeView_GetItemRect(htv, HTREEITEM(tvcd->nmcd.dwItemSpec), &rr, true);
                        rr.left -= 24;
                        TconfPageBase *page = ((ThtiPage*)tvcd->nmcd.lItemlParam)->getPage();
                        if (page->getInter() != -1) {
                            ImageList_Draw(hil, page->getInter() ? ilChecked : ilClear, tvcd->nmcd.hdc, tr.left + 8 + rr.left, tr.top + (rcDy - 16) / 2, ILD_TRANSPARENT);
                        }
                        if (isIn(page->getOrder(), deciD->getMinOrder2(), deciD->getMaxOrder2()) && (tvcd->nmcd.uItemState & CDIS_SELECTED)) {
                            int img;
                            HTREEITEM hti = page->hti;
                            HTREEITEM htiPrev = TreeView_GetPrevVisible(htv, hti), htiNext = TreeView_GetNextVisible(htv, hti);
                            int order = page->getOrder(), orderPrev = hti2page(htiPrev)->getOrder(), orderNext = hti2page(htiNext)->getOrder();
                            if (order == deciD->getMinOrder2()) {
                                img = ilArrowD;
                            } else if (order == deciD->getMaxOrder2()) {
                                img = ilArrowU;
                            } else {
                                img = ilArrowUD;
                            }
                            ImageList_DrawEx(hil, img, tvcd->nmcd.hdc, tr.left + 2 + rr.left, tr.top + (rcDy - 16) / 2, 5, 16, CLR_DEFAULT, CLR_DEFAULT, ILD_TRANSPARENT);
                        }
                    }
                    return TRUE;
                }
                return FALSE;
            }
            case NM_CLICK: {
                POINT ps;
                GetCursorPos(&ps);
                ScreenToClient(htv, &ps);
                TVHITTESTINFO tvhti;
                tvhti.pt = ps;
                HTREEITEM hti = TreeView_HitTest(htv, &tvhti);
                if (!hti) {
                    return FALSE;
                }
                RECT rr;
                TreeView_GetItemRect(htv, hti, &rr, TRUE);
                RECT r;
                TreeView_GetItemRect(htv, hti, &r, FALSE);
                ps.x -= rr.left - 24;
                int iconTop = ((r.bottom - r.top) - 16) / 2;
                ps.y -= r.top;
                if (ps.x >= 8 && ps.x <= 16 + 8 && ps.y >= iconTop + 2 && ps.y <= iconTop + 13) {
                    if (invInter(hti2page(hti), &r)) {
                        return TRUE;
                    }
                } else if (ps.x >= 2 && ps.x <= 7 && TreeView_GetSelection(htv) == tvhti.hItem) {
                    int center = (r.bottom - r.top) / 2;
                    if (ps.y > center - 6 && ps.y < center - 1 && page->getOrder() > deciD->getMinOrder2()) {
                        swap(-1);
                        return TRUE;
                    } else if (ps.y > center + 1 && ps.y < center + 6 && page->getOrder() < deciD->getMaxOrder2()) {
                        swap(1);
                        return TRUE;
                    }
                }
                return FALSE;
            }
            case TVN_BEGINDRAG: {
                NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam);
                dragpage = hti2page(nmtv->itemNew.hItem);
                int order = dragpage->getOrder();
                TreeView_SelectItem(htv, nmtv->itemNew.hItem);
                if (isIn(order, deciD->getMinOrder2(), deciD->getMaxOrder2())) {
                    SetCapture(m_hwnd);
                } else {
                    dragpage = NULL;
                }
                break;
            }
            }
        break;
    }
    case WM_MOUSEMOVE:
        if (dragpage) {
            TVHITTESTINFO tvhti;
            tvhti.pt.x = LOWORD(lParam) - tvx;
            tvhti.pt.y = HIWORD(lParam) - tvy;
            if (HTREEITEM htiTarget = TreeView_HitTest(htv, &tvhti)) {
                //TreeView_SelectDropTarget(htv,htiTarget);
                TconfPageBase *targetpage = hti2page(htiTarget);
                if (isIn(targetpage->getOrder(), deciD->getMinOrder2(), deciD->getMaxOrder2())) {
                    swap(dragpage, targetpage);
                }
            }
            return TRUE;
        }
        break;
    case WM_LBUTTONUP:
        if (dragpage) {
            dragpage = NULL;
            ReleaseCapture();
            return TRUE;
        }
        break;
    }
    return TffdshowPageBase::msgProc(uMsg, wParam, lParam);
}
Beispiel #12
0
v_NMHDRCode_Dispatch(TGeneric& i, void (TGeneric::*f)(uint), WPARAM, LPARAM p2)
{
  (i.*f)((LPNMHDR(p2))->code);
  return 0;
}
Beispiel #13
0
INT_PTR TdlgPropsEdit::msgProc(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch (uMsg) {
        case WM_INITDIALOG: {
            hlv=GetDlgItem(m_hwnd,IDC_LV_PROPS);
            int ncol=0;
            ListView_AddCol(hlv,ncol,300,_l("Original:/Translation"),false);
            ListView_SetItemCount(hlv,props.size()*2);
            ListView_SetExtendedListViewStyleEx(hlv,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
            return TRUE;
        }
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDOK:
                case IDCANCEL:
                    if (HWND(lParam)==GetDlgItem(m_hwnd,IDOK) || HWND(lParam)==GetDlgItem(m_hwnd,IDCANCEL)) {
                        EndDialog(m_hwnd,LOWORD(wParam));
                        return TRUE;
                    }
                    break;
            };
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (nmhdr->idFrom==IDC_LV_PROPS)
                switch (nmhdr->code) {
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        int i=nmdi->item.iItem;
                        if (i==-1) {
                            break;
                        }
                        if (nmdi->item.mask&LVIF_TEXT)
                            switch (nmdi->item.iSubItem) {
                                case 0: {
                                    //strcpy(nmdi->item.pszText,((i&1)==0)?props[i/2].first.c_str():props[i/2].second.c_str());
                                    nmdi->item.pszText=(LPTSTR)((i&1)==0?props[i/2].first.c_str():props[i/2].second.c_str());
                                    break;
                                }
                            }
                        return TRUE;
                    }
                    case NM_CUSTOMDRAW: {
                        NMLVCUSTOMDRAW *lvcd=LPNMLVCUSTOMDRAW(lParam);
                        if (lvcd->nmcd.dwDrawStage==CDDS_PREPAINT) {
                            setDlgResult(CDRF_NOTIFYITEMDRAW);
                            return TRUE;
                        }
                        if (lvcd->nmcd.dwDrawStage==CDDS_ITEMPREPAINT) {
                            if (!italicFont) {
                                LOGFONT oldFont;
                                HFONT hf=(HFONT)GetCurrentObject(lvcd->nmcd.hdc,OBJ_FONT);
                                GetObject(hf,sizeof(LOGFONT),&oldFont);
                                oldFont.lfItalic=TRUE;
                                italicFont=CreateFontIndirect(&oldFont);
                            }
                            if ((lvcd->nmcd.dwItemSpec&1)==0) {
                                SelectObject(lvcd->nmcd.hdc,italicFont);
                            }
                            setDlgResult(CDRF_NEWFONT);
                            return TRUE;
                        }
                        return TRUE;
                    }
                    case LVN_BEGINLABELEDIT: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        if ((nmdi->item.iItem&1)==0) {
                            setDlgResult(TRUE);
                            return TRUE;
                        }
                        break;
                    }
                    case LVN_ENDLABELEDIT: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        if (nmdi->item.pszText) {
                            props[nmdi->item.iItem/2].second=nmdi->item.pszText;
                            setDlgResult(TRUE);
                            return TRUE;
                        }
                        break;
                    }
                    case LVN_KEYDOWN: {
                        NMLVKEYDOWN *nmkd=(NMLVKEYDOWN*)lParam;
                        if (nmkd->wVKey==VK_F2) {
                            ListView_EditLabel(hlv,ListView_GetNextItem(hlv,-1,LVNI_SELECTED));
                            return TRUE;
                        }
                        break;
                    }
                }
            break;
        }
    }
    return Twindow::msgProc(uMsg,wParam,lParam);
}
Beispiel #14
0
INT_PTR TpresetsPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            cfgSet(IDFF_lvWidth0,ListView_GetColumnWidth(hlv,0));
            if (italicFont) {
                DeleteObject(italicFont);
            }
            italicFont=NULL;
            if (boldFont) {
                DeleteObject(boldFont);
            }
            boldFont=NULL;
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_PRESETS)
                switch (nmhdr->code) {
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        int i=nmdi->item.iItem;
                        if (i==-1) {
                            break;
                        }
                        if (nmdi->item.mask&LVIF_TEXT) {
                            strcpy(nmdi->item.pszText,(*parent->localPresets)[i]->presetName);
                        }
                        return TRUE;
                    }
                    case LVN_ITEMCHANGED: {
                        if (nochange) {
                            break;
                        }
                        NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam);
                        if (nmlv->iItem==-1) {
                            return TRUE;
                        }
                        char_t presetName[1024];
                        ListView_GetItemText(hlv,nmlv->iItem,0,presetName,1023);
                        applying=true;
                        parent->selectPreset(presetName);
                        cfg2dlg();
                        applying=false;
                        return TRUE;
                    }
                    case LVN_KEYDOWN: {
                        NMLVKEYDOWN *nmkd=(NMLVKEYDOWN*)lParam;
                        switch (nmkd->wVKey) {
                            case VK_F2:
                                ListView_EditLabel(hlv,ListView_GetNextItem(hlv,-1,LVNI_SELECTED));
                                return TRUE;
                            case VK_SPACE:
                                changePresetState();
                                return TRUE;
                        }
                        break;
                    }
                    case NM_DBLCLK:
                    case NM_CLICK: {
                        NMITEMACTIVATE *nmia=LPNMITEMACTIVATE(lParam);
                        if (nmia->iItem==-1) {
                            char_t activePresetName[MAX_PATH];
                            deciD->getActivePresetName(activePresetName, countof(activePresetName));
                            applying=true;
                            parent->selectPreset(activePresetName);
                            cfg2dlg();
                            applying=false;
                        } else if (nmhdr->code==NM_DBLCLK) {
                            changePresetState();
                        }
                        return TRUE;
                    }
                    case LVN_ENDLABELEDIT: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        if (!nmdi->item.pszText) {
                            return FALSE;
                        }
                        if (parent->localPresets->getPreset(nmdi->item.pszText,false)==NULL && Tpreset::isValidPresetName(nmdi->item.pszText)) {
                            setDlgResult(TRUE);
                            ffstring presetName;
                            Tpreset::normalizePresetName(presetName,nmdi->item.pszText);
                            renamePreset(presetName.c_str());
                        } else {
                            setDlgResult(FALSE);
                        }
                    }
                    case NM_CUSTOMDRAW: {
                        NMLVCUSTOMDRAW *lvcd=LPNMLVCUSTOMDRAW(lParam);
                        if (lvcd->nmcd.dwDrawStage==CDDS_PREPAINT) {
                            setDlgResult(CDRF_NOTIFYITEMDRAW);
                            return TRUE;
                        }
                        if (lvcd->nmcd.dwDrawStage==CDDS_ITEMPREPAINT) {
                            if (!italicFont) {
                                LOGFONT oldFont;
                                HFONT hf=(HFONT)GetCurrentObject(lvcd->nmcd.hdc,OBJ_FONT);
                                GetObject(hf,sizeof(LOGFONT),&oldFont);
                                oldFont.lfItalic=TRUE;
                                italicFont=CreateFontIndirect(&oldFont);
                                oldFont.lfItalic=FALSE;
                                oldFont.lfWeight=FW_BLACK;
                                boldFont=CreateFontIndirect(&oldFont);
                            }
                            Tpreset *preset=(*parent->localPresets)[lvcd->nmcd.dwItemSpec];
                            if (preset->autoLoadedFromFile) {
                                SelectObject(lvcd->nmcd.hdc,italicFont);
                            }
                            const char_t *defaultPreset=cfgGetStr(IDFF_defaultPreset);
                            if (stricmp(defaultPreset,preset->presetName)==0) {
                                SelectObject(lvcd->nmcd.hdc,boldFont);
                            }
                            setDlgResult(/*CDRF_NOTIFYPOSTPAINT*/CDRF_NEWFONT);
                            return TRUE;
                        }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return TconfPageDec::msgProc(uMsg,wParam,lParam);
}
Beispiel #15
0
INT_PTR TffdshowPageBase::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY: {
            for (ThtiPages::const_iterator htiPage = htiPages.begin(); htiPage != htiPages.end(); htiPage++) {
                delete *htiPage;
            }
            htiPages.clear();
            page = NULL;
            if (arrowsFont) {
                DeleteObject(arrowsFont);
            }
            arrowsFont = NULL;
            if (hil) {
                ImageList_Destroy(hil);
            }
            hil = NULL;
            for (int i = 0; i < countof(bmp1); i++) {
                DeleteObject(bmp1[i]);
                DeleteObject(bmp2[i]);
            }
            break;
        }
        case WM_FFONCHANGE:
            DPRINTF(_l("onChangeParam"));
            if (wParam == IDFF_alwaysOnTop && IsWindow(dlg)) {
                SetWindowPos(dlg, lParam ? HWND_TOPMOST : HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
            }
            if (wParam != 0) {
                setChange();
            }
            return TRUE;
        case WM_FFONFRAME: {
            MSG msg;
            if (PeekMessage(&msg, m_hwnd, WM_FFONFRAME, WM_FFONFRAME, PM_NOREMOVE)) {
                return TRUE;    // drop msg when next WM_FFONFRAME is already in the message queue.
            }
            for (ThtiPages::const_iterator hp = htiPages.begin(); hp != htiPages.end(); hp++)
                for (TconfPages::const_iterator i = (*hp)->begin(); i != (*hp)->end(); i++)
                    if ((*i)->m_hwnd) {
                        (*i)->onFrame();
                    }
            return TRUE;
        }
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_BT_HELP:
                    if (HIWORD(wParam) == BN_CLICKED) {
                        onHelp();
                        return TRUE;
                    }
                    break;
            }
            break;
        case WM_CONTEXTMENU:
            if (translateTV()) {
                return TRUE;
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr = LPNMHDR(lParam);
            if (nmhdr->hwndFrom == htv && nmhdr->idFrom == IDC_TV_TREE)
                switch (nmhdr->code) {
                    case TVN_SELCHANGED: {
                        NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam);
                        if (nmtv->itemNew.hItem) {
                            selectPage(hti2page(nmtv->itemNew.hItem));
                            return TRUE;
                        }
                        break;
                    }
                    case TVN_ITEMEXPANDING: {
                        NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam);
                        if (nmtv->action == TVE_COLLAPSE) {
                            setDlgResult(TRUE);
                        }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return Twindow::msgProc(uMsg, wParam, lParam);
}
Beispiel #16
0
INT_PTR TcodecsPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_DESTROY:
            cfgSet(IDFF_lvCodecsWidth0,ListView_GetColumnWidth(hlv,0));
            cfgSet(IDFF_lvCodecsWidth1,ListView_GetColumnWidth(hlv,1));
            cfgSet(IDFF_lvCodecsWidth2,ListView_GetColumnWidth(hlv,2));
            cfgSet(IDFF_lvCodecsSelected,lvGetSelItem(IDC_LV_INCODECS));
            break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_CBX_INCODECS:
                    if (HIWORD(wParam)==CBN_SELCHANGE && IsWindowVisible(hcbx)) {
                        int ii=lvGetSelItem(IDC_LV_INCODECS);
                        int idff=formats[ii].idff;
                        cfgSet(idff,(int)cbxGetCurItemData(IDC_CBX_INCODECS));
                        options2dlg(ii);
                        return TRUE;
                    }
                    break;
                case IDC_CHB_CODEC_OPT1:
                case IDC_CHB_CODEC_OPT2:
                case IDC_CHB_CODEC_OPT3:
                case IDC_CHB_CODEC_OPT4:
                    dlg2options(LOWORD(wParam));
                    return TRUE;
            }
            break;
        case WM_NOTIFY: {
            NMHDR *nmhdr=LPNMHDR(lParam);
            if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_INCODECS)
                switch (nmhdr->code) {
                    case LVN_GETDISPINFO: {
                        NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam;
                        int i=nmdi->item.iItem;
                        if (i==-1) {
                            break;
                        }
                        if (nmdi->item.mask&LVIF_TEXT)
                            switch (nmdi->item.iSubItem) {
                                case 0:
                                    strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].descr));
                                    break;
                                case 1:
                                    strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].getDecoderName(cfgGet(formats[i].idff))));
                                    break;
                                case 2:
                                    strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].hint));
                                    break;
                            }
                        return TRUE;
                    }
                    case LVN_GETINFOTIP: {
                        NMLVGETINFOTIP *nmit=(NMLVGETINFOTIP*)lParam;
                        if (nmit->iItem!=-1 && nmit->iSubItem==0) {
                            ff_strncpy(nmit->pszText,formats[nmit->iItem].hint,nmit->cchTextMax);
                        }
                        return TRUE;
                    }
                    case LVN_ITEMCHANGED: {
                        NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam);
                        if (nmlv->iItem!=curitem) {
                            curitem=-1;
                            show(false,IDC_CBX_INCODECS);
                            options2dlg(nmlv->iItem);
                        }
                        return TRUE;
                    }
                    case NM_CLICK: {
                        NMITEMACTIVATE *nmia=LPNMITEMACTIVATE(lParam);
                        if (nmia->iItem!=-1 && nmia->iSubItem==1) {
                            beginCodecChange(nmia->iItem);
                        } else {
                            show(false,IDC_CBX_INCODECS);
                        }
                        return TRUE;
                    }
                }
            break;
        }
    }
    return TconfPageBase::msgProc(uMsg,wParam,lParam);
}