Download
jcs
/wikipedia
/wikipedia.h
(View History)
jcs main+browser: Make cmd+click on links open them in a new window | Latest amendment: 54 on 2023-10-30 |
1 | /* |
2 | * Copyright (c) 2022 joshua stein <jcs@jcs.org> |
3 | * |
4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * copyright notice and this permission notice appear in all copies. |
7 | * |
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
15 | */ |
16 | |
17 | #ifndef __WIKIPEDIA_H__ |
18 | #define __WIKIPEDIA_H__ |
19 | |
20 | #include "browser.h" |
21 | #include "http.h" |
22 | |
23 | #define PROGRAM_NAME "Wikipedia" |
24 | |
25 | #define MBAR_ID 128 |
26 | |
27 | #define SETTINGS_DLOG_ID 129 |
28 | #define SETTINGS_HOSTNAME_ID 3 |
29 | |
30 | #define STR_HOSTNAME_ID 1000 |
31 | #define DEFAULT_HOSTNAME "http-wikipedia.jcsdotorg.workers.dev" |
32 | |
33 | #define APPLE_MENU_ID 128 |
34 | #define APPLE_MENU_ABOUT_ID 1 |
35 | |
36 | #define FILE_MENU_ID 129 |
37 | #define FILE_MENU_NEW_ID 1 |
38 | #define FILE_MENU_SETTINGS_ID 3 |
39 | #define FILE_MENU_QUIT_ID 5 |
40 | |
41 | #define EDIT_MENU_ID 130 |
42 | #define EDIT_MENU_CUT_ID 1 |
43 | #define EDIT_MENU_COPY_ID 2 |
44 | #define EDIT_MENU_PASTE_ID 3 |
45 | #define EDIT_MENU_SELECT_ALL_ID 4 |
46 | |
47 | #define VIEW_MENU_ID 131 |
48 | #define VIEW_MENU_DEBUG_ID 1 |
49 | |
50 | extern MenuHandle file_menu, edit_menu, view_menu; |
51 | |
52 | void menu_defaults(void); |
53 | |
54 | enum { |
55 | WP_STATE_XML_INIT, |
56 | WP_STATE_XML_PARSE, |
57 | WP_STATE_WIKITEXT_INIT, |
58 | WP_STATE_WIKITEXT_PARSE, |
59 | WP_STATE_HAVE_REDIRECT, |
60 | WP_STATE_DONE |
61 | }; |
62 | |
63 | struct wikipedia_request { |
64 | short state; |
65 | struct browser *browser; |
66 | struct http_request *http_request; |
67 | char *normalized_title; |
68 | size_t read_len; |
69 | size_t article_len; |
70 | |
71 | char *buf; |
72 | size_t buf_size; |
73 | size_t buf_idx; |
74 | short refs, curlys, brackets; |
75 | unsigned long style, last_style; |
76 | bool trim_whitespace, redirect; |
77 | }; |
78 | |
79 | struct wikipedia_request * wikipedia_fetch_article(struct browser *, |
80 | char *); |
81 | size_t wikipedia_fetch_search_results(struct browser *browser, char *query, |
82 | char ***results); |
83 | struct wikipedia_request * wikipedia_read_cached_article(struct browser *browser, |
84 | char *name); |
85 | void wikipedia_request_present(struct wikipedia_request *wpr); |
86 | void wikipedia_request_process(struct wikipedia_request *wpr); |
87 | void wikipedia_request_free(struct wikipedia_request **wprptr); |
88 | |
89 | #endif |