| 1 |
// |
| 2 |
// ListWindowController.h |
| 3 |
// |
| 4 |
// Created by Toshi Nagata. |
| 5 |
/* |
| 6 |
Copyright (c) 2000-2011 Toshi Nagata. All rights reserved. |
| 7 |
|
| 8 |
This program is free software; you can redistribute it and/or modify |
| 9 |
it under the terms of the GNU General Public License as published by |
| 10 |
the Free Software Foundation version 2 of the License. |
| 11 |
|
| 12 |
This program is distributed in the hope that it will be useful, |
| 13 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 |
GNU General Public License for more details. |
| 16 |
*/ |
| 17 |
|
| 18 |
#import <Cocoa/Cocoa.h> |
| 19 |
#import "ContextMenuTextFieldCell.h" |
| 20 |
#import "MDHeaders.h" |
| 21 |
|
| 22 |
@class MyMIDISequence; |
| 23 |
@class MyTableHeaderView; |
| 24 |
@class MyTableView; |
| 25 |
|
| 26 |
typedef struct ListWindowFilterRecord { |
| 27 |
char mode; // 0: all, 1: only, 2: except for |
| 28 |
int count; // number of table[] entries |
| 29 |
struct { |
| 30 |
BOOL flag; |
| 31 |
MDEventKind kind; |
| 32 |
short data; |
| 33 |
} *table; |
| 34 |
} ListWindowFilterRecord; |
| 35 |
|
| 36 |
@interface ListWindowController : NSWindowController <NSTableViewDataSource> |
| 37 |
{ |
| 38 |
IBOutlet MyTableView *myEventTrackView; |
| 39 |
IBOutlet NSTextField *myInfoText; |
| 40 |
IBOutlet NSMenu *myTickDescriptionMenu; |
| 41 |
IBOutlet NSTextField *startEditingRangeText; |
| 42 |
IBOutlet NSTextField *endEditingRangeText; |
| 43 |
IBOutlet ContextMenuTextFieldCell *kindDataCell; |
| 44 |
IBOutlet ContextMenuTextFieldCell *dataDataCell; |
| 45 |
|
| 46 |
MDTrack *myTrack; |
| 47 |
int32_t myTrackNumber; |
| 48 |
|
| 49 |
/* >0 ������ selectionDidChange Notification ������������������ */ |
| 50 |
int selectionDidChangeNotificationLevel; |
| 51 |
|
| 52 |
/* myPointer ������������������ myRow ������������������������������������������������������������������ |
| 53 |
myRow ��������������� MDPointerGetPosition(myPointer) ������������������������ */ |
| 54 |
MDPointer *myPointer; |
| 55 |
int32_t myRow; |
| 56 |
|
| 57 |
/* ������������������������������������������������������������ */ |
| 58 |
int32_t myCount; |
| 59 |
|
| 60 |
/* Tick ������������������������ */ |
| 61 |
int32_t myTickColumnCount; |
| 62 |
|
| 63 |
/* Tick ��������������������������������������������������������������� */ |
| 64 |
NSTableColumn *myClickedColumn; |
| 65 |
|
| 66 |
MDCalibrator *myCalibrator; |
| 67 |
|
| 68 |
ListWindowFilterRecord *myFilter; |
| 69 |
|
| 70 |
/* ��������������������������������������������������������������������� */ |
| 71 |
/* ������������������������������������ myEditRow ��� -1 ��������� */ |
| 72 |
int32_t myEditRow; |
| 73 |
int32_t myEditColumn; |
| 74 |
int32_t myEditIndex; |
| 75 |
|
| 76 |
/* Is the last row (end-of-track) selected? */ |
| 77 |
/* (This information is not stored in MyMIDISequence->seletion, so it |
| 78 |
should be stored here) */ |
| 79 |
BOOL isLastRowSelected; |
| 80 |
|
| 81 |
/* ������������������������������������ */ |
| 82 |
MDEvent myDefaultEvent; |
| 83 |
|
| 84 |
/* The row containing the last event before the playing tick */ |
| 85 |
int32_t myPlayingRow; |
| 86 |
|
| 87 |
/* ������������end-of-track���������������������������������������end-of-track ������������������������������������ |
| 88 |
��������������������������������� */ |
| 89 |
// BOOL allowSelectingLastRow; |
| 90 |
|
| 91 |
/* ��������������������������������������������������������������������������������������������������������������������������� |
| 92 |
������������������������������������ myEditString ������������������ */ |
| 93 |
/* MDEvent myEditEvent; |
| 94 |
|
| 95 |
NSString *myEditString; |
| 96 |
NSTextView *myFieldEditor; */ |
| 97 |
} |
| 98 |
|
| 99 |
//- (void)setMIDITrack:(MDTrack *)aTrack; |
| 100 |
//- (MDTrack *)MIDITrack; |
| 101 |
|
| 102 |
- (MDEvent *)eventPointerForTableRow:(int)rowIndex; |
| 103 |
- (int32_t)eventPositionForTableRow:(int)rowIndex; |
| 104 |
- (MDTickType)eventTickForTableRow: (int)rowIndex; |
| 105 |
- (int)rowForEventPosition: (int32_t)position nearestRow: (int *)nearestRow; |
| 106 |
- (void)updateInfoText; |
| 107 |
- (void)updateEditingRangeText; |
| 108 |
|
| 109 |
/* Notification handler */ |
| 110 |
- (void)updateEventTableView:(NSNotification *)notification; |
| 111 |
- (void)editingRangeChanged: (NSNotification *)notification; |
| 112 |
|
| 113 |
- (IBAction)myAppendColumn:(id)sender; |
| 114 |
- (IBAction)myRemoveColumn:(id)sender; |
| 115 |
- (IBAction)myShowSecond:(id)sender; |
| 116 |
- (IBAction)myShowBarBeatCount:(id)sender; |
| 117 |
- (IBAction)myShowCount:(id)sender; |
| 118 |
- (IBAction)myShowMillisecond:(id)sender; |
| 119 |
//- (IBAction)myDoubleAction:(id)sender; |
| 120 |
//- (IBAction)eventKindMenuSelected:(id)sender; |
| 121 |
|
| 122 |
- (IBAction)showEditingRange:(id)sender; |
| 123 |
|
| 124 |
- (IBAction)deleteSelectedEvents:(id)sender; |
| 125 |
|
| 126 |
- (IBAction)insertNewEvent: (id)sender; |
| 127 |
- (IBAction)editSelectedEvent: (id)sender; |
| 128 |
- (void)startEditAtColumn: (int)column row: (int)row; |
| 129 |
- (void)startEditAtColumn: (int)column creatingEventWithTick: (MDTickType)tick atPosition: (int32_t)position; |
| 130 |
|
| 131 |
- (IBAction)editingRangeTextModified: (id)sender; |
| 132 |
|
| 133 |
//- (void)enterEditModeForRow:(int)row andColumn:(int)column withIndex:(int)index; |
| 134 |
//- (void)exitEditMode; |
| 135 |
//- (BOOL)isEditMode; |
| 136 |
|
| 137 |
//- (BOOL)tableHeaderView:(MyTableHeaderView *)headerView mouseDown:(NSEvent *)theEvent; |
| 138 |
- (NSMenu *)tableHeaderView:(NSTableHeaderView *)headerView popUpMenuAtHeaderColumn:(int)column; |
| 139 |
|
| 140 |
// Tick popup handling |
| 141 |
- (int)tagForTickIdentifier:(NSString *)identifier; |
| 142 |
- (NSString *)tickIdentifierForTag:(int)tag; |
| 143 |
|
| 144 |
- (void)showPlayPosition:(NSNotification *)notification; |
| 145 |
|
| 146 |
@end |