Develop and Download Open Source Software

Browse CVS Repository

Annotation of /malonnote/mnFrame.cpp

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


Revision 1.8 - (hide annotations) (download) (as text)
Tue Aug 2 07:21:38 2005 UTC (18 years, 8 months ago) by maloninc
Branch: MAIN
CVS Tags: dev-1_0-0010
Changes since 1.7: +27 -6 lines
File MIME type: text/x-c++src
implement mnlink, and URL link.
And HTML tiny rendaring
but, not implemet {{}} tag

1 maloninc 1.1 // -*- C++ -*- generated by wxGlade 0.3.5.1 on Wed Jun 29 12:57:38 2005
2 maloninc 1.7 #include <wx/regex.h>
3 maloninc 1.1 #include "mnID.h"
4     #include "mnDef.h"
5     #include "mnFrame.h"
6 maloninc 1.3 #include "mnDialog.h"
7 maloninc 1.1
8    
9     mnFrame::mnFrame(wxWindow* parent, int id, const wxString& title, const wxPoint& pos, const wxSize& size, long style):
10     wxFrame(parent, id, title, pos, size, wxDEFAULT_FRAME_STYLE)
11     {
12     // begin wxGlade: mnFrame::mnFrame
13     splitWindow = new wxSplitterWindow(this, -1, wxDefaultPosition, wxDefaultSize, wxSP_3D|wxSP_BORDER);
14     rightPanel = new wxPanel(splitWindow, -1);
15     leftPanel = new wxPanel(splitWindow, -1);
16     panel = new wxPanel(this, -1);
17     searchLaebl = new wxStaticText(panel, -1, wxT("Search"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE);
18     searchTextCtrl = new wxTextCtrl(this, ID_SearchTextCtrl, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
19     searchTree = new wxTreeCtrl(leftPanel, ID_SearchTree, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT|wxTR_DEFAULT_STYLE|wxSUNKEN_BORDER|wxTR_EDIT_LABELS);
20 maloninc 1.7 wikiHtmlTextCtrl = new mnHtmlWindow(rightPanel, ID_HtmlTextCtrl);
21 maloninc 1.1
22     // begin add by hand
23     menuBar = new wxMenuBar();
24     SetMenuBar(menuBar);
25    
26     // File menu
27     wxMenu* tmp_menu_1 = new wxMenu();
28     tmp_menu_1->Append(ID_MenuFileNew, _("New\tCtrl+N"), wxT(""), wxITEM_NORMAL);
29 maloninc 1.2 tmp_menu_1->Append(ID_MenuFileEdit, _("Edit\tCtrl+E"), wxT(""), wxITEM_NORMAL);
30 maloninc 1.1 tmp_menu_1->Append(ID_MenuFileRemove, _("Remove\tCtrl+R"), wxT(""), wxITEM_NORMAL);
31 maloninc 1.2 tmp_menu_1->AppendSeparator();
32 maloninc 1.1 tmp_menu_1->Append(ID_MenuFileConfig, _("Configure..."), wxT(""), wxITEM_NORMAL);
33 maloninc 1.2 tmp_menu_1->AppendSeparator();
34 maloninc 1.1 tmp_menu_1->Append(ID_MenuFileExit, _("Quit\tCtrl+Q"), wxT(""), wxITEM_NORMAL);
35     menuBar->Append(tmp_menu_1, _("&File"));
36    
37     // Help menu
38     wxMenu* tmp_menu_2 = new wxMenu();
39     tmp_menu_2->Append(wxID_ABOUT, _("&About"), wxT(""), wxITEM_NORMAL);
40     menuBar->Append(tmp_menu_2, _("&Help"));
41    
42     #ifdef __WXMSW__
43     wxIcon icon(wxT(APP_ICON_NAME), wxBITMAP_TYPE_ICO_RESOURCE);
44     SetIcon(icon);
45     #endif
46     // end add by hand
47    
48     set_properties();
49     do_layout();
50     // end wxGlade
51    
52     /* create search tree */
53     searchItemRoot = searchTree->AddRoot(wxT(LABEL_ITEM_TREE), -1, -1, NULL);
54     newItemRoot = searchTree->AppendItem(searchItemRoot, wxT(LABEL_NEW_ITEM), -1, -1, NULL);
55     }
56    
57     void mnFrame::set_properties()
58     {
59     // begin wxGlade: mnFrame::set_properties
60     SetTitle(wxT("Malon Note"));
61     SetSize(wxSize(900, 572));
62     searchTextCtrl->SetFocus();
63     // end wxGlade
64     }
65    
66    
67     void mnFrame::do_layout()
68     {
69     wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);
70 maloninc 1.3 rightPanelSizer = new wxGridSizer(1, 1, 0, 0);
71 maloninc 1.1 wxBoxSizer* leftPanelSizer = new wxBoxSizer(wxHORIZONTAL);
72     wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);
73     wxBoxSizer* labelSizer = new wxBoxSizer(wxHORIZONTAL);
74     labelSizer->Add(searchLaebl, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
75     panel->SetAutoLayout(true);
76     panel->SetSizer(labelSizer);
77     labelSizer->Fit(panel);
78     labelSizer->SetSizeHints(panel);
79     topSizer->Add(panel, 0, wxEXPAND, 0);
80     topSizer->Add(searchTextCtrl, 1, wxTOP|wxBOTTOM|wxEXPAND|wxFIXED_MINSIZE, 1);
81     mainSizer->Add(topSizer, 0, wxEXPAND, 0);
82     leftPanelSizer->Add(searchTree, 1, wxEXPAND, 0);
83     leftPanel->SetAutoLayout(true);
84     leftPanel->SetSizer(leftPanelSizer);
85     leftPanelSizer->Fit(leftPanel);
86     leftPanelSizer->SetSizeHints(leftPanel);
87 maloninc 1.2 rightPanelSizer->Add(wikiHtmlTextCtrl, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
88 maloninc 1.1 rightPanel->SetAutoLayout(true);
89     rightPanel->SetSizer(rightPanelSizer);
90     rightPanelSizer->Fit(rightPanel);
91     rightPanelSizer->SetSizeHints(rightPanel);
92     splitWindow->SplitVertically(leftPanel, rightPanel, 250);
93     mainSizer->Add(splitWindow, 1, wxEXPAND, 0);
94     SetAutoLayout(true);
95     SetSizer(mainSizer);
96     Layout();
97    
98     searchTree->Expand(searchItemRoot);
99     searchTree->Expand(newItemRoot);
100     }
101    
102     void mnFrame::showSearchResult(mnModel* wiki)
103     {
104     const wxArrayString* searchStrList;
105     WikiList* wikiList;
106     WikiList::Node* node;
107     int i;
108    
109     searchTree->DeleteChildren(searchItemRoot);
110     newItemRoot = searchTree->AppendItem(searchItemRoot, wxT(LABEL_NEW_ITEM), -1, -1, NULL);
111    
112     searchStrList = wiki->getSearchStrList();
113     for(i = 0; i < searchStrList->Count(); i++) {
114     wxString& searchStr = searchStrList->Item(i);
115    
116     wikiList = wiki->search(searchStr.mb_str());
117     addSearchResult(&searchStr, wikiList);
118     }
119    
120     searchTree->ScrollTo(searchItemRoot);
121     }
122    
123     void mnFrame::addSearchResult(wxString* searchStr, WikiList* wikiList)
124     {
125     wxTreeItemId searchItem;
126     WikiList::Node* node;
127     WikiData* data;
128     const wxString* subject;
129    
130     searchItem = searchTree->AppendItem(searchItemRoot, *searchStr, -1, -1, NULL);
131     node = wikiList->GetFirst();
132     while(node) {
133     data = node->GetData();
134     subject = data->getSubject();
135     searchTree->AppendItem(searchItem, *subject, -1, -1, (wxTreeItemData*)data);
136     node = node->GetNext();
137     }
138     searchTree->Expand(searchItemRoot);
139     searchTree->Expand(searchItem);
140     }
141    
142     void mnFrame::showSelectedItemText(wxTreeEvent& event)
143     {
144     wxTreeItemData* item = searchTree->GetItemData(event.GetItem());
145     if(item == NULL) {
146 maloninc 1.2 wikiHtmlTextCtrl->SetPage(wxT(""));
147 maloninc 1.1 return;
148     }
149    
150     const wxString* fileName = ((WikiData*)(item))->getFileName();
151 maloninc 1.2 const wxString* wikiText = ((WikiData*)(item))->getText();
152 maloninc 1.7 wxString htmlText(*wikiText);
153    
154     /* [[ ]] */
155 maloninc 1.8 wxRegEx exp1(wxT("\\[\\[(.+)\\]\\]"));
156 maloninc 1.7 exp1.Replace(&htmlText, wxT("<a href=mnlink:\\1>\\1</a>"));
157    
158     /* http:// */
159 maloninc 1.8 wxRegEx exp2(wxT("(http://[\\.|&|-|%|$|#|=|_|-|~|\\?|/|a-z|A-Z|0-9]+)"));
160 maloninc 1.7 exp2.Replace(&htmlText, wxT("<a href=\\1>\\1</a>"));
161    
162 maloninc 1.8 /* file:// */
163     wxRegEx exp3(wxT("(file://[\\.|&|-|%|$|#|=|_|-|~|\\?|/|a-z|A-Z|0-9]+)"));
164     exp3.Replace(&htmlText, wxT("<a href=\\1>\\1</a>"));
165    
166     /* *XXXX */
167     wxRegEx exp4(wxT("^\\*([^\\*]+)"), wxRE_NEWLINE|wxRE_DEFAULT);
168     exp4.Replace(&htmlText, wxT("<h3>\\1</h3>"));
169    
170     /* **XXXX */
171     wxRegEx exp5(wxT("^\\*\\*([^\\*]+)"), wxRE_NEWLINE|wxRE_DEFAULT);
172     exp5.Replace(&htmlText, wxT("<h4>\\1</h4>"));
173    
174     /* :''XXXX'': */
175     wxRegEx exp6(wxT("^:''(.+)'':(.+)"), wxRE_NEWLINE|wxRE_DEFAULT);
176     exp6.Replace(&htmlText, wxT("<u><b>\\1:\\2</b></u>"));
177    
178     /* ---- */
179     wxRegEx exp7(wxT("^----.+"), wxRE_NEWLINE|wxRE_DEFAULT);
180     exp7.Replace(&htmlText, wxT("<hr>"));
181    
182 maloninc 1.7 /* make HTML document */
183 maloninc 1.8 wxString wikiHtml;
184     wikiHtml.Append(wxT("<meta http-equiv=\"Content-Type\"content=\"text/html; charset=EUC-JP\"><pre>"));
185     wikiHtml.Append(htmlText);
186     wikiHtml.Append(wxT("</pre>"));
187    
188 maloninc 1.1
189 maloninc 1.2 wikiHtmlTextCtrl->SetPage(wikiHtml);
190 maloninc 1.1 }
191    
192     void mnFrame::showNewItem(WikiData* data)
193     {
194     wxTreeItemId itemId;
195    
196     itemId = searchTree->AppendItem(newItemRoot, *(data->getSubject()), -1, -1, (wxTreeItemData*)data);
197     searchTree->Expand(searchItemRoot);
198     searchTree->Expand(newItemRoot);
199     searchTree->SelectItem(itemId);
200     }
201    
202     wxTreeItemData* mnFrame::getSelectedItem()
203     {
204     return searchTree->GetItemData(searchTree->GetSelection());
205     }
206    
207     wxString mnFrame::getSelectedLabel()
208     {
209     return searchTree->GetItemText(searchTree->GetSelection());
210     }
211    
212     bool mnFrame::isEditableTreeLabel(wxTreeItemId id)
213     {
214     return !(searchTree->GetItemParent(id) == searchItemRoot || id == searchItemRoot);
215     }
216    
217     bool mnFrame::isNewItem(wxTreeItemId id)
218     {
219     return (searchTree->GetItemParent(id) == newItemRoot);
220     }
221    

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