aboutsummaryrefslogblamecommitdiffstats
path: root/embed/ephy-embed.c
blob: 5d124c6539fb969275c0e79a27b3c6f8bc085b44 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  
                                                













                                                                              

        


                    
                   

      

                       

                                 
                          



                   
                     











                        
                       




                        

                                                     

                                                           


                          
                                         
 









                                                                           


                                                                         
         
 
                               






                                            
                         

                                        





                                                                           
                                          

                                             

                                          







                                                                             
                                             
                                          







                                                                             
                                             
                                     







                                                                        

                                             





                                                                          
                                          
                                

                                             







                                                                         
                                             
                                       







                                                                          

                                            
                                      







                                                                         
                                             
                                             







                                                                                

                                              







                                                                               

                                              







                                                                                

                                          







                                                                            
                                            
                           



           
                                
 
                                                    
 
                                                                    


    
                                      
                                     

                                                             
                                     

 
    


                                                             
                                 

 
        


                                                             
                                          

 
        


                                                             
                                             

 
        


                                                             
                                        

 

                                            

                                                             
                                             

 
    


                                                             
                               

 
    


                                                             
                                  

 
    


                                                             
                             

 
 

                                       

                                                             
                                        

 
      
                                          
                                           

                                                             
                                                     

 
    
                                    
                                          

                                                             
                                     

 
    
                                      

                                     

                                                             
                                              

 

                                      

                                                             
                                       

 

                                               

                                                             
                                               

 
    
                                              



                                                  

                                                             
                                                                      

 

                                              

                                                             
                                               

 
    
                                             
                                    

                                                             
                                            

 
    
                                                

                                                         

                                                             
                                                              

 
    



                                                         

                                                             
                                                                                      

 
        



                                                             
                                                   

 
    


                                                             
                                

 
    

                                              

                                                             
                                              

 

                                               

                                                             
                                                

 
    
                                   
                                       

                                                             
                                   

 
    


                                                             
                                           

 

                                                   

                                                             
                                                    

 
    
                                                    

                                                                 

                                                             
                                                                 
 
/*
 *  Copyright (C) 2000-2003 Marco Pesenti Gritti
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *
 *  $Id$
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "ephy-embed.h"

#include "ephy-marshal.h"
#include "mozilla-embed-single.h"
#include "mozilla-embed.h"

enum
{
    NEW_WINDOW,
    CONTEXT_MENU,
    LINK_MESSAGE,
    FAVICON,
    JS_STATUS,
    LOCATION,
    TITLE,
    PROGRESS,
    NET_STATE,
    VISIBILITY,
    DESTROY_BRSR,
    OPEN_URI,
    SIZE_TO,
    DOM_MOUSE_CLICK,
    DOM_MOUSE_DOWN,
    SECURITY_CHANGE,
    ZOOM_CHANGE,
    LAST_SIGNAL
};

static guint ephy_embed_signals[LAST_SIGNAL] = { 0 };

static void ephy_embed_base_init (gpointer base_class);

GType
ephy_embed_get_type (void)
{
    static GType ephy_embed_type = 0;

    if (ephy_embed_type == 0)
    {
        static const GTypeInfo our_info =
        {
            sizeof (EphyEmbedClass),
            ephy_embed_base_init,
            NULL,
        };

        ephy_embed_type = g_type_register_static (G_TYPE_INTERFACE,
                              "EphyEmbed",
                              &our_info,
                              (GTypeFlags)0);
    }

    return ephy_embed_type;
}

static void
ephy_embed_base_init (gpointer g_class)
{
    static gboolean initialized = FALSE;

    if (!initialized)
    {
    ephy_embed_signals[NEW_WINDOW] =
        g_signal_new ("ge_new_window",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, new_window),
                  NULL, NULL,
                  ephy_marshal_VOID__POINTER_INT,
                  G_TYPE_NONE,
                  2,
                  G_TYPE_POINTER,
                  G_TYPE_INT);
    ephy_embed_signals[LINK_MESSAGE] =
        g_signal_new ("ge_link_message",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, link_message),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__STRING,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_STRING);
    ephy_embed_signals[CONTEXT_MENU] =
        g_signal_new ("ge_context_menu",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, context_menu),
                  g_signal_accumulator_true_handled, NULL,
                  ephy_marshal_BOOLEAN__OBJECT,
                  G_TYPE_BOOLEAN,
                  1,
                  G_TYPE_OBJECT);
    ephy_embed_signals[FAVICON] =
        g_signal_new ("ge_favicon",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, favicon),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__STRING,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_STRING);
    ephy_embed_signals[JS_STATUS] =
        g_signal_new ("ge_js_status",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, js_status),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__STRING,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_STRING);
    ephy_embed_signals[LOCATION] =
        g_signal_new ("ge_location",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, location),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__STRING,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_STRING);
    ephy_embed_signals[NET_STATE] =
        g_signal_new ("ge_net_state",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (EphyEmbedClass, net_state),
                  NULL, NULL,
                  ephy_marshal_VOID__STRING_INT,
                  G_TYPE_NONE,
                  2,
                  G_TYPE_STRING,
                  G_TYPE_INT);
    ephy_embed_signals[OPEN_URI] =
        g_signal_new ("ge_open_uri",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, open_uri),
                  NULL, NULL,
                  ephy_marshal_INT__STRING,
                  G_TYPE_INT,
                  1,
                  G_TYPE_STRING);
    ephy_embed_signals[DOM_MOUSE_CLICK] =
        g_signal_new ("ge_dom_mouse_click",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, dom_mouse_click),
                  g_signal_accumulator_true_handled, NULL,
                  ephy_marshal_BOOLEAN__OBJECT,
                  G_TYPE_BOOLEAN,
                  1,
                  G_TYPE_POINTER);
    ephy_embed_signals[DOM_MOUSE_DOWN] =
        g_signal_new ("ge_dom_mouse_down",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, dom_mouse_down),
                  g_signal_accumulator_true_handled, NULL,
                  ephy_marshal_BOOLEAN__OBJECT,
                  G_TYPE_BOOLEAN,
                  1,
                  G_TYPE_POINTER);
    ephy_embed_signals[SECURITY_CHANGE] =
        g_signal_new ("ge_security_change",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, security_change),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__INT,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_INT);
    ephy_embed_signals[ZOOM_CHANGE] =
        g_signal_new ("ge_zoom_change",
                  EPHY_TYPE_EMBED,
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (EphyEmbedClass, zoom_change),
                  NULL, NULL,
                  g_cclosure_marshal_VOID__FLOAT,
                  G_TYPE_NONE,
                  1,
                  G_TYPE_FLOAT);
    initialized = TRUE;
    }
}

EphyEmbed *
ephy_embed_new (GObject *single)
{
    g_assert (MOZILLA_IS_EMBED_SINGLE (single));

    return EPHY_EMBED (g_object_new (MOZILLA_TYPE_EMBED, NULL));
}

void
ephy_embed_load_url (EphyEmbed *embed,
             const char *url)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->load_url (embed, url);
}

void
ephy_embed_stop_load (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->stop_load (embed);
}

gboolean
ephy_embed_can_go_back (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->can_go_back (embed);
}

gboolean
ephy_embed_can_go_forward (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->can_go_forward (embed);
}

gboolean
ephy_embed_can_go_up (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->can_go_up (embed);
}

GSList *
ephy_embed_get_go_up_list (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->get_go_up_list (embed);
}

void
ephy_embed_go_back (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->go_back (embed);
}

void
ephy_embed_go_forward (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->go_forward (embed);
}

void
ephy_embed_go_up (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->go_up (embed);
}


char *
ephy_embed_get_title (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->get_title (embed);
}

char *
ephy_embed_get_location (EphyEmbed *embed,
             gboolean toplevel)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->get_location (embed, toplevel);
}

void
ephy_embed_reload (EphyEmbed *embed,
           EmbedReloadFlags flags)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->reload (embed, flags);
}

void
ephy_embed_zoom_set (EphyEmbed *embed,
             float zoom,
             gboolean reflow)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->zoom_set (embed, zoom, reflow);
}

float
ephy_embed_zoom_get (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->zoom_get (embed);
}

int
ephy_embed_shistory_n_items  (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->shistory_n_items (embed);
}

void
ephy_embed_shistory_get_nth (EphyEmbed *embed,
                 int nth,
                 gboolean is_relative,
                 char **url,
                 char **title)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->shistory_get_nth (embed, nth, is_relative, url, title);
}

int
ephy_embed_shistory_get_pos (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->shistory_get_pos (embed);
}

void
ephy_embed_shistory_go_nth (EphyEmbed *embed,
                int nth)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->shistory_go_nth (embed, nth);
}

void
ephy_embed_get_security_level (EphyEmbed *embed,
                   EmbedSecurityLevel *level,
                   char **description)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->get_security_level (embed, level, description);
}

void
ephy_embed_find_set_properties  (EphyEmbed *embed,
                 char *search_string,
                 gboolean case_sensitive,
                 gboolean match_word)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->find_set_properties (embed, search_string, case_sensitive, match_word);
}

gboolean
ephy_embed_find_next (EphyEmbed *embed,
              gboolean backwards)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->find_next (embed, backwards);
}

void
ephy_embed_activate (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->activate (embed);
}

void
ephy_embed_set_encoding (EphyEmbed *embed,
             const char *encoding)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->set_encoding (embed, encoding);
}

EphyEncodingInfo *
ephy_embed_get_encoding_info (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->get_encoding_info (embed);
}

void
ephy_embed_print (EphyEmbed *embed,
          EmbedPrintInfo *info)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->print (embed, info);
}

void
ephy_embed_print_preview_close (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    klass->print_preview_close (embed);
}

int
ephy_embed_print_preview_n_pages (EphyEmbed *embed)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->print_preview_n_pages (embed);
}

void
ephy_embed_print_preview_navigate (EphyEmbed *embed,
                   EmbedPrintPreviewNavType type,
                   int page)
{
    EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed);
    return klass->print_preview_navigate (embed, type, page);
}