AmendHub

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