Changeset 1294

Show
Ignore:
Timestamp:
10/29/07 23:59:32 (12 months ago)
Author:
calvin
Message:

added edit-tab to wavetable with a volume slider, deleted unused wavetable tab code, moved WtlExt?.h and WTLTabViewCtrl.h out of wtl and into utils directory, ctrl-backspace works in wavetable

Location:
trunk/src
Files:
2 added
6 removed
4 modified

Legend:

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

    r1218 r1294  
    11#include "StdAfx.h" 
    2 #include "WTLExt.h" 
     2#include "Utils/WTLExt.h" 
    33#include "EnvelopeCtrl.h" 
    44 
  • trunk/src/buzelib/Preferences/PreferencesDialog.h

    r1273 r1294  
    11#pragma once 
    22 
    3 #include <WTLTabViewCtrl.h> 
     3#include "../Utils/WTLTabViewCtrl.h" 
    44 
    55#include "AudioDriverPreferencesView.h" 
  • trunk/src/buzelib/WaveTableView.cpp

    r1293 r1294  
    1111#include "Utils/utils.h" 
    1212#include "Utils/Keymaps.h" 
     13#include "Properties.h" 
    1314 
    1415#ifdef min 
     
    2324using namespace std; 
    2425using namespace zzub; 
     26 
     27 
     28/*** 
     29 
     30        CWaveTabEdit 
     31 
     32***/ 
     33 
     34CWaveTabEdit::CWaveTabEdit(CWaveTableView* view) { 
     35        this->view = view; 
     36} 
     37 
     38LRESULT CWaveTabEdit::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
     39        DefWindowProc(); 
     40 
     41        volumeSliderLabel.Create(m_hWnd, rcDefault, "Volume", WS_VISIBLE|WS_CHILD); 
     42        volumeSliderLabel.SetFont((HFONT) GetStockObject( DEFAULT_GUI_FONT )); 
     43 
     44        DWORD trackBarStyle = WS_CHILD|WS_VISIBLE|TBS_AUTOTICKS|TBS_FIXEDLENGTH|TBS_BOTH; 
     45 
     46        volumeSlider.Create(m_hWnd, rcDefault, 0, trackBarStyle ); 
     47        volumeSlider.SetPageSize(16); 
     48        volumeSlider.SetTicFreq(1024); 
     49        volumeSlider.SetRange(0, 0x7fff);       // converted to a float between from 0-2 (0-200%) 
     50        volumeSlider.SetThumbLength(12); 
     51 
     52        updateFromWavetable(); 
     53 
     54        return 0; 
     55} 
     56 
     57LRESULT CWaveTabEdit::OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/) { 
     58        WORD cx = LOWORD( lParam); 
     59        WORD cy = HIWORD( lParam); 
     60 
     61        volumeSliderLabel.MoveWindow(0, 0, cx, 22); 
     62         
     63        volumeSlider.MoveWindow(0, 22, cx, 22); 
     64 
     65        return 0; 
     66} 
     67 
     68LRESULT CWaveTabEdit::OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
     69        return 0; 
     70} 
     71 
     72LRESULT CWaveTabEdit::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
     73        return 0; 
     74} 
     75 
     76LRESULT CWaveTabEdit::OnHScroll(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { 
     77        wave_info_ex* wave = view->getSelectedWave(); 
     78        wave->volume = (float)volumeSlider.GetPos() / 0x7fff * 2; 
     79        updateFromWavetable(); 
     80        return 0; 
     81} 
     82 
     83LRESULT CWaveTabEdit::OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { 
     84        CDCHandle bgDC((HDC)wParam); 
     85        RECT rcClient; 
     86        GetClientRect(&rcClient); 
     87        bgDC.FillRect(&rcClient, COLOR_3DFACE); 
     88        return 1; 
     89} 
     90 
     91void CWaveTabEdit::updateFromWavetable() { 
     92        wave_info_ex* wave = view->getSelectedWave(); 
     93        if (!wave) return ; 
     94         
     95        volumeSlider.SetPos(wave->volume / 2 * 0x7fff); 
     96 
     97        std::stringstream strm; 
     98        strm << "Volume (" << int(wave->volume * 100) << "%)"; 
     99        volumeSliderLabel.SetWindowText(strm.str().c_str()); 
     100} 
    25101 
    26102/*** 
     
    188264        updateEnvelope(); 
    189265        return 0; 
     266} 
     267 
     268/*** 
     269 
     270        CBgTabViewCtrl 
     271 
     272***/ 
     273 
     274 
     275LRESULT CBgTabViewCtrl::OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { 
     276        CDCHandle bgDC((HDC)wParam); 
     277        RECT rcClient; 
     278        GetClientRect(&rcClient); 
     279        bgDC.FillRect(&rcClient, COLOR_3DFACE); 
     280        return DefWindowProc(); 
    190281} 
    191282 
     
    204295        ,envelopeTab(this) 
    205296        ,editTab(this) 
    206         ,recordTab(this) 
    207297{ 
    208298        player = mainFrm->player; 
     
    250340        waveEditorCtrl.Create(waveTabSplitter, rcDefault, 0, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS |WS_CLIPCHILDREN | WS_HSCROLL, WS_EX_CLIENTEDGE, IDC_FILELIST); 
    251341 
    252         waveTabs.Create(waveTabSplitter, rcDefault, 0, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN, 0, IDC_WAVETABS); 
    253  
    254         //editTab.Create(waveTabs);//, rcDefault, 0, WS_CHILD); 
    255         //waveTabs.AddTab("Edit", editTab); 
     342        waveTabs.Create(waveTabSplitter, rcDefault, 0, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN |TCS_TABS, 0, IDC_WAVETABS); 
     343 
     344        editTab.Create(waveTabs, rcDefault, 0, WS_CHILD); 
     345        waveTabs.AddTab("Edit", editTab); 
    256346 
    257347        envelopeTab.Create(waveTabs, rcDefault, 0, WS_CHILD); 
     
    493583        mainFrame->document->selectWave(entry); 
    494584 
     585        editTab.updateFromWavetable(); 
    495586} 
    496587 
     
    661752} 
    662753 
    663 LRESULT CWaveTableView::OnTcnSelchangeWavetab(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/) { 
    664         waveTabs.SetActiveTab(waveTabs.GetCurSel()); 
    665         return 0; 
    666 } 
    667  
    668754LRESULT CWaveTableView::OnZoomSamples(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& bHandled) { 
    669755        waveEditorCtrl.gridType=WaveEditorSamples; 
     
    748834LRESULT CWaveTableView::OnViewProperties(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { 
    749835        // properties på wavelevel eller properties på wave? 
     836 
     837        if (document->selectedPropertyProvider) delete document->selectedPropertyProvider; 
     838        document->selectedPropertyProvider = new CWavePropertyProvider(*this, document, getSelectedWave()); 
     839        document->updateAllViews(0, UpdateProperties); 
    750840        return 0; 
    751841} 
  • trunk/src/buzelib/WaveTableView.h

    r1293 r1294  
    22 
    33#include <stack> 
    4 #include <WTLTabViewCtrl.h> 
    54#include "FileBrowserList.h" 
    65#include "WaveTableList.h" 
    7 #include "WtlExt.h" 
     6#include "Utils/WtlExt.h" 
    87#include "EnvelopeCtrl.h" 
    98#include "WaveEntryList.h" 
    109#include "WaveEditorCtrl.h" 
    1110#include "Utils/ToolbarWindow.h" 
    12 #include "WaveTableRecordTabView.h" 
    13 #include "WaveTableEditTabView.h" 
    1411#include "Utils/SplitterWindowKey.h" 
     12#include "Utils/WTLTabViewCtrl.h" 
    1513 
    1614class CWaveTableView; 
     
    1816 
    1917const int IDC_WAVETABS = 666; 
     18const int IDC_WAVEVOLUMESLIDER = 667; 
     19 
     20class CWaveTabEdit : public CWindowImpl<CWaveTabEdit> { 
     21        CWaveTableView* view; 
     22public: 
     23        CWaveTabEdit(CWaveTableView* view); 
     24 
     25        CStatic volumeSliderLabel; 
     26        CTrackBarCtrl volumeSlider; 
     27 
     28        DECLARE_WND_CLASS("WaveTabEdit") 
     29 
     30        BEGIN_MSG_MAP(CWaveTabEdit) 
     31                MESSAGE_HANDLER(WM_CREATE, OnCreate) 
     32                MESSAGE_HANDLER(WM_SIZE, OnSize) 
     33                MESSAGE_HANDLER(WM_CLOSE, OnClose) 
     34                MESSAGE_HANDLER(WM_DESTROY, OnDestroy) 
     35 
     36                MESSAGE_HANDLER(WM_HSCROLL, OnHScroll) 
     37                MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground); 
     38        END_MSG_MAP() 
     39 
     40        LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); 
     41        LRESULT OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); 
     42        LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); 
     43        LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); 
     44        LRESULT OnHScroll(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); 
     45        LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
     46 
     47        void updateFromWavetable(); 
     48}; 
    2049 
    2150class CWaveTabEnvelope : public CWindowImpl<CWaveTabEnvelope> { 
     
    6190}; 
    6291 
     92// Apparently, having a CTabCtrl inside a splitter causes drawing problems with  
     93// XP themes where the tab header background isnt cleared properly. 
     94// We create a CBgTabViewVtrl class that derives from our previous tab control  
     95// and implement WM_ERASEBKGND to get around the problem: 
     96 
     97class CBgTabViewCtrl : public CWTLTabViewCtrlT< CBgTabViewCtrl> { 
     98public: 
     99        BEGIN_MSG_MAP(CBgTabViewCtrl) 
     100                MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground); 
     101                CHAIN_MSG_MAP(CWTLTabViewCtrlT< CBgTabViewCtrl>) 
     102        END_MSG_MAP() 
     103        LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
     104}; 
    63105 
    64106class CWaveTableView  
     
    68110{ 
    69111        ClientViewListener* clientViewListener; 
    70         CTrackBarCtrl waveVolumeSlider; 
    71112        CWaveEntryList waveEntryList; 
    72113        CWaveEditorCtrl waveEditorCtrl; 
     
    84125public: 
    85126        CWaveTableList waveTableList; 
    86         CWTLTabViewCtrl waveTabs; 
    87         CWaveTableEditTabView editTab; 
     127        CBgTabViewCtrl waveTabs; 
     128        CWaveTabEdit editTab; 
    88129        CWaveTabEnvelope envelopeTab; 
    89         CWaveTableRecordTabView recordTab; 
    90130 
    91131        CMainFrame* mainFrame; 
     
    141181                COMMAND_ID_HANDLER(ID_WAVE_ZOOM_ALL, OnZoomAll) 
    142182 
    143                 NOTIFY_HANDLER(IDC_WAVETABS, TCN_SELCHANGE, OnTcnSelchangeWavetab) 
    144  
    145183                // From CWTLTabViewCtrl:  
    146184                // Parent windows must have REFLECT_NOTIFICATIONS() in the message map 
    147185                // to pass along the TCN_SELCHANGE message to  
     186                REFLECT_NOTIFICATIONS() 
    148187        END_MSG_MAP() 
    149188