Changeset 1341

Show
Ignore:
Timestamp:
01/09/08 14:34:37 (8 months ago)
Author:
calvin
Message:

paramview opens faster

Location:
trunk/src/buzelib
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/buzelib/MachineParameterView.cpp

    r1338 r1341  
    6060} 
    6161 
     62LRESULT CMachineParameterView::OnPostCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
     63        bindMachine(); 
     64        //sliderView.ShowWindow(SW_SHOW); 
     65        return 0; 
     66} 
     67 
    6268LRESULT CMachineParameterView::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
    6369        LRESULT lres = DefWindowProc(); 
     
    7581 
    7682        sliderView.Create(m_hWnd, rcDefault, 0, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_VSCROLL); 
    77         bindMachine(); 
    7883 
    7984        machine->addEventHandler(this); 
     
    433438        } 
    434439        return 0; 
     440} 
     441 
     442LRESULT CMachineParameterView::OnEraseBkgnd(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/) { 
     443        return 1; 
    435444} 
    436445 
     
    604613} 
    605614 
     615void CMachineParameterScrollView::updateScrollbars() { 
     616        RECT rcClient; 
     617        GetClientRect(&rcClient); 
     618        int height = rcClient.bottom; 
     619 
     620        int prevScroll = GetScrollPos(SB_VERT); 
     621        int slidersPerPage = height / CParameterSliderCtrl::sliderHeight; 
     622        int totalSliderHeight = (sliders.size()) * CParameterSliderCtrl::sliderHeight; 
     623        if (totalSliderHeight < 0 || height == 0) totalSliderHeight = 0; 
     624 
     625        SCROLLINFO si; 
     626        si.cbSize = sizeof(SCROLLINFO); 
     627        si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS; 
     628        si.nPage = height; 
     629        si.nMin = 0; 
     630        si.nMax = totalSliderHeight; 
     631        si.nPos = prevScroll; 
     632        SetScrollInfo(SB_VERT, &si); 
     633        ScrollWindow(0, -prevScroll); 
     634} 
     635 
    606636void CMachineParameterScrollView::setMachine(metaplugin* machine) { 
    607637        this->machine=machine; 
     
    647677        } 
    648678 
     679        RECT rcClient; 
     680        GetClientRect(&rcClient); 
     681 
    649682        sliders.resize(numSliders); 
    650         size_t sliderIndex=0; 
     683        size_t sliderIndex = 0; 
    651684        for (size_t i = 0; i < conv.getColumns(); i++) { 
    652685                const parameter* param = conv.getColumnParameter(i); 
     
    666699 
    667700                if (sliderIndex >= oldslidercount) { 
    668                         sliders[sliderIndex]=new CParameterSliderCtrl(mainFrame); 
    669                         sliders[sliderIndex]->Create(m_hWnd, rcDefault, "", WS_CHILD|WS_VISIBLE); 
     701                        sliders[sliderIndex] = new CParameterSliderCtrl(mainFrame); 
     702                        RECT rcSlider = { 0, sliderIndex*CParameterSliderCtrl::sliderHeight, rcClient.right, sliderIndex*CParameterSliderCtrl::sliderHeight + CParameterSliderCtrl::sliderHeight }; 
     703                        sliders[sliderIndex]->Create(m_hWnd, rcSlider, "", WS_CHILD|WS_VISIBLE); 
    670704                } 
    671705                sliders[sliderIndex]->setParameter(machine, pgroup, ptrack, pcolumn); 
     
    673707        } 
    674708 
    675         RECT rc; 
    676         GetClientRect(&rc); 
    677         BOOL b; 
    678         OnSize(0,0,MAKEWPARAM(rc.right, rc.bottom), b); 
     709        updateScrollbars(); 
    679710} 
    680711 
    681712LRESULT CMachineParameterScrollView::OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/) { 
    682         int width=LOWORD(lParam), height=HIWORD(lParam); 
    683          
    684         int prevScroll = GetScrollPos(SB_VERT); 
     713        int width = LOWORD(lParam); 
    685714 
    686715        for (size_t i=0; i<sliders.size(); i++) { 
     
    688717        } 
    689718 
    690         int slidersPerPage=height/CParameterSliderCtrl::sliderHeight; 
    691  
    692         int totalSliderHeight=(sliders.size())*CParameterSliderCtrl::sliderHeight; 
    693         if (totalSliderHeight<0)  
    694                 totalSliderHeight=0; 
    695  
    696         this->SetScrollRange(SB_VERT, 0, totalSliderHeight-1); 
    697  
    698         if (totalSliderHeight>0) { 
    699                 SCROLLINFO si; 
    700                 si.cbSize=sizeof(SCROLLINFO); 
    701                 si.fMask=SIF_PAGE; 
    702                 si.nPage=height; 
    703                 this->SetScrollInfo(SB_VERT, &si); 
    704         } 
    705  
    706         SetScrollPos(SB_VERT, prevScroll); 
    707         ScrollWindow(0, -prevScroll); 
     719        updateScrollbars(); 
    708720 
    709721        return 0; 
  • trunk/src/buzelib/MachineParameterView.h

    r1338 r1341  
    1212class CMachineParameterView; 
    1313class ClientViewListener; 
     14 
     15const int WM_POSTCREATE = WM_USER + 1; 
    1416 
    1517class CMachineParameterScrollView : public CWindowImpl<CMachineParameterScrollView> { 
     
    4446 
    4547        void scrollToView(int slider); 
     48        void updateScrollbars(); 
    4649}; 
    4750 
     
    7275                CHAIN_MSG_MAP(CToolbarWindow<CMachineParameterView>) 
    7376                MESSAGE_HANDLER(WM_CREATE, OnCreate) 
     77                MESSAGE_HANDLER(WM_POSTCREATE, OnPostCreate) 
    7478                MESSAGE_HANDLER(WM_CHAR, OnChar) 
    7579                MESSAGE_HANDLER(WM_SIZE, OnSize) 
     
    7781                MESSAGE_HANDLER(WM_KEYUP, OnKeyUp) 
    7882                MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel) 
     83                MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd) 
    7984 
    8085                MESSAGE_HANDLER(WM_CLOSE, OnClose) 
     
    112117        LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
    113118        LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
     119        LRESULT OnPostCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
    114120        LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
    115121        LRESULT OnChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
     
    117123        LRESULT OnKeyUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
    118124        LRESULT OnMouseWheel(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
     125        LRESULT OnEraseBkgnd(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/); 
    119126 
    120127        LRESULT OnHelp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
  • trunk/src/buzelib/MainFrm.cpp

    r1340 r1341  
    236236        , playPatternSequencer() 
    237237        , undoManager(this)*/ 
    238         , machineParameters(this, DockSplitTab::placeDOCKPANE, DockSplitTab::dockRIGHT, "Parameters", "Machine Parameters", true) 
     238        , machineParameters(this, DockSplitTab::placeFLOATFRAME, DockSplitTab::dockUNKNOWN, "Parameters", "Machine Parameters", true) 
    239239        , patternEditors(this, DockSplitTab::placeMAINPANE, DockSplitTab::dockUNKNOWN, "Pattern", "Pattern", false) 
    240240        , inputMixers(this, DockSplitTab::placeDOCKPANE, DockSplitTab::dockBOTTOM, "Input Mixer", "Input Mixer", true) 
     
    12651265 
    12661266        ::ShowWindow(m_hWndStatusBar, getToolbarVisibility(ID_VIEW_STATUS_BAR) ? SW_SHOWNOACTIVATE : SW_HIDE); 
     1267        setToolbarVisibility(ID_VIEW_STATUS_BAR, getToolbarVisibility(ID_VIEW_STATUS_BAR)); 
    12671268 
    12681269        setMainFrameToolbarVisibility(1, ID_VIEW_TOOLBAR, getToolbarVisibility(ID_VIEW_TOOLBAR), FALSE, FALSE); 
     
    19321933        RECT* rcCreate = 0; 
    19331934 
    1934         FramePlace place = machineParameters.framePlace; 
    1935         DockSide side = machineParameters.dockSide; 
    1936  
    1937         if (configPopup) { 
    1938                 int views = (machineParameters.getViews() % 16); 
    1939  
    1940                 int params = 0; 
    1941                 pattern conv(m, 0); 
    1942                 for (size_t i = 0; i < conv.getColumns(); i++) { 
    1943                         const parameter* param = conv.getColumnParameter(i); 
    1944                         if ((param->flags & zzub::parameter_flag_state) == 0) continue; 
    1945                         size_t g = 0, t = 0, c = 0; 
    1946                         conv.linearToPattern(i, g, t, c); 
    1947                         if (g == 0) { 
    1948                                 zzub::connection* conn = m->getConnection(t); 
    1949                                 if (conn->plugin_in->nonSongPlugin) continue; 
    1950                         } 
    1951                         params++; 
     1935        int views = (machineParameters.getViews() % 16); 
     1936 
     1937        int params = 0; 
     1938        pattern conv(m, 0); 
     1939        for (size_t i = 0; i < conv.getColumns(); i++) { 
     1940                const parameter* param = conv.getColumnParameter(i); 
     1941                if ((param->flags & zzub::parameter_flag_state) == 0) continue; 
     1942                size_t g = 0, t = 0, c = 0; 
     1943                conv.linearToPattern(i, g, t, c); 
     1944                if (g == 0) { 
     1945                        zzub::connection* conn = m->getConnection(t); 
     1946                        if (conn->plugin_in->nonSongPlugin) continue; 
    19521947                } 
    1953                 int parameterHeight = params*CParameterSliderCtrl::sliderHeight + 20;   // 22 = toolbarheight 
    1954  
    1955                 POINT pt; 
    1956                 GetCursorPos(&pt); 
    1957                 rcTarget.left = pt.x; 
    1958                 rcTarget.top = pt.y; 
    1959                 rcTarget.right = rcTarget.left + 400; 
    1960                 rcTarget.bottom = rcTarget.top + parameterHeight; 
    1961  
    1962                 rcCreate = &rcTarget; 
    1963  
    1964                 place = placeFLOATFRAME; 
    1965                 side = dockUNKNOWN; 
    1966         } 
    1967  
     1948                params++; 
     1949        } 
     1950        int parameterHeight = params*CParameterSliderCtrl::sliderHeight + 24;   // 24 = toolbarheight 
     1951 
     1952        POINT pt; 
     1953        GetCursorPos(&pt); 
     1954        rcTarget.left = pt.x; 
     1955        rcTarget.top = pt.y; 
     1956        rcTarget.right = rcTarget.left + 400; 
     1957        rcTarget.bottom = rcTarget.top + parameterHeight; 
     1958 
     1959        rcCreate = &rcTarget; 
     1960 
     1961        CMachineParameterView* mpv; 
    19681962        for (unsigned i = 0; i<machineParameters.getViews(); i++) { 
    1969                 CMachineParameterView* mpv = machineParameters.getView(i); 
     1963                mpv = machineParameters.getView(i); 
    19701964                if (mpv->getMachine() == m) { 
    19711965                        frame.setFocusTo(*mpv); 
     
    19761970        createMachineParameterViewPlugin = m; 
    19771971        ClientView* cv = machineParameters.createClientWindow(m_hWnd, label); 
    1978         machineParameters.insertClient(cv, rcCreate, place, side); 
     1972        machineParameters.insertClient(cv, rcCreate);//, place, side); 
     1973 
     1974        mpv = machineParameters.lookupView(cv); 
     1975        mpv->PostMessage(WM_POSTCREATE); 
    19791976 
    19801977} 
  • trunk/src/buzelib/ParameterController.cpp

    r1258 r1341  
    9090 
    9191LRESULT CParameterController::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
    92         LRESULT lres=DefWindowProc(); 
    93         m_slider.Create(*this, rcDefault, 0, WS_TABSTOP|WS_VISIBLE|WS_CHILD|PSBS_NOTIFY); 
     92        LRESULT lres = DefWindowProc(); 
     93        RECT rcClient; 
     94        GetClientRect(&rcClient); 
     95        m_slider.Create(m_hWnd, rcClient, 0, WS_TABSTOP|WS_VISIBLE|WS_CHILD|PSBS_NOTIFY); 
    9496        return 0; 
    9597} 
    9698 
    9799LRESULT CParameterController::OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/) { 
    98         RECT rc; 
    99         GetClientRect(&rc); 
    100  
    101         m_slider.MoveWindow(0,0, rc.right, rc.bottom); 
     100        RECT rcClient; 
     101        GetClientRect(&rcClient); 
     102 
     103        m_slider.MoveWindow(0, 0, rcClient.right, rcClient.bottom); 
    102104        return 0; 
    103105} 
  • trunk/src/buzelib/ParameterSliderCtrl.cpp

    r1280 r1341  
    1414using namespace zzub; 
    1515 
     16 
     17namespace { 
     18        const int labelWidth = 100; 
     19        const int valueWidth = 80; 
     20} 
     21 
     22 
    1623/*** 
    1724 
     
    2936 
    3037LRESULT CParameterSliderCtrl::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { 
    31         label.Create(m_hWnd, rcDefault, "Parameter Name", WS_CHILD|WS_VISIBLE); 
    32 //      trackBar.sliderCtrl=this; 
    33         trackBar.Create(m_hWnd, rcDefault, 0, WS_CHILD|WS_VISIBLE|TBS_NOTICKS|TBS_BOTH ); 
    34         valueLabel.Create(m_hWnd, rcDefault, "Value", WS_CHILD|WS_VISIBLE|SS_ENDELLIPSIS|SS_WORDELLIPSIS); 
     38 
     39        RECT rcClient; 
     40        GetClientRect(&rcClient); 
     41 
     42        int sliderWidth = rcClient.right - labelWidth - valueWidth; 
     43 
     44        label.Create(m_hWnd, CRect(0, 0, labelWidth, sliderHeight), "Parameter Name", WS_CHILD|WS_VISIBLE); 
     45        trackBar.Create(m_hWnd, CRect(0+labelWidth, 0, sliderWidth, sliderHeight), 0, WS_CHILD|WS_VISIBLE|TBS_NOTICKS|TBS_BOTH ); 
     46        valueLabel.Create(m_hWnd, CRect(0+labelWidth+sliderWidth, 0, valueWidth, sliderHeight), "Value", WS_CHILD|WS_VISIBLE|SS_ENDELLIPSIS|SS_WORDELLIPSIS); 
    3547 
    3648        label.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT)); 
     
    4456        int width=LOWORD(lParam), height=HIWORD(lParam); 
    4557 
    46         int labelWidth=100; 
    47         int valueWidth=80; 
    48         int sliderWidth=width-labelWidth-valueWidth; 
     58        int sliderWidth = width - labelWidth - valueWidth; 
    4959 
    5060        label.MoveWindow(0, 0, labelWidth, sliderHeight); 
  • trunk/src/buzelib/Utils/ToolbarWindow.h

    r1340 r1341  
    1111        LRESULT OnRButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) { 
    1212                ::SendMessage(GetParent(), WM_CONTEXTMENU, (WPARAM)m_hWnd, GetMessagePos()); 
     13                return 0; 
    1314        } 
    1415};