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.2 - (show annotations) (download) (as text)
Fri Jul 29 03:07:53 2005 UTC (18 years, 7 months ago) by maloninc
Branch: MAIN
CVS Tags: dev-0_9-0001-merged-01, release-0_9_1, dev-1_0-0001, dev-1_0-0002-textctrl, dev-0_9-merged-02
Changes since 1.1: +8 -3 lines
File MIME type: text/x-c++src
*for support request ID:6431
 not re-search memo data, when new memo's subject has change.

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

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