コード例 #1
0
ファイル: Cpresets.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TpresetsPage::onNew(int menuCmd)
{
    if (menuCmd==0) {
        HMENU hmn=LoadMenu(hi,MAKEINTRESOURCE(IDR_MENU_PRESET)),hmn2=_(GetSubMenu(hmn,0)) ;
        RECT r;
        GetWindowRect(GetDlgItem(m_hwnd,IDC_BT_PRESET_NEW_MENU),&r);
        menuCmd=TrackPopupMenu(hmn2,TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD,r.left-1,r.bottom,0,m_hwnd,0);
        DestroyMenu(hmn);
    }
    switch (menuCmd) {
        case ID_MNI_PRESET_NEWFROMDEFAULT: {
            addNewPreset((*parent->localPresets)[0]->copy());
            break;
        }
        case ID_MNI_PRESET_NEWFROMSELECTED: {
            addNewPreset((*parent->localPresets)[lvGetSelItem(IDC_LV_PRESETS)]->copy());
            break;
        }
        case ID_MNI_PRESET_NEW_FROMFILE: {
            strings files;
            if (dlgOpenFiles(m_hwnd,_(-IDD_PRESETS,_l("Load ffdshow preset")),presetfilter,presetext,files,_l("."),0))
                for (strings::const_iterator fileDlgFlnm=files.begin(); fileDlgFlnm!=files.end(); fileDlgFlnm++) {
                    Tpreset *newPreset=parent->localPresets->newPreset(NULL);
                    if (!newPreset->loadFile(fileDlgFlnm->c_str())) {
                        delete newPreset;
                    } else {
                        addNewPreset(newPreset);
                    }
                }
        }
        break;
    }
}
コード例 #2
0
ファイル: Ccodecs.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TcodecsPage::dlg2options(int id)
{
    int ii=lvGetSelItem(IDC_LV_INCODECS);
    if (isIn(ii,0,(int)formats.size())) {
        int optionId = 0;
        switch(id) {
            case IDC_CHB_CODEC_OPT1:
                optionId=0;
                break;
            case IDC_CHB_CODEC_OPT2:
                optionId=1;
                break;
            case IDC_CHB_CODEC_OPT3:
                optionId=2;
                break;
            case IDC_CHB_CODEC_OPT4:
                optionId=3;
                break;
        }
        const Tformat::Toption &o=formats[ii].options[optionId];
        int idff=o.id;
        int val=cfgGet(idff);
        if (getCheck(id)) {
            val|=o.val;
        } else {
            val&=~o.val;
        }
        cfgSet(idff,val);
    }
}
コード例 #3
0
ファイル: Cpresets.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TpresetsPage::onRename(int menuCmd)
{
    const char_t *AVIname=deci->getSourceName();
    if (menuCmd==0) {
        HMENU hmn=LoadMenu(hi,MAKEINTRESOURCE(IDR_MENU_PRESET)),hmn2=_(GetSubMenu(hmn,1));
        RECT r;
        GetWindowRect(GetDlgItem(m_hwnd,IDC_BT_PRESET_RENAME_MENU),&r);
        if (AVIname[0]=='\0') {
            EnableMenuItem(hmn2,1,MF_BYPOSITION|MF_GRAYED);
        }
        menuCmd=TrackPopupMenu(hmn2,TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD,r.left-1,r.bottom,0,m_hwnd,0);
        DestroyMenu(hmn);
    }
    int i=lvGetSelItem(IDC_LV_PRESETS);
    if (menuCmd==ID_MNI_PRESET_RENAMETOFILE) {
        char_t presetName[MAX_PATH];
        Tpreset::normalizePresetName(presetName, AVIname, countof(presetName));
        parent->localPresets->nextUniqueName(presetName, countof(presetName));
        renamePreset(presetName);
        InvalidateRect(hlv,NULL,FALSE);
    } else if (menuCmd==ID_MNI_PRESET_RENAMETOEXE) {
        char_t presetName[MAX_PATH];
        Tpreset::normalizePresetName(presetName, deci->getExeflnm(), countof(presetName));
        parent->localPresets->nextUniqueName(presetName, countof(presetName));
        renamePreset(presetName);
        InvalidateRect(hlv,NULL,FALSE);
    } else if (menuCmd==ID_MNI_PRESET_RENAME) {
        SetFocus(hlv);
        ListView_EditLabel(hlv,i);
    }
}
コード例 #4
0
ファイル: Ccodecs.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TcodecsPage::translate(void)
{
    TconfPageBase::translate();
    ListView_SetColumnText(hlv,0,_(IDC_LV_INCODECS,_l("Format")));
    ListView_SetColumnText(hlv,1,_(IDC_LV_INCODECS,_l("Decoder")));
    ListView_SetColumnText(hlv,2,_(IDC_LV_INCODECS,thirdCol));
    options2dlg(lvGetSelItem(IDC_LV_INCODECS));
}
コード例 #5
0
void TOSDpageDec::onLineDown(void)
{
    int ii = lvGetSelItem(IDC_LV_OSD_LINES);
    if (ii != -1 && ii < ListView_GetItemCount(hlv) - 1) {
        lvSwapItems(IDC_LV_OSD_LINES, ii, ii + 1);
        lv2osdFormat();
    }
}
コード例 #6
0
void TOSDpageDec::onLineUp(void)
{
    int ii = lvGetSelItem(IDC_LV_OSD_LINES);
    if (ii >= 1) {
        lvSwapItems(IDC_LV_OSD_LINES, ii, ii - 1);
        lv2osdFormat();
    }
}
コード例 #7
0
void TconvolverPage::onManualFileClear(void)
{
    int i=lvGetSelItem(IDC_LV_CONVOLVER_FILES);
    if (i!=-1) {
        cfgSet(speakersIdffs[i],_l(""));
        speakerFormats[i].clear();
        ListView_RedrawItems(hlv,i,i);
    }
}
コード例 #8
0
ファイル: Cpresets.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TpresetsPage::onSaveToFile(void)
{
    int i=lvGetSelItem(IDC_LV_PRESETS);
    char_t presetFlnm[MAX_PATH];
    _splitpath_s((*parent->localPresets)[i]->presetName, NULL, 0, NULL, 0, presetFlnm, countof(presetFlnm), NULL, 0);
    if (dlgGetFile(true,m_hwnd,_(-IDD_PRESETS,_l("Save ffdshow preset")),presetfilter,presetext,presetFlnm,_l("."),0)) {
        (*parent->localPresets)[i]->saveFile(presetFlnm);
    }
}
コード例 #9
0
void TconvolverPage::onManualFileSet(void)
{
    int i=lvGetSelItem(IDC_LV_CONVOLVER_FILES);
    if (i!=-1)
        if (ffstring flnm=selectFile(speakersIdffs[i])) {
            speakerFormats[i]=getWavDesc(flnm.c_str(),IDC_LV_CONVOLVER_FILES);
            ListView_RedrawItems(hlv,i,i);
        }
}
コード例 #10
0
void TconvolverPage::mapping2dlg(void)
{
    int mapping=cfgGet(IDFF_convolverMappingMode);
    setCheck(IDC_CHB_CONVOLVER_MAPPING,mapping);
    static const int idAuto[]= {IDC_LBL_CONVOLVER_FILE,IDC_ED_CONVOLVER_FILE,IDC_BT_CONVOLVER_FILE,IDC_LBL_CONVOLVER_WAV_FORMAT2,0};
    static const int idManual[]= {IDC_LV_CONVOLVER_FILES,IDC_BT_CONVOLVER_FILES_SET,IDC_BT_CONVOLVER_FILES_CLEAR,0};
    enable(mapping==0,idAuto);
    enable(mapping!=0,idManual);
    enableMapping(mapping!=0 && lvGetSelItem(IDC_LV_CONVOLVER_FILES)!=-1);
}
コード例 #11
0
ファイル: Ckeys.cpp プロジェクト: TheRyuu/ffdshow
void TkeysPage::beginKeyChange(void)
{
    if (keyChanging != -1) {
        return;
    }
    int i = lvGetSelItem(IDC_LV_KEYS);
    if (i == -1) {
        return;
    }
    keyChanging = i;
    ListView_RedrawItems(hlv, i, i);
}
コード例 #12
0
ファイル: Cpresets.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TpresetsPage::onReadFromFile(void)
{
    int i=lvGetSelItem(IDC_LV_PRESETS);
    char_t presetFlnm[MAX_PATH];
    _splitpath_s((*parent->localPresets)[i]->presetName, NULL, 0, NULL, 0, presetFlnm, countof(presetFlnm), NULL, 0);
    if (dlgGetFile(false,m_hwnd,_(-IDD_PRESETS,_l("Load ffdshow preset")),presetfilter,presetext,presetFlnm,_l("."),0)) {
        char_t presetName[MAX_PATH];
        ff_strncpy(presetName,(*parent->localPresets)[i]->presetName,MAX_PATH);
        (*parent->localPresets)[i]->loadFile(presetFlnm);
        ff_strncpy((*parent->localPresets)[i]->presetName, presetName, countof((*parent->localPresets)[i]->presetName));
        parent->selectPreset(presetName);
        cfg2dlg();
        parent->setChange();
    }
}
コード例 #13
0
ファイル: Cpresets.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TpresetsPage::onRemove(void)
{
    int i=lvGetSelItem(IDC_LV_PRESETS);
    if (i!=0 && MessageBox(m_hwnd,_(-IDD_PRESETS,_l("Do you really want to remove selected preset?")),_(-IDD_PRESETS,_l("Removing preset")),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2)==IDYES) {
        char_t presetName[1024];
        ListView_GetItemText(hlv,i,0,presetName,1023);
        if (deciD->isDefaultPreset(presetName)) {
            cfgSet(IDFF_defaultPreset,(*parent->localPresets)[0]->presetName);    // [0] is protected(Remove bottun is inactivated, thus cannot be removed), it's safe to assume default preset is not [0].
        }
        parent->localPresets->removePreset(presetName);
        ListView_SetItemCountEx(hlv,parent->localPresets->size(),0);
        ListView_GetItemText(hlv,0,0,presetName,1023);
        parent->selectPreset(presetName);
        cfg2dlg();
        parent->setChange();
    }
}
コード例 #14
0
ファイル: Ccodecs.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TcodecsPage::moveCBX(bool isscroll)
{
    if (isscroll && !IsWindowVisible(hcbx)) {
        return;
    }
    LVCOLUMN lvc0,lvc1;
    lvc0.mask=lvc1.mask=LVCF_WIDTH;
    ListView_GetColumn(hlv,0,&lvc0);
    ListView_GetColumn(hlv,1,&lvc1);
    RECT lvr;
    GetWindowRect(hlv,&lvr);
    RECT pr;
    GetWindowRect(GetParent(hlv),&pr);
    OffsetRect(&lvr,-pr.left,-pr.top);
    RECT ir;
    int iItem=lvGetSelItem(IDC_LV_INCODECS);
    ListView_GetItemRect(hlv,iItem,&ir,LVIR_BOUNDS);
    MoveWindow(hcbx,lvr.left+lvc0.cx+3,lvr.top+ir.top-1,lvc1.cx,12,TRUE);
    show(true,IDC_CBX_INCODECS);
    SetWindowPos(hcbx,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
    SetFocus(hcbx);
}
コード例 #15
0
ファイル: Cgeneric.cpp プロジェクト: JERUKA9/ffdshow-tryouts
void TgenericPage::cfg2dlg(void)
{
    flags.clear();
    if (sup_gray(codecId)) {
        flags.push_back(std::make_tuple(_(IDC_LV_GENERIC,_l("Greyscale")),IDFF_enc_gray,1,false));
    }

    nostate=true;
    int iig=lvGetSelItem(IDC_LV_GENERIC);
    ListView_DeleteAllItems(hlv);
    for (Tflags::const_iterator f=flags.begin(); f!=flags.end(); f++) {
        LVITEM lvi;
        memset(&lvi,0,sizeof(lvi));
        lvi.mask=LVIF_TEXT|LVIF_PARAM;
        lvi.pszText=LPTSTR(std::get<NAME-1>(*f));
        lvi.lParam=LPARAM(&*f);
        lvi.iItem=100;
        int ii=ListView_InsertItem(hlv,&lvi);
        ListView_SetCheckState(hlv,ii,cfgGet(std::get<IDFF-1>(*f))&std::get<VAL-1>(*f));
    }
    lvSetSelItem(IDC_LV_GENERIC,iig);
    nostate=false;
}
コード例 #16
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);
}
コード例 #17
0
ファイル: Ccodecs.cpp プロジェクト: JERUKA9/ffdshow-tryouts
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);
}