55 | | /** Structure used to set device type. */ |
56 | | typedef enum { |
57 | | WEBI_DEVICE_TYPE_SCREEN, |
58 | | WEBI_DEVICE_TYPE_HANDHELD, |
59 | | WEBI_DEVICE_TYPE_PRINTER |
60 | | } WebiDeviceType; |
61 | | |
62 | | /** Rendering engine settings structure |
63 | | * Rendering engine settings structure. |
64 | | */ |
65 | | |
66 | | typedef struct WebiSettings_ WebiSettings; |
67 | | struct WebiSettings_ { |
68 | | gboolean javascript_enabled; |
69 | | gboolean java_enabled; |
70 | | gboolean plugins_enabled; |
71 | | gboolean autoload_images; |
72 | | gfloat minimum_font_size; |
73 | | gfloat default_font_size; |
74 | | gfloat default_fixed_font_size; |
75 | | const gchar* default_text_encoding; |
76 | | const gchar* serif_font_family; |
77 | | const gchar* sans_serif_font_family; |
78 | | const gchar* fixed_font_family; |
79 | | const gchar* standard_font_family; |
80 | | const gchar* cursive_font_family; |
81 | | const gchar* fantasy_font_family; |
82 | | const gchar* user_agent_string; |
83 | | |
84 | | /** Full url (including port) of the proxy to use. If NULL, empty (""), */ |
85 | | const gchar* http_proxy; |
86 | | |
87 | | /** Rendering Mode */ |
88 | | const WebiDeviceType device_type; |
89 | | }; |
90 | | |
91 | | typedef struct WebiLoadStatus_ WebiLoadStatus; |
92 | | |
93 | | /** Type of the status message. */ |
94 | | typedef enum { |
95 | | /** Report start loading a resource */ |
96 | | WEBI_LOADING_START, |
97 | | /** Report progress in loading a resource */ |
98 | | WEBI_LOADING, |
99 | | /** Report a successful resource load */ |
100 | | WEBI_LOADING_COMPLETE, |
101 | | /** Report an error in resource loading. */ |
102 | | WEBI_LOADING_ERROR |
103 | | } WebiStatus; |
104 | | |
105 | | /** Status message. */ |
106 | | struct WebiLoadStatus_ { |
107 | | /** Status of the loading process. */ |
108 | | WebiStatus status; |
109 | | |
110 | | /** Number of files to download */ |
111 | | guint files; |
112 | | |
113 | | /** Number of files received with Content-Length set*/ |
114 | | guint filesWithSize; |
115 | | |
116 | | /** Number of files received */ |
117 | | guint ready; |
118 | | |
119 | | /** Bytes available for resource. */ |
120 | | guint size; |
121 | | |
122 | | /** Bytes received from resource. */ |
123 | | guint received; |
124 | | |
125 | | /** Total size of the resources including those that didn't have |
126 | | Content-Length set. */ |
127 | | guint totalSize; |
128 | | |
129 | | /** Bytes received total. */ |
130 | | guint totalReceived; |
131 | | |
132 | | /** Error code. */ |
133 | | gint statusCode; |
134 | | }; |
135 | | |
136 | | |
137 | | |
138 | | typedef struct WebiPromptArgs_ WebiPromptArgs; |
139 | | |
140 | | |
141 | | /** Type of message prompt if message prompt was an alert (ok button), confirm (yes/no) or input (textfield, ok, cancel). |
142 | | */ |
143 | | typedef enum { |
144 | | /** alert (ok button)*/ |
145 | | WEBI_ALERT, |
146 | | /**confirm (yes/no)*/ |
147 | | WEBI_CONFIRM, |
148 | | /**or input (textfield, ok, cancel) */ |
149 | | WEBI_INPUT |
150 | | } WebiPromptType; |
151 | | |
152 | | /** Structure used to pass arguments of javascript prompt messages |
153 | | */ |
154 | | struct WebiPromptArgs_ |
155 | | { |
156 | | /*<public>*/ |
157 | | |
158 | | /** Flag specifying if message prompt was an alert (ok button), confirm (yes/no) or |
159 | | * input (textfield, ok, cancel). */ |
160 | | WebiPromptType type; |
161 | | |
162 | | /** The prompt message*/ |
163 | | const gchar* msg; |
164 | | |
165 | | /** default input text. |
166 | | * if type == WEBI_INPUT contains default input text to be shown in input field */ |
167 | | const gchar* default_input; |
168 | | |
169 | | /** text entered in the prompt textfield |
170 | | * should be set if type == WEBI_INPUT |
171 | | * string will be deallocated by signaller with g_free(). |
172 | | * ie. there's an ownership change. */ |
173 | | gchar* out_input; |
174 | | |
175 | | /** flag specifying if the button pressed was ok or cancel, yes or no |
176 | | * \TRUE means ok or yes |
177 | | * \FALSE means cancel or no |
178 | | */ |
179 | | gboolean out_ok_pressed; |
180 | | }; |
181 | | |
182 | | typedef struct WebiAuthArgs_ WebiAuthArgs; |
183 | | |
184 | | /** Structure used to pass arguments of javascript prompt messages |
185 | | */ |
186 | | struct WebiAuthArgs_ |
187 | | { |
188 | | /*< public >*/ |
189 | | /** realm of authentication */ |
190 | | const gchar* realm; |
191 | | |
192 | | /** Out parameter containing username from user. |
193 | | * string will be deallocated by caller with g_free(). |
194 | | * ie. there's an ownership change.*/ |
195 | | gchar* out_username; |
196 | | |
197 | | /** Out parameter containing password from user. |
198 | | * string will be deallocated by caller with g_free() |
199 | | * ie. there's an ownership change. */ |
200 | | |
201 | | gchar* out_password; |
202 | | |
203 | | /** flag specifying if the button pressed was ok or cancel |
204 | | * \TRUE means ok |
205 | | * \FALSE otherwise */ |
206 | | gboolean out_ok_pressed; |
207 | | }; |
208 | | |
209 | | typedef struct WebiCookie_ WebiCookie; |
210 | | |
211 | | /** Structure used to pass arguments of javascript prompt messages |
212 | | */ |
213 | | struct WebiCookie_ |
214 | | { |
215 | | /*<public>*/ |
216 | | |
217 | | /** Whole cookie */ |
218 | | const gchar* cookie; |
219 | | |
220 | | /** Cookie name */ |
221 | | const gchar* name; |
222 | | |
223 | | /** Cookie value */ |
224 | | const gchar* value; |
225 | | |
226 | | /* Cookie comment */ |
227 | | const gchar* comment; |
228 | | |
229 | | /* Cookie domain */ |
230 | | const gchar* domain; |
231 | | |
232 | | /* Cookie TTL */ |
233 | | const gchar* maxAge; |
234 | | |
235 | | /* Cookie path */ |
236 | | const gchar* path; |
237 | | |
238 | | /* Is cookie secure? */ |
239 | | gboolean secure; |
240 | | |
241 | | /* Cookie-specification version. */ |
242 | | gint version; |
243 | | |
244 | | /** Out argument - user accepted the cookie. */ |
245 | | gboolean out_accept_cookie; |
246 | | }; |
247 | | |
248 | | typedef struct WebiWindowProperties_ WebiWindowProperties; |
249 | | |
250 | | /** Structure used to pass arguments of javascript prompt messages |
251 | | */ |
252 | | struct WebiWindowProperties_ |
253 | | { |
254 | | /*<public>*/ |
255 | | /* Are toolbars wisible. */ |
256 | | gboolean toolbarsVisible; |
257 | | |
258 | | /* is status bar visible. */ |
259 | | gboolean statusBarVisible; |
260 | | |
261 | | /* are scroll bars visible. */ |
262 | | gboolean scrollbarsVisible; |
263 | | |
264 | | /* Is window resizable. */ |
265 | | gboolean isResizable; |
266 | | }; |
267 | | |
268 | | /** Structure used to get and set window size and content rectangle size. */ |
269 | | typedef enum { |
270 | | WEBI_CONTENT_SIZE, |
271 | | WEBI_WINDOW_SIZE |
272 | | } WebiWindowSize; |
273 | | |
274 | | /* |
275 | | * Class definition |
276 | | */ |
277 | | typedef struct WebiClass_ WebiClass; |
278 | | struct WebiClass_ { |
279 | | GtkBinClass __parent__; |
280 | | |
281 | | /*signals*/ |
282 | | |
283 | | |
284 | | /** Location change indication signal. |
285 | | * use \webi_get_location() to get the url string |
286 | | * @emited when current page changes. |
287 | | * @param self the engine which sent the signal |
288 | | */ |
289 | | void (* location) (Webi * self); |
290 | | |
291 | | /** Title change indication signal. |
292 | | * use \webi_get_title() to get the title string |
293 | | * @emited when title of current page changes. |
294 | | * @param self the engine which sent the signal |
295 | | */ |
296 | | void (* title) (Webi * self); |
297 | | |
298 | | /** Load start indication signal. |
299 | | * @emited when page loading is started |
300 | | * @param self the engine which sent the signal |
301 | | */ |
302 | | void (* load_start) (Webi * self); |
303 | | |
304 | | /** Load start indication signal. |
305 | | * @emited when page loading is stopped. |
306 | | * @emited on error |
307 | | * @param self the engine which sent the signal |
308 | | */ |
309 | | void (* load_stop) (Webi * self); |
310 | | |
311 | | /** Set cookie indication signal. |
312 | | * @emited when a cookie is received from network |
313 | | * @param self the engine which sent the signal |
314 | | * @param cookie The actual cookie received. |
315 | | * @return \FALSE if don't allow cookie to be set |
316 | | * \TRUE if cookie should be set |
317 | | */ |
318 | | gboolean (* set_cookie) (Webi * self, WebiCookie * cookie); |
319 | | |
320 | | /** javascript status change indication signal |
321 | | * use \webi_get_status_text() to get the status string |
322 | | * |
323 | | * @emited when javascript status changes. |
324 | | * @param self the engine which sent the signal |
325 | | */ |
326 | | void (* status_text) (Webi * self); |
327 | | |
328 | | /** Page load status change indication signal |
329 | | * |
330 | | * @emited when page load status changes. |
331 | | * @param self the engine which sent the signal |
332 | | * @param status status of the engine. |
333 | | */ |
334 | | void (* status) (Webi * self, WebiLoadStatus * status); |
335 | | |
336 | | /** javascript prompt and alert request signal |
337 | | * must be synchronous |
338 | | * @emited when javascript generates an alert |
339 | | * @emited when javascript generates an prompt |
340 | | * |
341 | | * @param self the engine which sent the signal |
342 | | * @param args used to pass information between browser and engine (in and out) |
343 | | * see #WebiPromptAgs |
344 | | */ |
345 | | void (* req_js_prompt) (Webi *self, WebiPromptArgs* args); |
346 | | |
347 | | /** HTTP Auth |
348 | | * must be synchronous |
349 | | * @emited when javascript generates an alert |
350 | | * @emited when javascript generates an prompt |
351 | | * |
352 | | * @param self the engine which sent the signal |
353 | | * @param args used to pass information between browser and engine (in and out) |
354 | | * see #WebiPromptAgs |
355 | | */ |
356 | | void (* req_auth_prompt) (Webi *self, WebiAuthArgs* args); |
357 | | |
358 | | /** javascript/html new window request signal |
359 | | * must be synchronous |
360 | | * |
361 | | * @emited when javascript requests to create a new window |
362 | | * @emited when html link contains target="_blank" -attribute * |
363 | | * @param self the engine which sent the signal |
364 | | * @param url the URL string loading by newengine. |
365 | | * @return newengine The new engine of the new window |
366 | | * or \NULL if new window creation is not allowed |
367 | | */ |
368 | | Webi * (* req_new_window) (Webi *self, const gchar *url); |
369 | | |
370 | | void (* show_window) (Webi *self, WebiWindowProperties* features); |
371 | | void (* close_window) (Webi *self); |
372 | | |
373 | | void (* set_window_properties) (Webi *self, WebiWindowProperties* features); |
374 | | void (* get_window_size) (Webi *self, WebiWindowSize * type, GtkAllocation * size); |
375 | | void (* set_window_size) (Webi *self, WebiWindowSize * type, GtkRequisition * size); |
376 | | |
377 | | |
378 | | /** Set device type signal |
379 | | * must be synchronous |
380 | | * |
381 | | * @emited when user wants to change device type used in rendering and |
382 | | * style sheet selection |
383 | | * @param self the engine which sent the signal |
384 | | * @param newDeviceType The new device type of current window |
385 | | */ |
386 | | void (* set_device_type) (Webi *self, WebiDeviceType type); |
387 | | |
388 | | /** Get device type signal |
389 | | * must be synchronous |
390 | | * |
391 | | * @emited when user wants to change device type used in rendering and |
392 | | * style sheet selection |
393 | | * @param self the engine which sent the signal |
394 | | * @param newDeviceType The new device type of current window |
395 | | */ |
396 | | WebiDeviceType (* get_device_type) (Webi *self); |
397 | | |
398 | | void (* mouse_over) (Webi *self, const gchar* link_title, const gchar* link_label, const gchar* link_url, const gchar* link_target); |
399 | | |
400 | | /** selection change signal*/ |
401 | | void (* selection) (Webi *self); |
402 | | #if 0 |
403 | | /* not implemented at the moment */ |
404 | | void (* req_file_attach) (Webi *self); |
405 | | void (* file_upload_finished) (Webi *self); |
406 | | void (* file_upload_finished) (Webi *self); |
407 | | #endif |
408 | | |
409 | | }; |
410 | | |
411 | | |
412 | | /* |
413 | | * Public methods |
414 | | */ |
415 | | |
416 | | |
417 | | /** Returns GObject type for KHTML html renderer class |
418 | | * Returns GObject type for KHTML html renderer class. |
419 | | * |
420 | | * @return type for KHTML html renderer class |
421 | | */ |
422 | | GType webi_get_type (); |
423 | | |
424 | | |
425 | | /** Creates new html rendering engine |
426 | | * Creates new html rendering engine widget. To be able to view web pages, |
427 | | * add returned widget to a container and show the container. |
428 | | * |
429 | | * @return html rendering engine widget |
430 | | */ |
431 | | GtkWidget * webi_new (); |
432 | | |
433 | | /** Starts loading of a new url |
434 | | * Starts loading of a new url. Loading is asynchronous. |
435 | | * |
436 | | * @emit "load-start" signal on start |
437 | | * @emit "load-stop" signal when loading stops, ie. succesfully loaded page, or error |
438 | | * @param self the engine to use |
439 | | * @param url the url to load |
440 | | */ |
441 | | void webi_load_url (Webi * self, const gchar * url); |
442 | | |
443 | | /** Reloads current url |
444 | | * reloads current url |
445 | | */ |
446 | | void webi_refresh (Webi * self); |
447 | | |
448 | | /** Cancels the load currently in progress, if any |
449 | | * Cancels the load currently in progress, if any. |
450 | | * @emit "load-stop" |
451 | | * |
452 | | * @param self the engine to use |
453 | | */ |
454 | | void webi_stop_load (Webi * self); |
455 | | |
456 | | /** Checks the browsing history position relative to the beginning of the history |
457 | | * Checks if the engine is at the beginning of browsing history. |
458 | | * @return \TRUE if browsing history has previous elements |
459 | | * \FALSE otherwise |
460 | | */ |
461 | | gboolean webi_can_go_back (Webi * self); |
462 | | |
463 | | |
464 | | /** Checks the browsing history position relative to the end of the history |
465 | | * Checks if the engine is at the end of browsing history. |
466 | | * @return \TRUE if browsing history has successive elements |
467 | | * \FALSE otherwise |
468 | | */ |
469 | | gboolean webi_can_go_forward (Webi * self); |
470 | | |
471 | | /** Directs browser engine to the previous url in the browsing history |
472 | | * Directs browser engine to the previous url in the browsing history. |
473 | | * @emit "load-start" see \webi_load_url |
474 | | * @emit "load-stop" see \webi_load_url |
475 | | */ |
476 | | void webi_go_back (Webi * self); |
477 | | |
478 | | /** Directs browser engine to the next url in the browsing history |
479 | | * Directs browser engine to the next url in the browsing history. |
480 | | * |
481 | | * @emit "load-start" see \webi_load_url |
482 | | * @emit "load-stop" see \webi_load_url |
483 | | */ |
484 | | void webi_go_forward (Webi * self); |
485 | | |
486 | | /** Returns the url of the currently loaded page |
487 | | * Returns the url of the currently loaded page. |
488 | | * The string contains the full url used, including |
489 | | * the protocol. It can be absolute or relative. |
490 | | * The string must not be freed (const). |
491 | | * |
492 | | * @return the url string of the currently loaded page. |
493 | | */ |
494 | | const gchar* webi_get_location (Webi * self); |
495 | | |
496 | | /** Returns the title of the currently loaded page |
497 | | * Returns the title of the currently loaded page. |
498 | | * If the page contains a frameset, title is the title of the |
499 | | * frameset. |
500 | | * |
501 | | * @return the title of the currently loaded page. |
502 | | */ |
503 | | const gchar* webi_get_title (Webi * self); |
504 | | |
505 | | /** Returns a status string set by javascript |
506 | | * Returns a string that javascript has set to be used |
507 | | * usually in the statusbar of the browser. |
508 | | * |
509 | | * @return javascript status string |
510 | | */ |
511 | | const gchar* webi_get_status_text (Webi * self); |
512 | | |
513 | | /** Returns internal representation of the engine |
514 | | * Returns internal representation of the engine. |
515 | | * Can be used in C++ code. Exposes the public NRCore api |
516 | | * to the user. This may be needed if certain functionality |
517 | | * is not implemented in C interface. |
518 | | * usage not recommended |
519 | | * Used with: |
520 | | * OSBB::Bridge* engine = 0; |
521 | | * Webi* khtml_engine = webi_new(); |
522 | | * engine = static_cast<OSB::Bridge*>(webi_get_internal (engine)); |
523 | | * |
524 | | */ |
525 | | void* webi_get_internal (Webi * self); |
526 | | |
527 | | /** Sets the settings of the rendering engine |
528 | | * Sets the settings of the rendering engine. |
529 | | * |
530 | | */ |
531 | | void webi_set_settings (Webi * self, const WebiSettings* settings); |
532 | | |
533 | | /** Prints the internal render tree of the engine. |
534 | | * |
535 | | * Can be used in C++ debug code. This |
536 | | * usage not recommended |
537 | | */ |
538 | | const gchar* webi_render_tree (Webi * self); |
539 | | |
540 | | /** Toggles the emission of internal constructed load status messages |
541 | | * Sets the emission of internal constructed load status messages |
542 | | * Signalö emitted is status-text |
543 | | * |
544 | | * @param flag \TRUE if you want to receive internal status messages |
545 | | for loading |
546 | | \FALSE if not |
547 | | */ |
548 | | void webi_set_emit_internal_status (Webi * self, gboolean flag); |
549 | | |
550 | | |
551 | | /** Sets the device type used for current window. |
552 | | * |
553 | | * @param self the engine which sent the signal |
554 | | * @param newDeviceType The new device type of current window |
555 | | */ |
556 | | void webi_set_device_type (Webi * self, WebiDeviceType device); |
557 | | |
558 | | /** Gets the device type used for current window. |
559 | | * |
560 | | * @param self the engine which sent the signal |
561 | | * @param newDeviceType The new device type of current window |
562 | | */ |
563 | | WebiDeviceType webi_get_device_type (Webi * self); |
564 | | |
565 | | |
566 | | void webi_set_group (Webi* self, const gchar* group); |
567 | | |
568 | | const gchar* webi_get_group (Webi* self); |
569 | | |
570 | | void webi_set_text_multiplier (Webi* self, gfloat multiplier); |
571 | | gfloat webi_get_text_multiplier (Webi* self); |
572 | | |
573 | | gboolean webi_find (Webi* self, const gchar* text, gboolean case_sensitive, gboolean dir_down); |
574 | | |
575 | | /** Gets the active selection. |
576 | | * The returned string must be freed with g_free() |
577 | | * Returns "" if selection is not active |
578 | | */ |
579 | | gchar* webi_get_current_selection_as_text(Webi* self); |
580 | | |
581 | | /** Gets the engine user agent string. |
582 | | * The returned string can be used to construct browser-specific |
583 | | * user-agent strings |
584 | | */ |
585 | | const gchar* webi_get_engine_user_agent_string (); |
586 | | |
587 | | #ifdef __cplusplus |
588 | | } |
589 | | #endif /* __cplusplus */ |
590 | | |
591 | | #endif |
592 | | }}} |