Changeset 1263

Show
Ignore:
Timestamp:
09/22/07 16:02:35 (11 months ago)
Author:
calvin
Message:

fix a couple of typos, restore cursor and scroll positions in pattern editor when switching machine and/or pattern

Location:
trunk/src/buzelib
Files:
6 modified

Legend:

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

    r1261 r1263  
    223223 
    224224        MachineConnect* undo=new MachineConnect(); 
    225         undo->init(output, input, getConnectionAmp(conn), getConnectionAmp(conn)); 
     225        undo->init(output, input, getConnectionAmp(conn), getConnectionPan(conn)); 
    226226 
    227227        return undoManager.insertAndCommit(redo, undo); 
  • trunk/src/buzelib/PatternEditor/PatternEditorControl.cpp

    r1260 r1263  
    250250} 
    251251 
    252 void CPatternEditorControl::MoveCursor(int group, int track, int column, int y, bool affectsel) { 
    253         for (int i = 0; i < editor.columns.size(); i++) { 
    254                 PATTERNCOLUMN& col = editor.columns[i]; 
    255                 if (col.group == group && col.track == track && col.column == column) { 
    256                         int cursor_x = editor.ScreenUnitsToCursorColumn(col.unit); 
     252void CPatternEditorControl::MoveCursor(int group, int track, int column, int index, int y, bool affectsel) { 
     253        for (int i = 0; i < editor.columns.size(); i++) { 
     254                PATTERNCOLUMN& col = editor.columns[i]; 
     255                if (col.group == group && col.track == track && col.column == column) { 
     256                        int cursor_x = editor.ScreenUnitsToCursorColumn(col.unit) + index; 
    257257                        editor.MoveCursor(cursor_x - editor.cursor.x, y - editor.cursor.y, affectsel); 
    258258                        break; 
  • trunk/src/buzelib/PatternEditor/PatternEditorControl.h

    r1260 r1263  
    6969        void AddPianoRoll() { editor.AddPianoRoll(); } 
    7070        void AllocatePattern() { editor.AllocatePatternBitmap(); } 
     71        void ScrollTo(const POINT& pt) { editor.ScrollTo(pt); } 
    7172        void ScrollToView() { editor.ScrollToView(editor.cursor); } 
    7273        void ScrollToView(const POINT& pt) { editor.ScrollToView(pt); } 
    7374        void SelectRange(int from_col, int from_row, int to_col, int to_row) { editor.SelectRange(from_col, from_row / editor.skip, to_col, to_row / editor.skip); } 
    7475        void MoveCursor(int x, int y, bool affectsel) { editor.MoveCursor(x, y, affectsel); } 
    75         void MoveCursor(int group, int track, int column, int y, bool affectsel); 
     76        void MoveCursor(int group, int track, int column, int index, int y, bool affectsel); 
    7677        POINT GetCursor() { return editor.cursor; } 
    7778        int GetColumns() { return editor.columns.size(); } 
  • trunk/src/buzelib/PatternEditor/PatternEditorInner.cpp

    r1260 r1263  
    951951} 
    952952 
     953void CPatternEditorInner::ScrollTo(POINT new_scroll) { 
     954        SetScrollPos(SB_VERT, new_scroll.y); 
     955        SetScrollPos(SB_HORZ, new_scroll.x); 
     956        ScrollWindow((scroll.x - new_scroll.x) * font_size.cx, (scroll.y - new_scroll.y) * font_size.cy, 0); 
     957        scroll = new_scroll; 
     958        UpdateWindow(); 
     959        UpdateCaretPosition(); 
     960        GetParent().SendMessage(WM_COMMAND, MAKEWPARAM(ID_PATTERNEDITOR_SCROLLED, 0), 0); 
     961} 
     962 
    953963void CPatternEditorInner::ScrollToView(POINT pt) { 
    954964        if (rcClient.right == 0) return ; 
     
    959969 
    960970        POINT screen = { rcClient.right / font_size.cx - 2, rcClient.bottom / font_size.cy - 1 }; 
    961         POINT last_scroll = scroll; 
    962  
    963         if (pt.y - scroll.y < 0) 
    964                 scroll.y = pt.y; 
    965  
    966         if (pt.y - scroll.y >= screen.y) 
    967                 scroll.y = pt.y - screen.y; 
     971        POINT new_scroll = scroll; 
     972 
     973        if (pt.y - new_scroll.y < 0) 
     974                new_scroll.y = pt.y; 
     975 
     976        if (pt.y - new_scroll.y >= screen.y) 
     977                new_scroll.y = pt.y - screen.y; 
    968978 
    969979        int cursorunits = CursorColumnToScreenUnits(pt.x); 
    970980 
    971         if (cursorunits - scroll.x < 0) 
    972                 scroll.x = cursorunits; 
    973  
    974         if (cursorunits - scroll.x > screen.x) 
    975                 scroll.x = cursorunits - screen.x; 
    976  
    977         if (scroll.y != last_scroll.y || scroll.x != last_scroll.x) { 
    978                 SetScrollPos(SB_VERT, scroll.y); 
    979                 SetScrollPos(SB_HORZ, scroll.x); 
    980                 ScrollWindow((last_scroll.x - scroll.x) * font_size.cx, (last_scroll.y - scroll.y) * font_size.cy, 0); 
    981                 UpdateWindow(); 
    982                 UpdateCaretPosition(); 
    983                 GetParent().SendMessage(WM_COMMAND, MAKEWPARAM(ID_PATTERNEDITOR_SCROLLED, 0), 0); 
     981        if (cursorunits - new_scroll.x < 0) 
     982                new_scroll.x = cursorunits; 
     983 
     984        if (cursorunits - new_scroll.x > screen.x) 
     985                new_scroll.x = cursorunits - screen.x; 
     986 
     987        if (scroll.y != new_scroll.y || scroll.x != new_scroll.x) { 
     988                ScrollTo(new_scroll); 
    984989        } 
    985990} 
  • trunk/src/buzelib/PatternEditor/PatternEditorInner.h

    r1260 r1263  
    153153        void SetThemeColor(theme_index index, COLORREF color); 
    154154        void MoveCursor(int x, int y, bool affectsel); 
    155         void ScrollToView(POINT pt); 
     155        void ScrollTo(POINT pt);                // scroll to position pt 
     156        void ScrollToView(POINT pt);    // scroll so position pt is visible 
    156157        bool HasSelection(); 
    157158        bool GetSelectionRectScreen(RECT* rc); 
  • trunk/src/buzelib/PatternView.cpp

    r1261 r1263  
    10481048                patternEditor.AddColumn(0, i, 1, paraPanning->type, paraPanning->value_none, paraPanning->value_min, paraPanning->value_max); 
    10491049                for (size_t k = 0; k < pattern->getRows(); k++) { 
    1050                         zzub::patterntrack* track = pattern->getPatternTrack(0, 0); 
     1050                        zzub::patterntrack* track = pattern->getPatternTrack(0, i); 
    10511051                        int v = track->getValue(k, 0); 
    10521052                        if (v != getNoValue(paraVolume)) 
     
    10971097 
    10981098        pattern_position pos = document->getPatternPosition(machine, pattern); 
    1099         patternEditor.MoveCursor(pos.group, pos.track, pos.column, pos.row, false); 
     1099        patternEditor.MoveCursor(pos.group, pos.track, pos.column, pos.editPos, pos.row, false); 
    11001100         
    11011101        // TODO: scroll editor to pos.scroll* 
    1102         patternEditor.ScrollToView(); 
     1102        POINT scroll = { pos.scrollColumns, pos.scrollRows }; 
     1103        patternEditor.ScrollTo(scroll); 
    11031104 
    11041105        patternEditor.UpdateWindow(); 
     
    14331434LRESULT CPatternView::OnPasteValue(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { 
    14341435        pattern_position pos = document->getPatternPosition(machine, pattern); 
    1435         patterntrack* track = machine->getStateTrackCopy(pos.group, pos.track); 
    1436         int value = track->getValue(0, pos.column); 
    1437         const parameter* param = track->getParam(pos.column); 
     1436        patterntrack* state_track = machine->getStateTrackCopy(pos.group, pos.track); 
     1437        int value = state_track->getValue(0, pos.column); 
     1438        const parameter* param = state_track->getParam(pos.column); 
     1439 
     1440        patterntrack* pattern_track = pattern->getPatternTrack(pos.group, pos.track); 
     1441 
    14381442        if (getNoValue(param) != value) {// && document->editPattern(machine, pattern, pos.row, pos.group, pos.track, pos.column, 0, value, 0)) { 
    14391443 
     
    14421446 
    14431447                PatternEdit* undo = new PatternEdit(this, machine, pattern); 
    1444                 int oldv = track->getValue(pos.row, pos.column); 
     1448                int oldv = pattern_track->getValue(pos.row, pos.column); 
    14451449                undo->addEdit(pos.row, pos.group, pos.track, pos.column, oldv); 
    14461450 
     
    14611465        bool yeah = false; 
    14621466        for (int i = 0; i<track->getParams(); i++) { 
    1463                 int value = track->getValue(0, i); 
    1464                 const parameter* param = track->getParam(i); 
    1465                 if (getNoValue(param) != value) { // && document->editPattern(machine, pattern, pos.row, pos.group, pos.track, i, 0, value, 0)) { 
    1466                         redo->addEdit(pos.row, pos.group, pos.track, pos.column, value); 
     1467                int value = machine->getParameter(pos.group, pos.track, i); 
     1468                const parameter* param = machine->getMachineParameter(pos.group, pos.track, i); 
     1469                if (getNoValue(param) != value) { 
    14671470                        zzub::patterntrack* vt = pattern->getPatternTrack(pos.group, pos.track); 
    1468                         int oldv = vt->getValue(pos.row, pos.column); 
    1469  
    1470                         redo->addEdit(pos.row, pos.group, pos.track, pos.column, value); 
    1471                         undo->addEdit(pos.row, pos.group, pos.track, pos.column, oldv); 
     1471                        int oldv = vt->getValue(pos.row, i); 
     1472 
     1473                        redo->addEdit(pos.row, pos.group, pos.track, i, value); 
     1474                        undo->addEdit(pos.row, pos.group, pos.track, i, oldv); 
    14721475                        yeah = true; 
    14731476                }