зеркало из https://github.com/mozilla/pjs.git
1419 строки
29 KiB
C
1419 строки
29 KiB
C
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
/*
|
|
gnomecxtx.c --- gnome fe handling of MWContext initialization.
|
|
*/
|
|
|
|
#include "structs.h"
|
|
#include "ntypes.h"
|
|
#include "xpassert.h"
|
|
#include "proto.h"
|
|
#include "fe_proto.h"
|
|
#include "edt.h"
|
|
|
|
#include "gnome-form.h"
|
|
#include "g-view.h"
|
|
#include "g-frame.h"
|
|
#include "g-util.h"
|
|
#include "gnomefe.h"
|
|
#include "g-html-view.h"
|
|
|
|
#ifndef NETSCAPE_PRIV
|
|
#include "../../lib/xp/flamer.h"
|
|
#else
|
|
#include "../../lib/xp/biglogo.h"
|
|
#include "../../lib/xp/photo.h"
|
|
#include "../../lib/xp/hype.h"
|
|
#ifdef MOZ_SECURITY
|
|
#include "../../lib/xp/rsalogo.h"
|
|
#include "ssl.h"
|
|
#include "xp_sec.h"
|
|
#endif
|
|
#ifdef JAVA
|
|
#include "../../lib/xp/javalogo.h"
|
|
#endif
|
|
#ifdef FORTEZZA
|
|
#include "../../lib/xp/litronic.h"
|
|
#endif
|
|
#include "../../lib/xp/coslogo.h"
|
|
#include "../../lib/xp/insologo.h"
|
|
#include "../../lib/xp/mclogo.h"
|
|
#include "../../lib/xp/ncclogo.h"
|
|
#include "../../lib/xp/odilogo.h"
|
|
#include "../../lib/xp/qt_logo.h"
|
|
#include "../../lib/xp/tdlogo.h"
|
|
#include "../../lib/xp/visilogo.h"
|
|
#endif /* !NETSCAPE_PRIV */
|
|
|
|
static MWContext*
|
|
GNOMEFE_CreateNewDocWindow(MWContext *calling_context,
|
|
URL_Struct *URL)
|
|
{
|
|
printf ("GNOMEFE_CreateNewDocWindow\n");
|
|
XP_ASSERT(0);
|
|
return NULL;
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_LayoutNewDocument(MWContext *context,
|
|
URL_Struct *url_struct,
|
|
int32 *iWidth,
|
|
int32 *iHeight,
|
|
int32 *mWidth,
|
|
int32 *mHeight)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
|
|
moz_html_view_layout_new_document(view,
|
|
url_struct,
|
|
iWidth,
|
|
iHeight,
|
|
mWidth,
|
|
mHeight);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetDocTitle (MWContext * context,
|
|
char * title)
|
|
{
|
|
MozTagged *tagged = (MozTagged*)context->fe.data->frame_or_view;
|
|
|
|
if (MOZ_IS_FRAME(tagged))
|
|
moz_frame_set_title(MOZ_FRAME(tagged), title);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FinishedLayout (MWContext *context)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
|
|
moz_html_view_finished_layout(view);
|
|
}
|
|
|
|
static char*
|
|
GNOMEFE_TranslateISOText (MWContext * context,
|
|
int charset,
|
|
char *ISO_Text)
|
|
{
|
|
printf ("GNOMEFE_TranslateISOText (%s)\n", ISO_Text);
|
|
|
|
return ISO_Text; /* XXXX */
|
|
}
|
|
|
|
static int
|
|
GNOMEFE_GetTextInfo (MWContext * context,
|
|
LO_TextStruct *text,
|
|
LO_TextInfo *text_info)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return -1; /* XXX */
|
|
|
|
return moz_html_view_get_text_info(view, text, text_info);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_CreateEmbedWindow(MWContext *context, NPEmbeddedApp *app)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_CreateEmbedWindow (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SaveEmbedWindow(MWContext *context, NPEmbeddedApp *app)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_SaveEmbedWindow (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_RestoreEmbedWindow(MWContext *context, NPEmbeddedApp *app)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_RestoreEmbedWindow (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DestroyEmbedWindow(MWContext *context, NPEmbeddedApp *app)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DestroyEmbedWindow (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GetEmbedSize (MWContext * context,
|
|
LO_EmbedStruct *embed_struct,
|
|
NET_ReloadMethod force_reload)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GetEmbedSize (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GetJavaAppSize (MWContext * context,
|
|
LO_JavaAppStruct *java_struct,
|
|
NET_ReloadMethod force_reload)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GetJavaAppSize (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FreeEmbedElement (MWContext *context,
|
|
LO_EmbedStruct *embed)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_FreeEmbedElement (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FreeJavaAppElement (MWContext *context,
|
|
struct LJAppletData *appletData)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_FreeJavaAppElement (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_HideJavaAppElement (MWContext *context,
|
|
struct LJAppletData *java_app)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_HideJavaAppElement (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FreeEdgeElement (MWContext *context,
|
|
LO_EdgeStruct *edge)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_FreeEdgeElement (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FormTextIsSubmit (MWContext * context,
|
|
LO_FormElementStruct * form_element)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_FormTextIsSubmit (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplaySubtext (MWContext * context,
|
|
int iLocation,
|
|
LO_TextStruct *text,
|
|
int32 start_pos,
|
|
int32 end_pos,
|
|
XP_Bool need_bg)
|
|
{
|
|
printf ("GNOME_DisplaySubtext\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayText (MWContext * context,
|
|
int iLocation,
|
|
LO_TextStruct *text,
|
|
XP_Bool need_bg)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_display_text(view, text, need_bg);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayEmbed (MWContext * context,
|
|
int iLocation,
|
|
LO_EmbedStruct *embed_struct)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DisplayEmbed (empty)\n");
|
|
}
|
|
|
|
|
|
static void
|
|
GNOMEFE_DisplayJavaApp (MWContext * context,
|
|
int iLocation,
|
|
LO_JavaAppStruct *java_struct)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DisplayJavaApp (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayEdge (MWContext * context,
|
|
int iLocation,
|
|
LO_EdgeStruct *edge_struct)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DisplayEdge (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayTable (MWContext * context,
|
|
int iLocation,
|
|
LO_TableStruct *table_struct)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_display_table(view, table_struct);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayCell (MWContext * context,
|
|
int iLocation,
|
|
LO_CellStruct *cell_struct)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_display_cell(view, cell_struct);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplaySubDoc (MWContext * context,
|
|
int iLocation,
|
|
LO_SubDocStruct *subdoc_struct)
|
|
{
|
|
printf ("GNOME_DisplaySubdoc\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayLineFeed (MWContext * context,
|
|
int iLocation ,
|
|
LO_LinefeedStruct *line_feed,
|
|
XP_Bool need_bg)
|
|
{
|
|
/* this should only do something if the context is an editor and the user has
|
|
turned on display of paragraph marks. */
|
|
MozEditorView *view = find_editor_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_editor_view_display_linefeed(view, line_feed, need_bg);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayHR (MWContext * context,
|
|
int iLocation ,
|
|
LO_HorizRuleStruct *HR_struct)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_display_hr(view, HR_struct);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayBullet (MWContext *context,
|
|
int iLocation,
|
|
LO_BullettStruct *bullet)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_display_bullet(view, bullet);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayBorder (MWContext *context,
|
|
int iLocation,
|
|
int x,
|
|
int y,
|
|
int width,
|
|
int height,
|
|
int bw,
|
|
LO_Color *color,
|
|
LO_LineStyle style)
|
|
{
|
|
printf ("GNOME_DisplayBorder\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayFeedback (MWContext *context,
|
|
int iLocation,
|
|
LO_Element *element)
|
|
{
|
|
printf("GNOMEFE_DisplayFeedback (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_ClearView (MWContext * context,
|
|
int which)
|
|
{
|
|
printf ("GNOME_ClearView\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetDocDimension (MWContext *context,
|
|
int iLocation,
|
|
int32 iWidth,
|
|
int32 iLength)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
|
|
moz_html_view_set_doc_dimension(view, iWidth, iLength);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetDocPosition (MWContext *context,
|
|
int iLocation,
|
|
int32 iX,
|
|
int32 iY)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
|
|
printf("GNOMEFE_SetDocPosition: X %d, y %d\n", iX, iY);
|
|
|
|
moz_html_view_set_doc_position(view, iX, iY);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GetDocPosition (MWContext *context,
|
|
int iLocation,
|
|
int32 *iX,
|
|
int32 *iY)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
printf ("GNOME_GetDocPosition (old x %d, old y %d)\n", *iX, *iY);
|
|
|
|
*iX = (int32) (view->doc_x);
|
|
*iY = (int32) (view->doc_y);
|
|
printf ("GNOME_GetDocPosition (x %d, y %d)\n", *iX, *iY);
|
|
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_BeginPreSection (MWContext *context)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_BeginPreSection (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_EndPreSection (MWContext *context)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_EndPreSection (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_Progress(MWContext *context,
|
|
const char *msg)
|
|
{
|
|
MozFrame *frame = find_frame(context);
|
|
|
|
if (!frame) return; /* XXX */
|
|
|
|
moz_frame_set_status(frame, (char*)msg);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetProgressBarPercent(MWContext *context,
|
|
int32 percent)
|
|
{
|
|
MozFrame *frame = find_frame(context);
|
|
|
|
// printf ("setprogressbarpercent %d\n", percent);
|
|
|
|
if (!frame) return; /* XXX */
|
|
|
|
if (percent == -1) percent = 0; /* XXXX */
|
|
|
|
moz_frame_set_percent(frame, percent);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetBackgroundColor (MWContext *context,
|
|
uint8 red,
|
|
uint8 green,
|
|
uint8 blue)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return; /* XXX */
|
|
|
|
moz_html_view_set_background_color(view, red, green, blue);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_SetCallNetlibAllTheTime (MWContext * win_id)
|
|
{
|
|
printf ("set call netlib all the time\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_ClearCallNetlibAllTheTime (MWContext * win_id)
|
|
{
|
|
printf ("clear call netlib all the time\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GraphProgressInit (MWContext *context,
|
|
URL_Struct *URL_s,
|
|
int32 content_length)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GraphProgressInit (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GraphProgressDestroy (MWContext *context,
|
|
URL_Struct *URL_s,
|
|
int32 content_length,
|
|
int32 total_bytes_read)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GraphProgressDestroy (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GraphProgress (MWContext *context,
|
|
URL_Struct *URL_s,
|
|
int32 bytes_received,
|
|
int32 bytes_since_last_time,
|
|
int32 content_length)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GraphProgress (empty)\n");
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_UseFancyFTP (MWContext * window_id)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_UseFancyNewsgroupListing (MWContext *window_id)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
static int
|
|
GNOMEFE_FileSortMethod (MWContext * window_id)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_ShowAllNewsArticles (MWContext *window_id)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_Alert(MWContext *context,
|
|
const char *msg)
|
|
{
|
|
printf ("uh oh...\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static int done = 0;
|
|
static XP_Bool ret_val = FALSE;
|
|
|
|
static void
|
|
ok_cancel_callback(GtkWidget *widget,
|
|
int button,
|
|
void *data)
|
|
{
|
|
ret_val = (button == 0) /* the ok button is 0, cancel is 1 */;
|
|
done = 1;
|
|
}
|
|
|
|
/*
|
|
** FE_Confirm - Put up an confirmation dialog (with Yes and No
|
|
** buttons) and return TRUE if Yes/Ok was clicked and FALSE if
|
|
** No/Cancel was clicked.
|
|
**
|
|
** This method should not return until the user has clicked on one of
|
|
** the buttons.
|
|
*/
|
|
static XP_Bool
|
|
GNOMEFE_Confirm(MWContext * context,
|
|
const char * Msg)
|
|
{
|
|
GtkWidget *dialog = gnome_message_box_new(Msg,
|
|
GNOME_MESSAGE_BOX_QUESTION,
|
|
GNOME_STOCK_BUTTON_OK,
|
|
GNOME_STOCK_BUTTON_CANCEL,
|
|
NULL);
|
|
|
|
gtk_signal_connect(GTK_OBJECT(dialog),
|
|
"clicked",
|
|
(GtkSignalFunc)ok_cancel_callback, NULL);
|
|
|
|
|
|
gnome_dialog_set_modal(GNOME_DIALOG(dialog));
|
|
gnome_dialog_set_default(GNOME_DIALOG(dialog), 1);
|
|
|
|
gtk_window_set_policy(GTK_WINDOW(dialog),
|
|
TRUE,
|
|
TRUE,
|
|
FALSE);
|
|
|
|
gtk_widget_show(dialog);
|
|
|
|
done = 0;
|
|
|
|
while (!done)
|
|
gtk_main_iteration_do(TRUE);
|
|
|
|
return ret_val;
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_CheckConfirm(MWContext *pContext,
|
|
const char *pConfirmMessage,
|
|
const char *pCheckMessage,
|
|
const char *pOKMessage,
|
|
const char *pCancelMessage,
|
|
XP_Bool *pChecked)
|
|
{
|
|
return FALSE;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_SelectDialog(MWContext *pContext, const char *pMessage, const char **pList, int16 *pCount)
|
|
{
|
|
return FALSE;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static char*
|
|
GNOMEFE_Prompt(MWContext * context,
|
|
const char * Msg,
|
|
const char * dflt)
|
|
{
|
|
return NULL;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static char*
|
|
GNOMEFE_PromptWithCaption(MWContext * context,
|
|
const char *caption,
|
|
const char * Msg,
|
|
const char * dflt)
|
|
{
|
|
return NULL;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static XP_Bool
|
|
GNOMEFE_PromptUsernameAndPassword (MWContext *context,
|
|
const char * message,
|
|
char **username,
|
|
char **password)
|
|
{
|
|
return FALSE;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static char*
|
|
GNOMEFE_PromptPassword(MWContext * context,
|
|
const char * Msg)
|
|
{
|
|
return NULL;
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_EnableClicking(MWContext* context)
|
|
{
|
|
printf("GNOMEFE_EnableClicking (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_AllConnectionsComplete(MWContext * context)
|
|
{
|
|
printf("GNOMEFE_AllConnectionsComplete (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_EraseBackground (MWContext * context,
|
|
int iLocation,
|
|
int32 x,
|
|
int32 y,
|
|
uint32 width,
|
|
uint32 height,
|
|
LO_Color *bg)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
printf("GNOMEFE_EraseBackground\n");
|
|
|
|
moz_html_view_erase_background(view, x, y, width, height, bg);
|
|
}
|
|
|
|
void
|
|
GNOMEFE_SetDrawable (MWContext *context,
|
|
CL_Drawable *drawable)
|
|
{
|
|
MozHTMLView *view = find_html_view(context);
|
|
|
|
if (!view) return;
|
|
|
|
moz_html_view_set_drawable(view, drawable);
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_GetTextFrame (MWContext *context,
|
|
LO_TextStruct *text,
|
|
int32 start,
|
|
int32 end,
|
|
XP_Rect *frame)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_GetTextFrame (empty)\n");
|
|
}
|
|
|
|
/* these functions are to allow dealyed native window applet creation and transparent applet */
|
|
static void
|
|
GNOMEFE_HandleClippingView (MWContext *pContext,
|
|
struct LJAppletData *appletD,
|
|
int x,
|
|
int y,
|
|
int width,
|
|
int height)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_HandleClippingView (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DrawJavaApp (MWContext *pContext,
|
|
int iLocation,
|
|
LO_JavaAppStruct *pJava)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DrawJavaApp (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_DisplayBuiltin (MWContext *context, int iLocation,
|
|
LO_BuiltinStruct *builtin_struct)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("GNOMEFE_DisplayBuiltin (empty)\n");
|
|
}
|
|
|
|
static void
|
|
GNOMEFE_FreeBuiltinElement(MWContext *pContext, LO_BuiltinStruct *builtin_struct)
|
|
{
|
|
GtkWidget *view;
|
|
|
|
if (!builtin_struct || !builtin_struct->FE_Data) return;
|
|
|
|
view = (GtkWidget *)builtin_struct->FE_Data;
|
|
|
|
gtk_widget_destroy(view);
|
|
|
|
builtin_struct->FE_Data = NULL;
|
|
}
|
|
|
|
static ContextFuncs _gnomefe_funcs = {
|
|
#define FE_DEFINE(func, returns, args) GNOMEFE##_##func,
|
|
#include "mk_cx_fn.h"
|
|
};
|
|
|
|
/* Given a mask value, returns the index of the first set bit, and the
|
|
number of consecutive bits set. */
|
|
static void
|
|
FindShift (unsigned long mask, uint8 *shiftp, uint8* bitsp)
|
|
{
|
|
uint8 shift = 0;
|
|
uint8 bits = 0;
|
|
while ((mask & 1) == 0) {
|
|
shift++;
|
|
mask >>= 1;
|
|
}
|
|
while ((mask & 1) == 1) {
|
|
bits++;
|
|
mask >>= 1;
|
|
}
|
|
*shiftp = shift;
|
|
*bitsp = bits;
|
|
}
|
|
|
|
|
|
MWContext*
|
|
GNOMEFE_CreateMWContext()
|
|
{
|
|
MWContext *context = XP_NewContext();
|
|
IL_RGBBits rgb;
|
|
GdkVisual *visual = gdk_visual_get_best();
|
|
|
|
XP_ASSERT(context);
|
|
if (!context) return NULL;
|
|
|
|
context->funcs = &_gnomefe_funcs;
|
|
|
|
context->fe.data = (fe_ContextData *) calloc(1, sizeof(fe_ContextData));
|
|
|
|
context->convertPixX = context->convertPixY = 1;
|
|
|
|
memset(&rgb, '\0', sizeof(rgb));
|
|
|
|
FindShift (visual->red_mask, &rgb.red_shift, &rgb.red_bits);
|
|
FindShift (visual->green_mask, &rgb.green_shift, &rgb.green_bits);
|
|
FindShift (visual->blue_mask, &rgb.blue_shift, &rgb.blue_bits);
|
|
|
|
context->color_space = IL_CreateTrueColorSpace(&rgb,
|
|
gdk_visual_get_best_depth());
|
|
|
|
return context;
|
|
}
|
|
|
|
int32
|
|
FE_GetContextID(MWContext *window_id)
|
|
{
|
|
return (int32)window_id; /* XXX not 64 bit clean */
|
|
}
|
|
|
|
static MWContext *init_context;
|
|
MWContext*
|
|
FE_GetInitContext()
|
|
{
|
|
printf ("FE_GetInitContext()\n");
|
|
|
|
if (!init_context) init_context = GNOMEFE_CreateMWContext();
|
|
|
|
return init_context;
|
|
}
|
|
|
|
MWContext*
|
|
FE_MakeNewWindow(MWContext *old_context,
|
|
URL_Struct *url,
|
|
char *window_name,
|
|
Chrome *chrome)
|
|
{
|
|
printf ("FE_MakeNewWindow\n");
|
|
XP_ASSERT(0);
|
|
return NULL;
|
|
}
|
|
|
|
void
|
|
FE_DestroyWindow(MWContext *context)
|
|
{
|
|
printf ("FE_DestroyWindow()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_UpdateStopState(MWContext *context)
|
|
{
|
|
printf ("FE_UpdateStopState()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_UpdateChrome(MWContext *window,
|
|
Chrome *chrome)
|
|
{
|
|
printf ("FE_UpdateChrome()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_QueryChrome(MWContext *window,
|
|
Chrome *chrome)
|
|
{
|
|
printf ("FE_QueryChrome()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_BackCommand(MWContext *context)
|
|
{
|
|
printf ("FE_BackCommand()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_ForwardCommand(MWContext *context)
|
|
{
|
|
printf ("FE_ForwardCommand()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_HomeCommand(MWContext *context)
|
|
{
|
|
printf ("FE_HomeCommand()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_PrintCommand(MWContext *context)
|
|
{
|
|
printf ("FE_PrintCommand()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
XP_Bool
|
|
FE_FindCommand(MWContext *context,
|
|
char *text,
|
|
XP_Bool case_sensitive,
|
|
XP_Bool backwards,
|
|
XP_Bool wrap)
|
|
{
|
|
printf ("FE_FindCommand()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_GetWindowOffset(MWContext *pContext,
|
|
int32 *sx,
|
|
int32 *sy)
|
|
{
|
|
MozHTMLView *view = find_html_view(pContext);
|
|
|
|
gdk_window_get_origin(MOZ_COMPONENT(view)->base_widget->window,
|
|
sx, sy);
|
|
}
|
|
|
|
void
|
|
FE_GetScreenSize(MWContext *pContext,
|
|
int32 *sx,
|
|
int32 *sy)
|
|
{
|
|
printf ("FE_GetScreenSize\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_GetAvailScreenRect(MWContext *pContext,
|
|
int32 *sx,
|
|
int32 *sy,
|
|
int32 *left,
|
|
int32 *top)
|
|
{
|
|
printf ("FE_GetAvailScreenRect\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_GetPixelAndColorDepth(MWContext *pContext,
|
|
int32 *pixelDepth,
|
|
int32 *colorDepth)
|
|
{
|
|
printf ("FE_GetPixelAndColorDepth\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_ShiftImage (MWContext *context,
|
|
LO_ImageStruct *lo_image)
|
|
{
|
|
printf ("FE_ShiftImage()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_ScrollDocTo (MWContext *context,
|
|
int iLocation,
|
|
int32 x,
|
|
int32 y)
|
|
{
|
|
printf ("FE_ScrollDocTo\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_ScrollDocBy (MWContext *context,
|
|
int iLocation,
|
|
int32 x,
|
|
int32 y)
|
|
{
|
|
printf ("FE_ScrollDocBy\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
int
|
|
FE_GetURL (MWContext *context,
|
|
URL_Struct *url)
|
|
{
|
|
printf ("FE_GetURL()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_SetRefreshURLTimer(MWContext *context,
|
|
URL_Struct *URL_s)
|
|
{
|
|
printf ("FE_SetRefreshURLTimer\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
int
|
|
FE_EnableBackButton(MWContext* context)
|
|
{
|
|
printf ("FE_EnableBackButton()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
int
|
|
FE_EnableForwardButton(MWContext* context)
|
|
{
|
|
printf ("FE_EnableForwardButton()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
int
|
|
FE_DisableBackButton(MWContext* context)
|
|
{
|
|
printf ("FE_DisableBackButton()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
int
|
|
FE_DisableForwardButton(MWContext* context)
|
|
{
|
|
printf ("FE_DisableForwardButton()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
MWContext *
|
|
FE_MakeBlankWindow(MWContext *old_context,
|
|
URL_Struct *url,
|
|
char *window_name)
|
|
{
|
|
printf ("FE_MakeBlankWindow()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_SetWindowLoading(MWContext *context,
|
|
URL_Struct *url,
|
|
Net_GetUrlExitFunc **exit_func)
|
|
{
|
|
printf ("FE_SetWindowLoading()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_RaiseWindow(MWContext *context)
|
|
{
|
|
printf ("FE_RaiseWindow()\n");
|
|
XP_ASSERT(0);
|
|
}
|
|
|
|
void
|
|
FE_ConnectToRemoteHost(MWContext* ctxt,
|
|
int url_type,
|
|
char* hostname,
|
|
char* port,
|
|
char* username)
|
|
{
|
|
XP_ASSERT(0);
|
|
printf("FE_ConnectToRemoteHost (empty)\n");
|
|
}
|
|
|
|
void*
|
|
FE_AboutData(const char* which,
|
|
char** data_ret,
|
|
int32* length_ret,
|
|
char** content_type_ret)
|
|
{
|
|
unsigned char *tmp;
|
|
static XP_Bool ever_loaded_map = FALSE;
|
|
char *rv = NULL;
|
|
|
|
printf ("FE_AboutData\n");
|
|
if (0) {;}
|
|
#ifndef NETSCAPE_PRIV
|
|
else if (!strcmp (which, "flamer"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) flamer_gif;
|
|
*length_ret = sizeof (flamer_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#else
|
|
else if (!strcmp (which, "logo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) biglogo_gif;
|
|
*length_ret = sizeof (biglogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "photo"))
|
|
{
|
|
if (!ever_loaded_map)
|
|
{
|
|
*data_ret = 0;
|
|
*length_ret = 0;
|
|
*content_type_ret = 0;
|
|
return 0;
|
|
}
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) photo_jpg;
|
|
*length_ret = sizeof (photo_jpg) - 1;
|
|
*content_type_ret = IMAGE_JPG;
|
|
}
|
|
else if (!strcmp (which, "hype"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char*)hype_au;
|
|
*length_ret = sizeof (hype_au) - 1;
|
|
*content_type_ret = AUDIO_BASIC;
|
|
}
|
|
#ifdef MOZ_SECURITY
|
|
else if (!strcmp (which, "rsalogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) rsalogo_gif;
|
|
*length_ret = sizeof (rsalogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#endif
|
|
#ifdef JAVA
|
|
else if (!strcmp (which, "javalogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) javalogo_gif;
|
|
*length_ret = sizeof (javalogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#endif
|
|
#ifdef HAVE_QUICKTIME
|
|
else if (!strcmp (which, "qtlogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) qt_logo_gif;
|
|
*length_ret = sizeof (qt_logo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#endif
|
|
#ifdef FORTEZZA
|
|
else if (!strcmp (which, "litronic"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) litronic_gif;
|
|
*length_ret = sizeof (litronic_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#endif
|
|
else if (!strcmp (which, "coslogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) coslogo_jpg;
|
|
*length_ret = sizeof (coslogo_jpg) - 1;
|
|
*content_type_ret = IMAGE_JPG;
|
|
}
|
|
else if (!strcmp (which, "insologo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) insologo_gif;
|
|
*length_ret = sizeof (insologo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "mclogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) mclogo_gif;
|
|
*length_ret = sizeof (mclogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "ncclogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) ncclogo_gif;
|
|
*length_ret = sizeof (ncclogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "odilogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) odilogo_gif;
|
|
*length_ret = sizeof (odilogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "tdlogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) tdlogo_gif;
|
|
*length_ret = sizeof (tdlogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
else if (!strcmp (which, "visilogo"))
|
|
{
|
|
/* Note, this one returns a read-only string. */
|
|
*data_ret = (char *) visilogo_gif;
|
|
*length_ret = sizeof (visilogo_gif) - 1;
|
|
*content_type_ret = IMAGE_GIF;
|
|
}
|
|
#endif /* !NETSCAPE_PRIV */
|
|
#ifdef EDITOR
|
|
else if (!strcmp(which, "editfilenew"))
|
|
{
|
|
/* Magic about: for Editor new (blank) window */
|
|
*data_ret = strdup(EDT_GetEmptyDocumentString());
|
|
*length_ret = strlen (*data_ret);
|
|
*content_type_ret = TEXT_MDL;
|
|
}
|
|
#endif
|
|
else
|
|
{
|
|
char *a = NULL;
|
|
char *type = TEXT_HTML;
|
|
Bool do_PR_snprintf = FALSE;
|
|
Bool do_rot = TRUE;
|
|
if (!strcmp (which, ""))
|
|
{
|
|
#if 0
|
|
do_PR_snprintf = TRUE;
|
|
a = fe_get_localized_file(XFE_ABOUT_FILE);
|
|
if (a)
|
|
{
|
|
a = strdup(a);
|
|
do_rot = False;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
a = strdup (
|
|
#ifdef JAVA
|
|
#ifndef MOZ_COMMUNICATOR_ABOUT
|
|
# include "xp/about-java-lite.h"
|
|
#else
|
|
# include "xp/about-java.h"
|
|
#endif
|
|
#else
|
|
#ifndef MOZ_COMMUNICATOR_ABOUT
|
|
# include "xp/about-lite.h"
|
|
#else
|
|
# include "xp/about.h"
|
|
#endif
|
|
#endif
|
|
);
|
|
}
|
|
}
|
|
else if (!strcmp (which, "splash"))
|
|
{
|
|
do_PR_snprintf = TRUE;
|
|
#if 0
|
|
a = fe_get_localized_file(XFE_SPLASH_FILE);
|
|
if (a)
|
|
{
|
|
a = strdup(a);
|
|
do_rot = False;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
a = strdup (
|
|
#ifdef JAVA
|
|
#ifndef MOZ_COMMUNICATOR_ABOUT
|
|
# include "xp/splash-java-lite.h"
|
|
#else
|
|
# include "xp/splash-java.h"
|
|
#endif
|
|
#else
|
|
#ifndef MOZ_COMMUNICATOR_ABOUT
|
|
# include "xp/splash-lite.h"
|
|
#else
|
|
# include "xp/splash.h"
|
|
#endif
|
|
#endif
|
|
);
|
|
}
|
|
}
|
|
else if (!strcmp (which, "1994"))
|
|
{
|
|
ever_loaded_map = TRUE;
|
|
a = strdup (
|
|
# include "xp/authors2.h"
|
|
);
|
|
}
|
|
else if (!strcmp (which,"license"))
|
|
{
|
|
type = TEXT_PLAIN;
|
|
#if 0
|
|
a = fe_get_localized_file(XFE_LICENSE_FILE);
|
|
if (a)
|
|
{
|
|
a = strdup(a);
|
|
do_rot = False;
|
|
}
|
|
else
|
|
{
|
|
a = strdup (fe_LicenseData);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
else if (!strcmp (which,"mozilla"))
|
|
{
|
|
a = strdup (
|
|
# include "xp/mozilla.h"
|
|
);
|
|
}
|
|
else if (!strcmp (which,
|
|
"mailintro"))
|
|
{
|
|
type = MESSAGE_RFC822;
|
|
#if 0
|
|
a = fe_get_localized_file(XFE_MAILINTRO_FILE );
|
|
if (a)
|
|
{
|
|
a = strdup( a );
|
|
do_rot = False;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
a = strdup (
|
|
# include "xp/mail.h"
|
|
);
|
|
}
|
|
}
|
|
|
|
else if (!strcmp (which, "blank"))
|
|
a = strdup ("");
|
|
#if 0
|
|
else if (!strcmp (which, "custom"))
|
|
{
|
|
do_rot = False;
|
|
a = ekit_AboutData();
|
|
}
|
|
#endif
|
|
|
|
else if (!strcmp (which, "plugins"))
|
|
{
|
|
#if 0
|
|
a = fe_get_localized_file(XFE_PLUGIN_FILE);
|
|
if (a)
|
|
{
|
|
a = strdup(a);
|
|
do_rot = False;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
a = strdup (
|
|
# include "xp/aboutplg.h"
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
else
|
|
a = strdup ("\234\255\246\271\250\255\252\274\145\271\246"
|
|
"\261\260\256\263\154\145\154\247\264\272\271"
|
|
"\161\145\234\256\261\261\256\270\204");
|
|
if (a)
|
|
{
|
|
if (do_rot)
|
|
{
|
|
for (tmp = (unsigned char *) a; *tmp; tmp++) *tmp -= 69;
|
|
}
|
|
|
|
#if 0
|
|
if (do_PR_snprintf)
|
|
{
|
|
char *a2;
|
|
int len;
|
|
#ifdef MOZ_SECURITY
|
|
char *s0 = XP_GetString(XFE_SECURITY_WITH);
|
|
char *s1 = XP_SecurityVersion(1);
|
|
char *s2 = XP_SecurityCapabilities();
|
|
char *ss;
|
|
len = strlen(s0)+strlen(s1)+strlen(s2);
|
|
ss = (char*) malloc(len);
|
|
PR_snprintf(ss, len, s0, s1, s2);
|
|
#else
|
|
char *ss = XP_GetString(XFE_SECURITY_DISABLED);
|
|
#endif
|
|
len = strlen(a) + strlen(fe_version_and_locale) +
|
|
strlen(fe_version_and_locale) + strlen(ss);
|
|
a2 = (char *) malloc(len);
|
|
PR_snprintf (a2, len, a,
|
|
fe_version_and_locale,
|
|
fe_version_and_locale,
|
|
ss
|
|
);
|
|
#ifdef MOZ_SECURITY
|
|
free (s2);
|
|
free (ss);
|
|
#endif
|
|
free (a);
|
|
a = a2;
|
|
}
|
|
|
|
#endif
|
|
*data_ret = a;
|
|
rv = a; /* Return means 'free this later' */
|
|
*length_ret = strlen (*data_ret);
|
|
*content_type_ret = type;
|
|
}
|
|
else
|
|
{
|
|
*data_ret = 0;
|
|
*length_ret = 0;
|
|
*content_type_ret = 0;
|
|
}
|
|
}
|
|
return rv;
|
|
}
|
|
|
|
void
|
|
FE_FreeAboutData(void* data,
|
|
const char* which)
|
|
{
|
|
printf ("FE_FreeAboutData\n");
|
|
if (data) free(data);
|
|
}
|
|
|
|
XP_Bool
|
|
FE_IsNetcasterInstalled()
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
int FE_AskStreamQuestion (MWContext *window_id) {
|
|
return 1;
|
|
}
|