annotate src/mainframe.cpp @ 0:cb3403ca39b1

First release.
author pyon@macmini
date Sun, 30 Aug 2015 21:53:19 +0900
parents
children e4aa0e7a07ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
1 // Filename: mainframe.cpp
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
2 // Last Change: 2015-08-30 Sun 21:49:16.
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
3 //
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
4 #include <wx/filedlg.h>
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
5 #include <wx/textfile.h>
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
6 #include <wx/clipbrd.h>
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
7 #include <wx/utils.h>
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
8 #include <wx/msgdlg.h>
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
9
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
10 #include "mainframe.h"
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
11 #include "adddialog.h"
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
12
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
13 // resources
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
14 #if !defined(__WXMSW__) && !defined(__WXPM__)
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
15 #include "sample.xpm"
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
16 #endif
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
17
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
18 MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
19 : wxFrame( parent, id, title, pos, size, style ), m_timer( this, ID_TIMER )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
20 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
21 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
22 this->SetBackgroundColour( wxColour( wxT("WHEAT") ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
23 SetIcon( wxICON( sample ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
24
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
25 // menu bar
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
26 m_menubar = new wxMenuBar( 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
27 m_menuFile = new wxMenu();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
28 wxMenuItem* m_menuItemAbout = new wxMenuItem( m_menuFile, ID_MNABOUT, wxString( wxT("About") ), wxEmptyString, wxITEM_NORMAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
29 m_menuFile->Append( m_menuItemAbout );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
30
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
31 wxMenuItem* m_menuItemExit = new wxMenuItem( m_menuFile, ID_MNEXIT, wxString( wxT("Exit") ), wxEmptyString, wxITEM_NORMAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
32 m_menuFile->Append( m_menuItemExit );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
33
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
34 m_menubar->Append( m_menuFile, wxT("File") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
35
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
36 m_menuPlugin = new wxMenu();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
37 wxMenuItem* m_menuItemLoadPgin = new wxMenuItem( m_menuPlugin, ID_MNLDPGIN, wxString( wxT("Load") ), wxEmptyString, wxITEM_NORMAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
38 m_menuPlugin->Append( m_menuItemLoadPgin );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
39
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
40 wxMenuItem* m_menuItemSavePgin = new wxMenuItem( m_menuPlugin, ID_MNSVPGIN, wxString( wxT("Save as") ), wxEmptyString, wxITEM_NORMAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
41 m_menuPlugin->Append( m_menuItemSavePgin );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
42
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
43 m_menubar->Append( m_menuPlugin, wxT("Plugin") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
44
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
45 this->SetMenuBar( m_menubar );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
46
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
47 // controls
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
48 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
49
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
50 //
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
51 wxBoxSizer* bSizerShow = new wxBoxSizer( wxHORIZONTAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
52
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
53 m_textCtrlShow = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
54 bSizerShow->Add( m_textCtrlShow, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
55
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
56 m_toggleBtn = new wxToggleButton( this, ID_TGL, wxT("ON"), wxDefaultPosition, wxSize( 60, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
57 bSizerShow->Add( m_toggleBtn, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
58
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
59 bSizerTop->Add( bSizerShow, 0, wxEXPAND, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
60
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
61 //
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
62 wxBoxSizer* bSizerList = new wxBoxSizer( wxHORIZONTAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
63
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
64 m_listView = new wxListView( this, ID_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
65 bSizerList->Add( m_listView, 1, wxALL|wxEXPAND, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
66 wxListItem itemCol;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
67 itemCol.SetText( wxT("No") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
68 m_listView->InsertColumn( 0, itemCol );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
69 m_listView->SetColumnWidth( 0, 40 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
70 itemCol.SetText( wxT("text") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
71 m_listView->InsertColumn( 1, itemCol );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
72 m_listView->SetColumnWidth( 1, 80 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
73 itemCol.SetText( wxT("time") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
74 m_listView->InsertColumn( 2, itemCol );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
75 m_listView->SetColumnWidth( 2, 40 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
76 itemCol.SetText( wxT("type") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
77 m_listView->InsertColumn( 3, itemCol );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
78 m_listView->SetColumnWidth( 3, 40 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
79 itemCol.SetText( wxT("desc") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
80 m_listView->InsertColumn( 4, itemCol );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
81 m_listView->SetColumnWidth( 4, 80 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
82 //m_listView->EnableAlternateRowColours( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
83
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
84 wxBoxSizer* bSizerBtn = new wxBoxSizer( wxVERTICAL );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
85
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
86 m_buttonUp = new wxButton( this, ID_BTNUP, wxT("↑"), wxDefaultPosition, wxSize( 40, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
87 bSizerBtn->Add( m_buttonUp, 0, wxALL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
88
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
89 m_buttonDown = new wxButton( this, ID_BTNDOWN, wxT("↓"), wxDefaultPosition, wxSize( 40, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
90 bSizerBtn->Add( m_buttonDown, 0, wxALL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
91
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
92 m_buttonDel = new wxButton( this, ID_BTNDEL, wxT("-"), wxDefaultPosition, wxSize( 40, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
93 bSizerBtn->Add( m_buttonDel, 0, wxALL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
94
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
95 m_buttonAdd = new wxButton( this, ID_BTNADD, wxT("+"), wxDefaultPosition, wxSize( 40, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
96 bSizerBtn->Add( m_buttonAdd, 0, wxALL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
97
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
98 bSizerBtn->Add( 0, 0, 1, wxEXPAND, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
99
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
100 m_buttonExit = new wxButton( this, ID_EXIT, wxT("Exit"), wxDefaultPosition, wxSize( 60, -1 ), 0 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
101 bSizerBtn->Add( m_buttonExit, 0, wxALL, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
102
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
103 bSizerList->Add( bSizerBtn, 0, wxEXPAND, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
104 bSizerTop->Add( bSizerList, 1, wxEXPAND, 5 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
105
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
106 this->SetSizer( bSizerTop );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
107 this->Layout();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
108
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
109 this->Centre( wxBOTH );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
110 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
111
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
112 MainFrame::~MainFrame()
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
113 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
114 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
115
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
116 // Event Table
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
117 BEGIN_EVENT_TABLE( MainFrame, wxFrame )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
118 EVT_MENU( ID_MNABOUT, MainFrame::OnMNAbout )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
119 EVT_MENU( ID_MNEXIT, MainFrame::OnMNExit )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
120 EVT_MENU( ID_MNLDPGIN, MainFrame::OnMNLoad )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
121 EVT_MENU( ID_MNSVPGIN, MainFrame::OnMNSaveAs )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
122 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MainFrame::OnDClickItem )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
123 EVT_LIST_ITEM_SELECTED( ID_LIST, MainFrame::OnSelectItem )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
124 EVT_TIMER( ID_TIMER, MainFrame::OnTimer )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
125 EVT_BUTTON( ID_BTNUP, MainFrame::OnBtnUp )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
126 EVT_BUTTON( ID_BTNDOWN, MainFrame::OnBtnDown )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
127 EVT_BUTTON( ID_BTNDEL, MainFrame::OnBtnDel )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
128 EVT_BUTTON( ID_BTNADD, MainFrame::OnBtnAdd )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
129 EVT_BUTTON( ID_EXIT, MainFrame::OnBtnExit )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
130 EVT_TOGGLEBUTTON( ID_TGL, MainFrame::OnToggle )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
131 /*
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
132 EVT_IDLE( MainFrame::OnIdle )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
133 EVT_CLOSE( MainFrame::OnClose )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
134 */
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
135 END_EVENT_TABLE()
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
136
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
137 /* Event Handlers & Functions */
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
138 // Event Handlers
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
139 void MainFrame::OnMNAbout( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
140 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
141 wxInfoMessageBox( this );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
142 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
143
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
144 void MainFrame::OnMNExit( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
145 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
146 Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
147 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
148
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
149 void MainFrame::OnMNLoad( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
150 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
151 wxString plugin_dir = wxGetCwd() + wxFILE_SEP_PATH + wxT("plugin");
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
152 wxFileDialog fd( this, wxT("Select Plug-in file"), plugin_dir, wxEmptyString, wxT("Plug-in files (*.qbrd)|*.qbrd"), wxFD_OPEN|wxFD_FILE_MUST_EXIST );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
153 if ( fd.ShowModal() == wxID_CANCEL ) return; // the user changed idea...
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
154
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
155 wxTextFile file;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
156 file.Open( fd.GetPath() );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
157 m_listView->DeleteAllItems();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
158 for ( int i = 0, n = 0; i < file.GetLineCount(); i++ ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
159 if ( file[i].StartsWith( wxT("#") ) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
160 continue;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
161 wxArrayString s = wxSplit( file[i], ',', '\\' );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
162
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
163 m_listView->InsertItem( n, wxString::Format( wxT("%d"), n + 1 ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
164 m_listView->SetItem( n, 1, s[0] );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
165 m_listView->SetItem( n, 2, s[1] );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
166 m_listView->SetItem( n, 3, s[2] );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
167 n++;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
168 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
169 file.Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
170
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
171 m_current = 0;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
172 m_last = m_listView->GetItemText( m_current, 1 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
173 m_listView->SetItemState( m_current, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
174 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
175
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
176 void MainFrame::OnMNSaveAs( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
177 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
178 wxString plugin_dir = wxGetCwd() + wxFILE_SEP_PATH + wxT("plugin");
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
179 wxFileDialog fd( this, wxT("Save Plug-in file"), plugin_dir , wxEmptyString, wxT("Plug-in files (*.qbrd)|*.qbrd"), wxFD_SAVE|wxFD_OVERWRITE_PROMPT );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
180 if ( fd.ShowModal() == wxID_CANCEL ) return; // the user changed idea...
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
181
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
182 wxTextFile file( fd.GetPath() );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
183 if ( file.Exists() ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
184 file.Open();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
185 file.Clear();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
186 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
187 else {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
188 file.Create();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
189 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
190 for ( int r = 0; r < m_listView->GetItemCount(); r++ ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
191 wxArrayString s;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
192 for ( int c = 0; c < m_listView->GetColumnCount(); c++ ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
193 s.Add( m_listView->GetItemText( r, c ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
194 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
195 file.AddLine( wxJoin( s, ',', '\\' ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
196 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
197 file.Write();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
198 file.Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
199 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
200
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
201 void MainFrame::OnDClickItem( wxListEvent& event )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
202 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
203 long i = event.GetIndex();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
204 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
205
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
206 void MainFrame::OnSelectItem( wxListEvent& event )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
207 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
208 long i = event.GetIndex();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
209 m_current = i;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
210 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
211
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
212 // ↑
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
213 void MainFrame::OnBtnUp( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
214 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
215 long item = -1;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
216 item = m_listView->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
217 if ( item == -1 || item == 0 ) return;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
218 SwapListItem( item, item - 1 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
219 ReNumberList();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
220 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
221
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
222 // ↓
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
223 void MainFrame::OnBtnDown( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
224 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
225 long item = -1;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
226 item = m_listView->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
227 if ( item == -1 || item == m_listView->GetItemCount() - 1 ) return;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
228 SwapListItem( item, item + 1 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
229 ReNumberList();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
230 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
231
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
232 // −
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
233 void MainFrame::OnBtnDel( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
234 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
235 long item = -1;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
236 for ( ;; ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
237 item = m_listView->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
238 if ( item == -1 ) break;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
239 m_listView->DeleteItem( item );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
240 ReNumberList();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
241 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
242 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
243
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
244 // +
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
245 void MainFrame::OnBtnAdd( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
246 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
247 long item = -1;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
248 for ( ;; ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
249 item = m_listView->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
250 if ( item == -1 ) break;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
251 m_listView->InsertItem( item + 1, wxEmptyString );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
252 ReNumberList();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
253 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
254 /*
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
255 AddDialog adlg( this, wxID_ANY, wxT("a"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
256 if ( adlg.ShowModal() == wxID_OK ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
257 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
258 */
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
259 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
260
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
261 void MainFrame::OnTimer( wxTimerEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
262 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
263 if ( wxTheClipboard->Open() ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
264
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
265 wxTextDataObject data;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
266 wxTheClipboard->GetData( data );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
267 wxString s = data.GetText();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
268 if ( !m_last.IsSameAs( s ) ) { // the clipboard was changed by user
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
269 wxTheClipboard->Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
270 m_textCtrlShow->SetValue( s );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
271 for ( int r = 0; r < m_listView->GetItemCount(); r++ )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
272 m_listView->SetItemState( r, 0, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
273 m_counter = 5;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
274 m_current = 0;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
275 m_last = s;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
276 m_timer.StartOnce( (int)m_counter * 1000 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
277 return;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
278 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
279
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
280 wxString text = m_listView->GetItemText( m_current, 1 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
281 wxTheClipboard->SetData( new wxTextDataObject( text ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
282 wxTheClipboard->Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
283 m_textCtrlShow->SetValue( text );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
284 m_listView->SetItemState( ( m_current + m_listView->GetItemCount() ) % m_listView->GetItemCount() - 1, 0, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
285 m_listView->SetItemState( m_current, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
286 m_last = text;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
287
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
288 wxString time = m_listView->GetItemText( m_current, 2 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
289 time.ToLong( &m_counter, 10 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
290 m_timer.StartOnce( (int)m_counter * 1000 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
291
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
292 if ( m_current == m_listView->GetItemCount() - 1 ) m_current = 0;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
293 else m_current++;
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
294 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
295 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
296
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
297 void MainFrame::OnToggle( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
298 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
299 if ( m_toggleBtn->GetValue() ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
300 m_toggleBtn->SetLabel( wxT("OFF") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
301 EnableButtons( false );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
302 if ( m_listView->GetItemCount() > 0 ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
303 m_timer.StartOnce( 1000 );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
304 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
305 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
306 else {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
307 m_timer.Stop();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
308 m_toggleBtn->SetLabel( wxT("ON") );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
309 EnableButtons( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
310 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
311 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
312
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
313 void MainFrame::OnBtnExit( wxCommandEvent& WXUNUSED(event) )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
314 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
315 Close();
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
316 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
317
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
318 // Functions
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
319 void MainFrame::EnableButtons( bool enable )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
320 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
321 if ( enable ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
322 m_buttonUp->Enable( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
323 m_buttonDown->Enable( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
324 m_buttonDel->Enable( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
325 m_buttonAdd->Enable( true );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
326 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
327 else {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
328 m_buttonUp->Enable( false );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
329 m_buttonDown->Enable( false );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
330 m_buttonDel->Enable( false );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
331 m_buttonAdd->Enable( false );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
332 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
333 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
334
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
335 void MainFrame::ReNumberList()
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
336 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
337 for ( int i = 0; i < m_listView->GetItemCount(); i++ ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
338 m_listView->SetItem( i, 0, wxString::Format( wxT("%d"), i + 1 ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
339 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
340 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
341
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
342 void MainFrame::SwapListItem( long item1, long item2 )
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
343 {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
344 for ( int c = 0; c < m_listView->GetColumnCount(); c++ ) {
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
345 wxString buf = m_listView->GetItemText( item1, c );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
346 m_listView->SetItem( item1, c, m_listView->GetItemText( item2, c ) );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
347 m_listView->SetItem( item2, c, buf );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
348 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
349 m_listView->SetItemState( item1, 0, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
350 m_listView->SetItemState( item2, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
351 }
cb3403ca39b1 First release.
pyon@macmini
parents:
diff changeset
352