#include <liberdm/display.h>
#include "browserTypes.h"
#include "pagebar.h"
#include "indexFileHandler.h"
#include "main.h"
#include "browser.h"
#include "toolbar.h"
#include "displayUpdate.h"
#include "browserLog.h"
#include <libermanifest/ermanifest.h>
#include "mozilla_api.h"
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "prenv.h"
#include "mozEmbedCallbacks.h"
Go to the source code of this file.
Classes | |
| class | CPersist |
Functions | |
| gboolean | delete_cb (GtkWidget *widget, GdkEventAny *event, Ereader *reader) |
| gboolean | browser_main_window_expose_event (GtkWidget *widget, GdkEventExpose *event, Ereader *reader) |
| static void | browser_create (Ereader *browser, gchar *URL_input) |
| static GtkWidget * | create_window (char *title) |
| static void | maximize_window (GtkWidget *src) |
| Ereader * | new_gtk_ereader (char *manifest, char *input_URL) |
| void | browser_quit () |
| void | destroy_ereader (Ereader *theEreader) |
| void | set_browser_visibility (Ereader *browser, gboolean visibility) |
Variables | |
| static CPersist | s_recorder |
<File description>="">
Definition in file browser.cpp.
| static void browser_create | ( | Ereader * | browser, | |
| gchar * | URL_input | |||
| ) | [static] |
create a "GtkMozEmbed" widget, specify the callbacks of the GtkMozEmbed specific signals and load the first XHTML file
| URL | location of the first file that needs to be displayed |
Definition at line 403 of file browser.cpp.
00404 { 00405 browser->mozEmbed = gtk_moz_embed_new(); 00406 00407 00408 00409 // add this to the browser window 00410 gtk_container_add(GTK_CONTAINER(browser->eventBox), browser->mozEmbed); 00411 00412 BR_LOGPRINTF("browser 0x%x - created mozEmbed 0x%x", browser, browser->mozEmbed); 00413 00414 g_signal_connect(GTK_OBJECT(browser->mozEmbed), "location", G_CALLBACK(location_changed_cb), browser); 00415 g_signal_connect(GTK_OBJECT(browser->mozEmbed), "visibility", G_CALLBACK(visibility_cb), browser); 00416 g_signal_connect(GTK_OBJECT(browser->mozEmbed), "net_stop", G_CALLBACK(load_finished_cb), browser); 00417 //g_signal_connect(GTK_OBJECT(browser->mozEmbed), "progress", G_CALLBACK(progress_change_cb), browser); 00418 //g_signal_connect(GTK_OBJECT(browser->mozEmbed), "progress_all", G_CALLBACK(progress_all), browser); 00419 //g_signal_connect(GTK_OBJECT(browser->mozEmbed), "status_change", G_CALLBACK(status_change_cb), browser); 00420 //g_signal_connect(GTK_OBJECT(browser->mozEmbed), "net_state", G_CALLBACK(net_state_change_cb), browser); 00421 g_signal_connect(GTK_OBJECT(browser->mozEmbed), "open_uri", G_CALLBACK(open_uri_cb), browser); 00422 00423 #ifndef PC_ENVIRONMENT 00424 // set the chrome type so it's stored in the object 00425 // commented for scrollbars fixing 00426 gtk_moz_embed_set_chrome_mask(GTK_MOZ_EMBED(browser->mozEmbed), GTK_MOZ_EMBED_FLAG_DEFAULTCHROME); 00427 #endif 00428 // set our minimum size 00429 gtk_widget_set_size_request(browser->mozEmbed, SCREEN_WIDTH, CLIENT_AREA); 00430 00431 if (URL_input) 00432 { 00433 BR_LOGPRINTF("loading URL %s", URL_input); 00434 00435 // => only request a refresh when the page is loaded 00436 display_update_increase_level(MOZEMBED_UPDATE_LEVEL); 00437 00438 gtk_moz_embed_load_url(GTK_MOZ_EMBED(browser->mozEmbed), URL_input); 00439 } 00440 else 00441 { 00442 BR_ERRORPRINTF("No default URL available"); 00443 } 00444 00445 BR_LOGPRINTF("show mozEmbed 0x%x", browser->mozEmbed); 00446 set_browser_visibility(browser, TRUE); 00447 }

| gboolean browser_main_window_expose_event | ( | GtkWidget * | widget, | |
| GdkEventExpose * | event, | |||
| Ereader * | reader | |||
| ) |
Definition at line 504 of file browser.cpp.
00505 { 00506 BR_DISPLAYPRINTF("entry"); 00507 display_update_request_screen_refresh(MAIN_WINDOW_EXPOSE_LEVEL, NULL); 00508 return FALSE; 00509 }

| void browser_quit | ( | ) |
Definition at line 343 of file browser.cpp.
00344 { 00345 s_recorder.UninstallTermHandler(); 00346 destroy_ereader(s_recorder.GetBrowser()); 00347 }

| static GtkWidget * create_window | ( | char * | title | ) | [static] |
Definition at line 489 of file browser.cpp.
00490 { 00491 GtkWidget *window; 00492 00493 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 00494 gtk_window_set_title(GTK_WINDOW(window), (title)); 00495 gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 00496 gtk_container_set_border_width(GTK_CONTAINER(window), 0); 00497 gtk_widget_set_size_request(GTK_WIDGET(window), SCREEN_WIDTH, SCREEN_HEIGHT - TOOLBAR_HEIGTH - PAGEBAR_HEIGHT); 00498 gtk_window_set_modal(GTK_WINDOW(window), FALSE); 00499 gtk_window_set_resizable(GTK_WINDOW(window), FALSE); 00500 gtk_signal_connect(GTK_OBJECT(window), "realize", GTK_SIGNAL_FUNC(maximize_window), NULL); 00501 return window; 00502 }

| gboolean delete_cb | ( | GtkWidget * | widget, | |
| GdkEventAny * | event, | |||
| Ereader * | reader | |||
| ) |
Definition at line 386 of file browser.cpp.
00387 { 00388 BR_LOGPRINTF("entry"); 00389 destroy_ereader(reader); 00390 gtk_widget_destroy(widget); 00391 return TRUE; 00392 }

| void destroy_ereader | ( | Ereader * | theEreader | ) |
clear resources used by the Ereader data structure
| theEreader | reference to the eReader struct |
Definition at line 349 of file browser.cpp.
00350 { 00351 // store url lastest visited 00352 gchar * type = NULL; 00353 gboolean page_type_known = FALSE; 00354 int page = -1; 00355 00356 // current url 00357 gchar *url = gtk_moz_embed_get_location(GTK_MOZ_EMBED(theEreader->mozEmbed)); 00358 00359 // get type so that we can get page number 00360 if (page_type_known = mozilla_get_page_type(GTK_MOZ_EMBED(theEreader->mozEmbed), &type)) 00361 { 00362 page = index_file_get_page_number(&theEreader->pageStatus->index, type, url); 00363 } 00364 BR_LOGPRINTF("url last visited %s %d page\n", url, page); 00365 s_recorder.StorePageLastRead(url); 00366 if (url) 00367 { 00368 free(url); 00369 } 00370 00371 if (theEreader) 00372 { 00373 BR_LOGPRINTF("cleaning up browser allocations"); 00374 00375 if (theEreader->pageStatus) 00376 { 00377 browser_destroy_page_status(theEreader->pageStatus); 00378 } 00379 00380 g_free(theEreader); 00381 theEreader = NULL; 00382 } 00383 }

| static void maximize_window | ( | GtkWidget * | src | ) | [static] |
Definition at line 464 of file browser.cpp.
00465 { 00466 #ifndef PC_ENVIRONMENT 00467 #ifndef LOCAL_DISPLAY 00468 // GdkBitmap *empty_bitmap; 00469 // GdkCursor *cursor; 00470 // GdkColor useless; 00471 // char invisible_cursor_bits[] = {0x0}; 00472 00473 /* set transparent cursor */ 00474 // useless.red = 0; 00475 // useless.green = 0; 00476 // useless.blue = 0; 00477 // useless.pixel = 0; 00478 // empty_bitmap = gdk_bitmap_create_from_data(src->window,invisible_cursor_bits,1,1); 00479 // cursor = gdk_cursor_new_from_pixmap(empty_bitmap,empty_bitmap,&useless,&useless,0,0); 00480 // gdk_window_set_cursor(src->window,cursor); 00481 00482 /* no borders, buttons, ... */ 00483 // gdk_window_set_decorations(src->window,GdkWMDecoration(0)); 00484 #endif //LOCAL_DISPLAY 00485 #endif //PC_ENVIRONMENT 00486 }
| Ereader* new_gtk_ereader | ( | char * | manifest, | |
| char * | input_URL | |||
| ) |
Allocate an Ereader data structure, creates the ereader browser specific GTK widgets and initializes the embedded browser window
| Manifest | File location | |
| URL | location of the first file that needs to be displayed |
Definition at line 266 of file browser.cpp.
00267 { 00268 Ereader *theEreader; 00269 00270 BR_LOGPRINTF("entry"); 00271 00272 // create one Ereader ereader struct and fill it with zeros 00273 theEreader = g_new0(Ereader, 1); 00274 00275 if (theEreader) 00276 { 00277 theEreader->pageStatus = browser_create_page_status(); 00278 browser_set_page_status_indexfile(theEreader->pageStatus, manifest); 00279 00280 BR_LOGPRINTF("theEreader 0x%x - theEreader->pageStatus 0x%x", theEreader, theEreader->pageStatus); 00281 00282 theEreader->topLevelWindow = create_window("E-reader"); 00283 00284 // new vbox - homogenous - zero spacing 00285 theEreader->topLevelVBox = gtk_vbox_new(FALSE, 0); 00286 gtk_widget_show(theEreader->topLevelVBox); 00287 gtk_container_add(GTK_CONTAINER(theEreader->topLevelWindow), theEreader->topLevelVBox); 00288 00289 // event box addded to have an actual X-window 00290 theEreader->eventBox = gtk_event_box_new(); 00291 gtk_box_pack_start(GTK_BOX(theEreader->topLevelVBox), theEreader->eventBox, TRUE, TRUE, 0); 00292 gtk_widget_show(theEreader->eventBox); 00293 00294 g_signal_connect(G_OBJECT(theEreader->topLevelVBox), "expose-event", G_CALLBACK(browser_main_window_expose_event), theEreader); 00295 00296 00297 #ifdef LOCAL_DISPLAY 00298 // create toolbar empty area 00299 BR_WARNPRINTF("LOCAL_DISPLAY is defined => toolbar"); 00300 00301 theEreader->toolbar = gtk_toolbar_new(); 00302 gtk_widget_set_usize(GTK_WIDGET(theEreader->toolbar), (-1), TOOLBAR_HEIGTH); 00303 gtk_widget_show(theEreader->toolbar); 00304 00305 gtk_box_pack_start(GTK_BOX(theEreader->topLevelVBox), GTK_WIDGET(theEreader->toolbar), FALSE, // expand 00306 FALSE, // fill 00307 0); // padding 00308 #endif //LOCAL_DISPLAY 00309 00310 gtk_widget_show(theEreader->topLevelWindow); 00311 00312 // check manifest file 00313 s_recorder.SetManifestPathName(manifest); 00314 00315 char *url = s_recorder.GetPageLastRead(input_URL); 00316 if (url) 00317 { 00318 input_URL = url; 00319 // input_URL = "file:///./pagl01.html"; 00320 } 00321 00322 // create the embedded browser 00323 browser_create(theEreader, input_URL); 00324 00325 // catch the destruction of the toplevel window 00326 g_signal_connect(GTK_OBJECT(theEreader->topLevelWindow), "delete_event", G_CALLBACK(delete_cb), theEreader); 00327 00328 // catch the key-events in the toplevel window 00329 gtk_signal_connect(GTK_OBJECT(theEreader->topLevelWindow), "key_press_event", G_CALLBACK(on_mainWindow_keypress), theEreader); 00330 00331 // init 00332 s_recorder.InstallTermHandler(); 00333 s_recorder.SetBrowser(theEreader); 00334 } 00335 else 00336 { 00337 BR_ERRORPRINTF("unable to allocate gEreader"); 00338 } 00339 00340 return theEreader; 00341 }

| void set_browser_visibility | ( | Ereader * | browser, | |
| gboolean | visibility | |||
| ) |
show/hide the Mozembed widget
| theEreader | reference to the eReader struct | |
| visibility |
Definition at line 449 of file browser.cpp.
00450 { 00451 BR_LOGPRINTF("%s", (visibility == TRUE) ? "TRUE" : "FALSE"); 00452 00453 if (!visibility) 00454 { 00455 gtk_widget_hide(browser->mozEmbed); 00456 } 00457 else 00458 { 00459 gtk_widget_show(browser->mozEmbed); 00460 gtk_widget_grab_focus(browser->mozEmbed); 00461 } 00462 }
CPersist s_recorder [static] |
Definition at line 254 of file browser.cpp.
1.5.6