Mercurial > minori
comparison src/window.cpp @ 1:1ae666fdf9e2
*: initial commit
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Tue, 08 Aug 2023 19:49:15 -0400 |
parents | |
children | 23d0d9319a00 |
comparison
equal
deleted
inserted
replaced
0:5a76e1b94163 | 1:1ae666fdf9e2 |
---|---|
1 #include "window.h" | |
2 #include <curl/curl.h> | |
3 #include "page.h" | |
4 #include "config.h" | |
5 #include "anime.h" | |
6 #include "statistics.h" | |
7 #include "now_playing.h" | |
8 #include "16x16/document-list.png.h" | |
9 #include "16x16/film.png.h" | |
10 #include "16x16/chart.png.h" | |
11 #include "16x16/clock-history-frame.png.h" | |
12 #include "16x16/magnifier.png.h" | |
13 #include "16x16/calendar.png.h" | |
14 #include "16x16/feed.png.h" | |
15 #include "24x24/arrow-circle-double-135.png.h" | |
16 #include "24x24/folder-open.png.h" | |
17 #include "24x24/gear.png.h" | |
18 | |
19 Config Weeaboo::config = Config(); | |
20 | |
21 WeeabooFrame::WeeabooFrame(const wxString& title, const wxPoint& pos, const wxSize& size) | |
22 : wxFrame(NULL, wxID_ANY, title, pos, size) { | |
23 /* ---- Menu Bar ---- */ | |
24 wxMenu* library_folders_submenu = new wxMenu; | |
25 library_folders_submenu->Append(ID_AddLibraryFolder, "&Add library folder"); | |
26 library_folders_submenu->Append(ID_ScanLibraryFolders, "&Rescan library folders"); | |
27 | |
28 wxMenu* file_menu = new wxMenu; | |
29 file_menu->AppendSubMenu(library_folders_submenu, "&Library folders"); | |
30 file_menu->Append(ID_SyncAnimeList, "&Sync anime list\tCtrl+S"); | |
31 file_menu->AppendSeparator(); | |
32 file_menu->Append(ID_PlayNextEpisode, "Play &next episode\tCtrl+N"); | |
33 file_menu->Append(ID_PlayRandomEpisode, "Play &random episode\tCtrl+R"); | |
34 file_menu->AppendSeparator(); | |
35 file_menu->Append(wxID_EXIT); | |
36 | |
37 wxMenu* help_menu = new wxMenu; | |
38 help_menu->Append(wxID_ABOUT); | |
39 | |
40 wxMenuBar* menu_bar = new wxMenuBar; | |
41 menu_bar->Append(file_menu, "&File"); | |
42 menu_bar->Append(help_menu, "&Help"); | |
43 | |
44 SetMenuBar(menu_bar); | |
45 | |
46 /* Toolbar */ | |
47 wxToolBar* top_toolbar = CreateToolBar(); | |
48 top_toolbar->SetToolBitmapSize(wxSize(24,24)); | |
49 top_toolbar->AddTool(ID_ToolbarSync, wxT("Sync"), wxBITMAP_PNG_FROM_DATA(arrow_circle_double_135)); | |
50 top_toolbar->Realize(); | |
51 | |
52 /* ---- Sidebar ---- */ | |
53 /* This first panel is only for the sizer... */ | |
54 wxPanel* left_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(140, 600), wxTAB_TRAVERSAL, wxPanelNameStr); | |
55 wxPanel* left_panel_inside = new wxPanel(left_panel, wxID_ANY, wxPoint(6, 6), wxSize(128, 588), wxTAB_TRAVERSAL); | |
56 wxToolBar* left_toolbar = new wxToolBar(left_panel_inside, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_FLAT | wxTB_VERTICAL | wxTB_HORZ_TEXT | wxTB_NODIVIDER); | |
57 left_toolbar->SetMargins(6, 6); | |
58 left_toolbar->SetToolBitmapSize(wxSize(16,16)); | |
59 left_toolbar->AddRadioTool(ID_NowPlaying, "Now Playing", wxBITMAP_PNG_FROM_DATA(film)); | |
60 left_toolbar->AddRadioTool(ID_AnimeList, "Anime List", wxBITMAP_PNG_FROM_DATA(document_list)); | |
61 left_toolbar->AddRadioTool(ID_History, "History", wxBITMAP_PNG_FROM_DATA(clock_history_frame)); | |
62 left_toolbar->AddRadioTool(ID_Statistics, "Statistics", wxBITMAP_PNG_FROM_DATA(chart)); | |
63 left_toolbar->AddRadioTool(ID_Search, "Search", wxBITMAP_PNG_FROM_DATA(magnifier)); | |
64 left_toolbar->AddRadioTool(ID_Seasons, "Seasons", wxBITMAP_PNG_FROM_DATA(calendar)); | |
65 left_toolbar->AddRadioTool(ID_Torrents, "Torrents", wxBITMAP_PNG_FROM_DATA(feed)); | |
66 | |
67 /* ---- Initialize our pages ---- */ | |
68 wxPanel* right_panel = new wxPanel(this, wxID_ANY, wxPoint(140, 0), wxSize(460, 600), wxTAB_TRAVERSAL, wxPanelNameStr); | |
69 now_playing = new NowPlaying(&pages[PAGE_NOW_PLAYING], right_panel); | |
70 anime_list = new AnimeListPage(&pages[PAGE_ANIME_LIST], right_panel); | |
71 anime_list->SyncAnimeList(); | |
72 anime_list->LoadAnimeList(this); | |
73 statistics = new Statistics(&pages[PAGE_STATISTICS], right_panel); | |
74 | |
75 status.current_page = PAGE_ANIME_LIST; // The below function depends on this value being set? | |
76 set_page(PAGE_ANIME_LIST); | |
77 left_toolbar->ToggleTool(ID_AnimeList, true); | |
78 left_toolbar->Realize(); | |
79 | |
80 wxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); | |
81 sizer->Add(left_panel, 0, wxEXPAND, 10); | |
82 sizer->Add(right_panel, 1, wxEXPAND, 10); | |
83 sizer->SetMinSize(600, 600); | |
84 this->SetSizer(sizer); | |
85 sizer->SetSizeHints(this); | |
86 | |
87 } | |
88 | |
89 bool Weeaboo::OnInit() { | |
90 config.Load(); | |
91 if (curl_global_init(CURL_GLOBAL_DEFAULT) != 0) { | |
92 wxMessageBox("libcurl failed to initialize!", | |
93 "Error", wxOK | wxICON_ERROR); | |
94 } | |
95 wxSystemOptions::SetOption("msw.remap", | |
96 wxSystemOptions::HasOption("msw.remap") | |
97 ? wxSystemOptions::GetOptionInt("msw.remap") | |
98 : wxDisplayDepth() <= 8 ? 1 : 2 | |
99 ); | |
100 wxImage::AddHandler(new wxPNGHandler); | |
101 frame = new WeeabooFrame("Weeaboo", wxPoint(50, 50), wxSize(450, 340)); | |
102 frame->Show(true); | |
103 return true; | |
104 } | |
105 | |
106 #define TOOLBAR_HANDLER(name, page) \ | |
107 void WeeabooFrame::name(wxCommandEvent& event) { \ | |
108 set_page(page); \ | |
109 } | |
110 TOOLBAR_HANDLER(OnNowPlaying, PAGE_NOW_PLAYING) | |
111 TOOLBAR_HANDLER(OnAnimeList, PAGE_ANIME_LIST) | |
112 TOOLBAR_HANDLER(OnHistory, PAGE_HISTORY) | |
113 TOOLBAR_HANDLER(OnStatistics, PAGE_STATISTICS) | |
114 TOOLBAR_HANDLER(OnSearch, PAGE_SEARCH) | |
115 TOOLBAR_HANDLER(OnSeasons, PAGE_SEASONS) | |
116 TOOLBAR_HANDLER(OnTorrents, PAGE_TORRENTS) | |
117 #undef TOOLBAR_HANDLER | |
118 | |
119 void WeeabooFrame::OnClose(wxCloseEvent& event) { | |
120 Weeaboo::config.Save(); | |
121 curl_global_cleanup(); | |
122 delete anime_list; | |
123 event.Skip(); | |
124 } | |
125 | |
126 void WeeabooFrame::OnExit(wxCommandEvent& event) { | |
127 Close(true); | |
128 } | |
129 | |
130 void WeeabooFrame::OnAbout(wxCommandEvent& event) { | |
131 wxMessageBox("To be written", | |
132 "About Weeaboo", wxOK | wxICON_INFORMATION); | |
133 } | |
134 | |
135 void WeeabooFrame::OnAddFolder(wxCommandEvent& event) { | |
136 wxLogMessage("OnAddFolder"); | |
137 } | |
138 | |
139 void WeeabooFrame::OnScanFolders(wxCommandEvent& event) { | |
140 wxLogMessage("OnScanFolders"); | |
141 } | |
142 | |
143 void WeeabooFrame::OnNextEpisode(wxCommandEvent& event) { | |
144 wxLogMessage("OnNextEpisode"); | |
145 } | |
146 | |
147 void WeeabooFrame::OnSyncList(wxCommandEvent& event) { | |
148 anime_list->SyncAnimeList(); | |
149 anime_list->LoadAnimeList(this); | |
150 } | |
151 | |
152 void WeeabooFrame::OnRandomEpisode(wxCommandEvent& event) { | |
153 wxLogMessage("OnRandomEpisode"); | |
154 } | |
155 | |
156 AnimeListPage* WeeabooFrame::GetAnimeList() { | |
157 return anime_list; | |
158 } |