Develop and Download Open Source Software

Browse CVS Repository

Contents of /malonnote/mnController.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download) (as text)
Sat Jul 30 10:55:16 2005 UTC (18 years, 7 months ago) by maloninc
Branch: MAIN
CVS Tags: dev-1_0-0006, dev-1_0-0005, dev-1_0-0004
Changes since 1.3: +13 -0 lines
File MIME type: text/x-c++src
Add WikiDataEntryDialog,but not implemented save-data

1 // -*- C++ -*- generated by wxGlade 0.3.5.1 on Wed Jun 29 12:57:38 2005
2
3 #include "mnID.h"
4 #include "mnDef.h"
5 #include "mnController.h"
6 #include <wx/config.h>
7
8 BEGIN_EVENT_TABLE(mnController, wxEvtHandler)
9 EVT_TEXT_ENTER(ID_SearchTextCtrl, mnController::handleSearch)
10 EVT_TREE_SEL_CHANGED(ID_SearchTree, mnController::handleTreeItemSelect)
11 EVT_TREE_SEL_CHANGING(ID_SearchTree, mnController::handleTreeItemSelecting)
12 EVT_TREE_BEGIN_LABEL_EDIT(ID_SearchTree, mnController::handleBeginLabelEdit)
13 EVT_TREE_END_LABEL_EDIT(ID_SearchTree, mnController::handleEndLabelEdit)
14 EVT_MENU(ID_MenuFileNew, mnController::handleNewButton)
15 EVT_MENU(ID_MenuFileRemove, mnController::handleRemoveButton)
16 EVT_MENU(ID_MenuFileEdit, mnController::handleEditButton)
17 EVT_MENU(ID_MenuFileSave, mnController::handleSaveButton)
18 EVT_MENU(ID_MenuFileExit, mnController::handleExit)
19 EVT_MENU(ID_MenuFileConfig, mnController::handleConfig)
20 EVT_MENU(wxID_ABOUT, mnController::handleAbout)
21 EVT_CLOSE(mnController::handleClose)
22 END_EVENT_TABLE()
23
24 mnController::mnController(mnFrame* inframe)
25 {
26 wxString* dirName = new wxString();
27 wxString gotDirName;
28 wxDirDialog* dlg;
29
30 frame = inframe;
31 isEditing = FALSE;
32
33 /* create wiki model */
34 wxConfig* config = new wxConfig(wxT(CONF_APP_NAME));
35 if(config->Read(wxT(CONF_WIKI_DIR), dirName) == FALSE) {
36 delete dirName;
37 dlg = new wxDirDialog(frame);
38 if(dlg->ShowModal() == wxID_OK) {
39 gotDirName = dlg->GetPath();
40 wiki = new mnModel(gotDirName.mb_str());
41 config->Write(wxT(CONF_WIKI_DIR), gotDirName.c_str());
42 }
43 else {
44 frame->Close();
45 }
46 }
47 else {
48 wiki = new mnModel(dirName->mb_str());
49 }
50
51 delete config;
52 }
53
54 void mnController::handleConfig(wxCommandEvent& event)
55 {
56 wxDirDialog* dlg;
57 wxString gotDirName;
58 wxString* dirName = new wxString();
59
60 saveData();
61
62 wxConfig* config = new wxConfig(wxT(CONF_APP_NAME));
63
64 if(config->Read(wxT(CONF_WIKI_DIR), dirName)) {
65 if(wxMessageBox(*dirName, wxT("Change data directory?"), wxYES_NO|wxICON_QUESTION) == wxNO){
66 delete config;
67 isEditing = FALSE;
68 return;
69 }
70 }
71
72 dlg = new wxDirDialog(frame);
73 if(dlg->ShowModal() == wxID_OK) {
74 gotDirName = dlg->GetPath();
75 delete wiki;
76 wiki = new mnModel(gotDirName.mb_str());
77 config->Write(wxT(CONF_WIKI_DIR), gotDirName.c_str());
78 }
79 delete config;
80
81 frame->showSearchResult(wiki);
82 isEditing = FALSE;
83 }
84
85 void mnController::handleSearch(wxCommandEvent& event)
86 {
87 wxString* str = new wxString(event.GetString());
88 WikiList* wikiList;
89 WikiList::Node* node;
90
91 saveData();
92
93 wikiList = wiki->search(str->mb_str());
94
95 node = wikiList->GetFirst();
96 if(!node) {
97 wxLogMessage(wxT("Not Found! [%s]"), (const char*)str->c_str());
98 return;
99 }
100
101 wiki->addSearchStr(str);
102 frame->showSearchResult(wiki);
103 isEditing = FALSE;
104 }
105
106 void mnController::handleNewButton(wxCommandEvent& event)
107 {
108 if(isEditing) return;
109
110 WikiData* wikiData = wiki->newWikiData();
111 frame->showNewItem(wikiData);
112 saveData();
113 isEditing = TRUE;
114 }
115
116 void mnController::handleRemoveButton(wxCommandEvent& event)
117 {
118 wxTreeItemData* item = frame->getSelectedItem();
119
120 if(item){
121 ((WikiData*)(item))->removeDataFile();
122 }
123 else {
124 wiki->removeSearchStr(frame->getSelectedLabel());
125 }
126 frame->showSearchResult(wiki);
127 isEditing = FALSE;
128 }
129
130 void mnController::handleTreeItemSelect(wxTreeEvent& event)
131 {
132 frame->showSelectedItemText(event);
133 isEditing = FALSE;
134 }
135
136
137 void mnController::handleTreeItemSelecting(wxTreeEvent& event)
138 {
139 saveData();
140
141 if(frame->isNewItem(event.GetOldItem())) {
142 frame->showSearchResult(wiki);
143 event.Veto();
144 }
145 }
146
147 void mnController::handleBeginLabelEdit(wxTreeEvent& event)
148 {
149 if(!frame->isEditableTreeLabel(event.GetItem())) event.Veto();
150 }
151
152 void mnController::handleEndLabelEdit(wxTreeEvent& event)
153 {
154 wxString newSubject = event.GetLabel();
155 wxTreeItemData* item = frame->getSelectedItem();
156
157 saveData();
158
159 if(item == NULL) return ;
160
161 if(newSubject.Len() == 0) {
162 event.Veto();
163 frame->showSearchResult(wiki);
164 return;
165 }
166
167 ((WikiData*)(item))->modSubject(&newSubject);
168 if(frame->isNewItem(event.GetItem())){
169 return;
170 }
171
172 event.Veto();
173 frame->showSearchResult(wiki);
174 }
175
176 void mnController::handleClose(wxCloseEvent& event)
177 {
178 saveData();
179 frame->Destroy();
180 }
181
182 void mnController::handleExit(wxCommandEvent& event)
183 {
184 frame->Close();
185 }
186
187
188 void mnController::handleAbout(wxCommandEvent& event)
189 {
190 wxMessageBox(wxT(MN_APP_VERSION), wxT("Abount MalonNote"), wxOK|wxICON_INFORMATION);
191 }
192
193
194 void mnController::handleEditButton(wxCommandEvent& event)
195 {
196 wxLogMessage(wxT("Edit"));
197 frame->showPlainTextCtrl();
198 }
199
200 void mnController::handleSaveButton(wxCommandEvent& event)
201 {
202 wxLogMessage(wxT("Save"));
203 frame->hidePlainTextCtrl();
204 }
205
206 void mnController::saveData()
207 {
208 #if 0
209 wxTreeItemData* item = frame->getSelectedItem();
210 wxString plainTextStr = frame->getPlainText();
211 if(item == NULL) return ;
212
213 ((WikiData*)(item))->modText(&plainTextStr);
214 ((WikiData*)(item))->save();
215 //frame->showSearchResult(wiki);
216 #endif
217 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26