亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? osb-browser.c

?? khtml在gtk上的移植版本
?? C
?? 第 1 頁 / 共 2 頁
字號:
    return -1;  }}/*private*/voidosb_browser_set_location_icon(OSBBrowser* self, const gchar* path){  GtkWidget *browser_location_icon =    glade_xml_get_widget(self->_priv->xml, "browser_location_icon");      GError *gerr = NULL;   GdkPixbuf* default_location_pixbuf =    gdk_pixbuf_new_from_file(path,			     &gerr);    	  if (default_location_pixbuf) {    GtkRequisition req;    GdkPixbuf *scaled_buf;    gtk_widget_size_request (browser_location_icon, &req);	    scaled_buf = gdk_pixbuf_scale_simple (default_location_pixbuf,				      req.width,				      req.height,				      GDK_INTERP_BILINEAR);    g_object_unref (default_location_pixbuf);	    gtk_image_set_from_pixbuf (GTK_IMAGE(browser_location_icon),			       scaled_buf);    g_object_unref (scaled_buf);  } else    g_warning("couldn't load default location icon from path %s", path);    }/*private*/GtkKHTML*osb_browser_get_active_engine (OSBBrowser* self){  int curpage = gtk_notebook_get_current_page (self->_priv->tab);  GtkKHTML *engine = GTK_KHTML (gtk_notebook_get_nth_page (self->_priv->tab, curpage));  return engine;}/*private*/voidosb_browser_set_location (OSBBrowser* self, const gchar* location){  GtkEntry *entry;  if (!location) location = "";  entry = GTK_ENTRY (glade_xml_get_widget (self->_priv->xml, "location"));  gtk_entry_set_text (entry, location);}/*private*/voidosb_browser_set_title (OSBBrowser* self, const gchar* title){  gchar *clean_title;  gchar *win_title;  int len;  gchar* lf;    if (!title)    title = "";  clean_title = g_strdup(title);  len = strlen(clean_title);  lf = NULL;  while ( (lf = g_strstr_len (clean_title, len, "\n"))) {    *lf = ' ';  }    clean_title = g_strstrip(clean_title);    win_title = g_strconcat (clean_title,			   " - ",			   osb_browser_config_get_string (self, STRING_BROWSER_NAME),			   NULL);  g_free (clean_title);    gtk_window_set_title (GTK_WINDOW (self), win_title);  g_free (win_title); }/*private*/voidosb_browser_update_ui(OSBBrowser* self, GtkKHTML* engine){  const gchar *title = gtk_khtml_get_title (engine);  const gchar *loc = gtk_khtml_get_location (engine);    osb_browser_set_location (self, loc);  if (title)    osb_browser_set_title (self, title);  else    osb_browser_set_title (self, loc);    gtk_widget_set_sensitive (glade_xml_get_widget (self->_priv->xml, "back"),			    gtk_khtml_can_go_back (engine));    gtk_widget_set_sensitive (glade_xml_get_widget (self->_priv->xml, "go_back"),			    gtk_khtml_can_go_back (engine));    gtk_widget_set_sensitive (glade_xml_get_widget (self->_priv->xml, "forward"),			    gtk_khtml_can_go_forward (engine));    gtk_widget_set_sensitive (glade_xml_get_widget (self->_priv->xml, "go_forward"),			    gtk_khtml_can_go_forward (engine));    }/* private */voidosb_browser_update_ui_local(OSBBrowser* self, GtkKHTML *engine){  const gchar *title = gtk_khtml_get_title (engine);  gchar* lf;    int max;  int len;  gchar *realtitle;  GtkLabel* label;    if (!title)    title = gtk_khtml_get_location (engine);  if (!title)    title = _("Untitled");    max =  osb_browser_config_get_int (self, INT_TAB_TITLE_LEN);  realtitle = g_strndup (title, max);  realtitle[max] = '\0';  g_strstrip(realtitle);    len = strlen(realtitle);   lf = NULL;  while ( (lf = g_strstr_len (realtitle, len, "\n"))) {    *lf = ' ';  }    label = GTK_LABEL (gtk_notebook_get_tab_label (self->_priv->tab, GTK_WIDGET (engine)));  gtk_label_set_text (label, realtitle);  g_free (realtitle);}static voidon_engine_location(GtkKHTML* engine, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);  if (engine == active) {    osb_browser_set_location (self, gtk_khtml_get_location (engine));  }  osb_browser_update_ui_local(self, engine);  }static voidon_engine_title(GtkKHTML* engine, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);  if (engine == active) {    osb_browser_set_title (self, gtk_khtml_get_title (engine));  }  osb_browser_update_ui_local(self, engine);    }static voidon_engine_status(GtkKHTML* engine, const GtkKHTMLLoadStatus* status, gpointer user_data){    OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);  if (active == engine) {    GtkStatusbar *sbar = GTK_STATUSBAR (glade_xml_get_widget (self->_priv->xml, "statusbar"));    GtkProgressBar *pbar = GTK_PROGRESS_BAR (glade_xml_get_widget (self->_priv->xml, "progressbar"));    if (sbar){      const gchar * msg;      guint cid;      OSBBrowserGlobal* g = self->_priv->global;      gchar _msg[400];            g_snprintf(_msg, 400, "Received %d of %d bytes, %d/%d files", status->received, status->size, status->ready, status->files);      osb_browserglobal_set_status(g, _msg);      msg = osb_browserglobal_get_status(g);      cid = gtk_statusbar_get_context_id(sbar, "status-text");            gtk_statusbar_pop(sbar, cid);      gtk_statusbar_push(sbar, cid, msg);    }    if (pbar && status->size > 0 && status->files > 0) {      gdouble fraction = 0.0;      if ( status->filesWithSize < status->files ) {        gdouble ratio = (gdouble) status->filesWithSize / (gdouble) status->files;              fraction += status->received >= status->size ? ratio : ratio * (gdouble) status->received / (gdouble) status->size;        fraction += status->ready >= status->files ? (1.0 - ratio) : (1.0 - ratio) * (gdouble) (status->ready - status->filesWithSize) / (gdouble) (status->files  - status->filesWithSize);      } else {        fraction = (gdouble) status->received / (gdouble) status->size;      }      if ( fraction > 1.0 ) {        fraction = 1.0;      }      gtk_progress_bar_set_fraction (pbar, fraction);    }  }  }static voidon_engine_mouse_over(GtkKHTML* engine, const gchar* link_title, const gchar* link_label, const gchar* link_url, const gchar* link_target, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);    self = self;  if (active == engine) {    GtkStatusbar *sbar = GTK_STATUSBAR (glade_xml_get_widget (self->_priv->xml, "statusbar"));    if (sbar){      const gchar* msg;      guint cid;      cid = gtk_statusbar_get_context_id(sbar, "link-message");            gtk_statusbar_pop(sbar, cid);      msg = link_url;      if (msg && *msg != '\0')	gtk_statusbar_push(sbar, cid, msg);    }      }}static voidon_engine_load_start(GtkKHTML* engine, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);  GtkVBox *pbarBox = GTK_VBOX (glade_xml_get_widget (self->_priv->xml, "progressbar_box"));  GtkProgressBar *pbar = GTK_PROGRESS_BAR (glade_xml_get_widget (self->_priv->xml, "progressbar"));  gtk_progress_bar_set_fraction (pbar, 0.0);  gtk_widget_show(GTK_WIDGET(pbarBox));    self = self;  if (active == engine) {    /* start animating the icon */  }  g_warning("load started");}static voidon_engine_load_stop(GtkKHTML* engine, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML *active = osb_browser_get_active_engine(self);  GtkVBox *pbar =  GTK_VBOX (glade_xml_get_widget (self->_priv->xml, "progressbar_box"));    gtk_widget_hide(GTK_WIDGET(pbar));    self = self;  if (active == engine) {        GtkStatusbar *sbar = GTK_STATUSBAR (glade_xml_get_widget (self->_priv->xml, "statusbar"));    osb_browser_update_ui (self, engine);    if (sbar) {      const gchar * msg;      guint cid;      OSBBrowserGlobal* g = self->_priv->global;      osb_browserglobal_set_status(self->_priv->global, "");      msg = osb_browserglobal_get_status(g);      cid = gtk_statusbar_get_context_id(sbar, "status-text");            gtk_statusbar_pop(sbar, cid);      gtk_statusbar_push(sbar, cid, msg);    }      }  osb_browser_update_ui_local (self,engine);  if (self->_priv->global->renderOnly) {    osb_browser_print_render_tree(self);    /* close the ui. */    gtk_widget_destroy (GTK_WIDGET (self));  }      g_warning("load stopped");  }static GtkKHTML*on_engine_req_new_window(GtkKHTML* engine, const gchar* url, gpointer user_data){  OSBBrowser* new_browser;  OSBBrowser* self = OSB_BROWSER (user_data);  GtkKHTML* new_engine;  const gchar* group;    new_browser = OSB_BROWSER (osb_browser_new (self->_priv->global));  new_engine = osb_browser_get_active_engine (new_browser);  group = gtk_khtml_get_group(engine);  gtk_khtml_set_group(GTK_KHTML(new_engine), group);    gtk_khtml_load_url(new_engine, url);    gtk_widget_show (GTK_WIDGET (new_browser)); /* this should actually be off */      return new_engine;}static voidon_engine_req_js_prompt(GtkKHTML* engine, GtkKHTMLPromptArgs* args, gpointer user_data){  OSBBrowser* self = OSB_BROWSER (user_data);  GtkDialog* dialog;  gchar* title;  gint response;    if (args->type == GTK_KHTML_ALERT){    dialog = GTK_DIALOG(gtk_message_dialog_new (GTK_WINDOW (self),					        GTK_DIALOG_DESTROY_WITH_PARENT,					        GTK_MESSAGE_WARNING,					        GTK_BUTTONS_CLOSE,					        args->msg));        gtk_dialog_set_has_separator(dialog, FALSE);    title = g_strconcat(_("JavaScript "), _("Alert"), NULL);    gtk_window_set_title(GTK_WINDOW(dialog), title);        g_free(title);    gtk_dialog_set_default_response (dialog, GTK_RESPONSE_CLOSE);    response = gtk_dialog_run (dialog);    gtk_widget_destroy (GTK_WIDGET (dialog));    /** setup return parameters */    if (response == GTK_RESPONSE_YES)      args->out_ok_pressed = TRUE;    else      args->out_ok_pressed = FALSE;  } else if (args->type == GTK_KHTML_CONFIRM) {    dialog = GTK_DIALOG(gtk_message_dialog_new (GTK_WINDOW (self),						GTK_DIALOG_DESTROY_WITH_PARENT,						GTK_MESSAGE_WARNING,						GTK_BUTTONS_YES_NO,						args->msg));        gtk_dialog_set_has_separator(dialog, FALSE);        title = g_strconcat(_("JavaScript "), _("Confirm"), NULL);    gtk_window_set_title(GTK_WINDOW(dialog), title);        g_free(title);        gtk_dialog_set_default_response (dialog, GTK_RESPONSE_NO);    response = gtk_dialog_run (dialog);    gtk_widget_destroy (GTK_WIDGET (dialog));    /** setup return parameters */    if (response == GTK_RESPONSE_YES)      args->out_ok_pressed = TRUE;    else      args->out_ok_pressed = FALSE;  } else if (args->type == GTK_KHTML_INPUT) {    /* no input supported atm,  */       dialog = GTK_DIALOG(gtk_message_dialog_new (GTK_WINDOW (self),						GTK_DIALOG_DESTROY_WITH_PARENT,						GTK_MESSAGE_WARNING,						GTK_BUTTONS_YES_NO,						args->msg));        gtk_dialog_set_has_separator(dialog, FALSE);        title = g_strconcat(_("JavaScript "), _("Input"), NULL);    gtk_window_set_title(GTK_WINDOW(dialog), title);        g_free(title);        gtk_dialog_set_default_response (dialog, GTK_RESPONSE_NO);    response = gtk_dialog_run (dialog);    gtk_widget_destroy(GTK_WIDGET(dialog));    /** setup return parameters */    args->out_input = g_strdup("not implemented");    if (response == GTK_RESPONSE_YES)      args->out_ok_pressed = TRUE;    else      args->out_ok_pressed = FALSE;      } else {    args->out_ok_pressed = FALSE;  }}static voidon_engine_req_auth_prompt(GtkKHTML* engine, GtkKHTMLAuthArgs* args, gpointer user_data){  OSBBrowser *self = OSB_BROWSER (user_data);  GtkDialog *dialog;  GtkEntry *entry;  gchar *realmText = NULL;  gint response;  dialog = GTK_DIALOG (glade_xml_get_widget (self->_priv->xml, "authentication"));  realmText = g_strdup_printf ("Authentication required for %s", args->realm);  gtk_label_set_text (GTK_LABEL (glade_xml_get_widget (self->_priv->xml, "auth_label")), realmText);  gtk_entry_set_text (GTK_ENTRY (glade_xml_get_widget (self->_priv->xml, "username")), "");  gtk_entry_set_text (GTK_ENTRY (glade_xml_get_widget (self->_priv->xml, "password")), "");      response = gtk_dialog_run (dialog);  gtk_widget_hide (GTK_WIDGET (dialog));    entry = GTK_ENTRY (glade_xml_get_widget (self->_priv->xml, "username"));  args->out_username = g_strdup (gtk_entry_get_text (entry));  entry = GTK_ENTRY (glade_xml_get_widget (self->_priv->xml, "password"));  args->out_password = g_strdup (gtk_entry_get_text (entry));    switch (response) {   case GTK_RESPONSE_OK:    args->out_ok_pressed = TRUE;    break;  case GTK_RESPONSE_CANCEL:    /* fallthrough */  case GTK_RESPONSE_NONE:    /* fallthrough */  default:    args->out_ok_pressed = FALSE;    break;  }    }/*private*/voidosb_browser_connect_engine_signals(OSBBrowser* self, GtkKHTML *engine){#define CONNECT_WITH_DATA(__o, __s, __h, __d)\  g_signal_connect (__o, __s, G_CALLBACK( __h), __d);    CONNECT_WITH_DATA (engine, "location", on_engine_location, self);  CONNECT_WITH_DATA (engine, "title", on_engine_title, self);  CONNECT_WITH_DATA (engine, "status", on_engine_status, self);  CONNECT_WITH_DATA (engine, "req-js-prompt", on_engine_req_js_prompt, self);  CONNECT_WITH_DATA (engine, "req-auth-prompt", on_engine_req_auth_prompt, self);  CONNECT_WITH_DATA (engine, "req-new-window", on_engine_req_new_window, self);  CONNECT_WITH_DATA (engine, "load-start", on_engine_load_start, self);  CONNECT_WITH_DATA (engine, "load-stop", on_engine_load_stop, self);  CONNECT_WITH_DATA (engine, "mouse-over", on_engine_mouse_over, self);		    #undef CONNECT_WITH_DATA  }voidosb_browser_print_render_tree(OSBBrowser* self) {  GtkKHTML *engine = osb_browser_get_active_engine(self);  const gchar* rt = gtk_khtml_render_tree (engine);  g_printf("%s\n", rt);}gchar *normalize_filename(const gchar* file){  if (file) {    const int len = strlen(file);           if (len > 0 && file[0] == '/') {      /* pad url with necessary "file://" */      gchar * fullName = g_strconcat ("file://", file, NULL);              return fullName;    }    if (((len > 1 && file[1] == '/') || len == 1) &&        (file[0] == '.' || file[0] == '~')) {      switch (file[0]) {      case '.': /* case current directory */      {        gchar * curdir = g_get_current_dir ();               gchar * fullName = g_strconcat ("file://", curdir, file+1, NULL);        g_free (curdir);        return fullName;      }      case '~': /* case home directory */      {        gchar* fullName = g_strconcat ("file://", g_get_home_dir(), file+1, NULL);        return fullName;      }      }    }  }  /* I guess it is a valid URL then. */  return g_strdup(file);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色成人av| 欧美性生活久久| www.激情成人| 欧美吞精做爰啪啪高潮| 日韩精品一区在线| 欧美国产日韩一二三区| 中文字幕亚洲精品在线观看| 亚洲乱码中文字幕| 久久精品国内一区二区三区| 国产麻豆精品95视频| 不卡的av网站| 日韩精品一区二区三区在线| 17c精品麻豆一区二区免费| 亚洲五月六月丁香激情| 国产综合色在线视频区| 欧美日韩极品在线观看一区| 久久久美女毛片| 日日摸夜夜添夜夜添亚洲女人| 波多野结衣亚洲| 久久久精品日韩欧美| 另类综合日韩欧美亚洲| 在线观看亚洲成人| 日韩一区有码在线| 国产成人一区在线| 五月天网站亚洲| 日韩亚洲欧美一区| 欧美一区二区性放荡片| 中文字幕日韩一区| 91在线视频播放| 中文字幕亚洲一区二区va在线| 婷婷激情综合网| 91色乱码一区二区三区| 日韩欧美亚洲国产另类| 18成人在线观看| 国产一区二区三区精品视频 | 欧美日韩精品一区二区| 国产精品热久久久久夜色精品三区| 蜜臀精品一区二区三区在线观看 | 国产精品人妖ts系列视频| 极品少妇一区二区三区精品视频| 欧美色图第一页| 精品一二线国产| 欧美主播一区二区三区美女| 久久先锋影音av鲁色资源网| 国产欧美一区二区三区鸳鸯浴| 久久国产欧美日韩精品| 精品国产一区a| 国内精品视频一区二区三区八戒| 亚洲午夜久久久久久久久电影网| 国产婷婷色一区二区三区| 午夜一区二区三区在线观看| 欧美日韩国产美| 久久国产日韩欧美精品| 亚洲国产精品ⅴa在线观看| 欧美精品v国产精品v日韩精品| 亚洲欧美日韩电影| 欧美群妇大交群中文字幕| 日韩影院在线观看| 久久久精品国产免费观看同学| 国产一区二区三区四区五区入口 | 五月天丁香久久| 久久久亚洲精品石原莉奈| 99久久久国产精品免费蜜臀| 亚洲国产视频在线| 国产精品天美传媒| 在线不卡一区二区| 成人精品视频.| 青娱乐精品视频| 中文字幕精品综合| 日韩欧美国产三级电影视频| 粉嫩高潮美女一区二区三区| 丝袜美腿亚洲色图| 中文字幕久久午夜不卡| 91精品国产黑色紧身裤美女| 99久久精品99国产精品| 蜜桃av一区二区| 一区二区久久久| 欧美国产精品中文字幕| 欧美一级高清片| 一本大道久久a久久精品综合| 韩国av一区二区三区四区| 亚洲一区二区三区四区不卡| 国产欧美一区二区三区网站| 日韩欧美中文字幕制服| 在线视频欧美精品| 成人免费视频免费观看| 激情欧美日韩一区二区| 精品系列免费在线观看| 日本vs亚洲vs韩国一区三区| 亚洲电影一区二区| 亚洲成av人片在线| 亚洲图片欧美色图| 亚洲高清久久久| 亚洲成a人片在线不卡一二三区| 亚洲一区二区三区在线播放| 亚洲一区二区三区激情| 亚洲黄色录像片| 亚洲一卡二卡三卡四卡| 亚洲免费毛片网站| 亚洲一区精品在线| 天天影视涩香欲综合网| 日本女人一区二区三区| 日本亚洲视频在线| 一本高清dvd不卡在线观看| 色诱视频网站一区| 欧美日韩国产乱码电影| 日韩一区二区在线观看| 免费在线观看日韩欧美| 国产一区激情在线| 91视视频在线直接观看在线看网页在线看| www.日韩在线| 在线不卡a资源高清| 国产日韩欧美麻豆| 亚洲综合在线免费观看| 麻豆中文一区二区| eeuss国产一区二区三区| 欧美日韩一区不卡| 国产欧美综合在线观看第十页 | 久久久久久久免费视频了| 中文字幕乱码亚洲精品一区| 亚洲v精品v日韩v欧美v专区| 国产主播一区二区| 一本在线高清不卡dvd| 久久久精品免费免费| 亚洲私人影院在线观看| 老司机午夜精品99久久| 91免费看`日韩一区二区| www激情久久| 日韩精品每日更新| 91免费观看视频在线| 国产无人区一区二区三区| 青青草国产精品97视觉盛宴| 粉嫩高潮美女一区二区三区| 3atv一区二区三区| 亚洲一区二区三区四区在线| 国产成人综合自拍| 精品国精品国产| 日韩av电影一区| 欧美日韩国产经典色站一区二区三区| www欧美成人18+| 麻豆免费看一区二区三区| 欧美日韩视频在线观看一区二区三区 | 成人h版在线观看| 欧美一区二区免费视频| 蜜桃视频免费观看一区| 91精品中文字幕一区二区三区| 一二三区精品视频| 99精品久久免费看蜜臀剧情介绍| 亚洲欧洲日本在线| 97精品国产露脸对白| 最新欧美精品一区二区三区| 成人动漫一区二区三区| 日本一区二区成人| 成人黄色在线看| 亚洲免费在线电影| 欧美性受xxxx黑人xyx| 丝袜诱惑制服诱惑色一区在线观看| 欧美日本在线播放| 免费在线成人网| 中文乱码免费一区二区| 色一区在线观看| 婷婷丁香久久五月婷婷| 精品国产亚洲在线| 色诱视频网站一区| 久久精品噜噜噜成人av农村| 国产亚洲欧洲一区高清在线观看| 成人黄色777网| 依依成人精品视频| 精品国产sm最大网站| 国产在线视频一区二区| 久久亚洲欧美国产精品乐播| 91在线免费视频观看| 久久精品99国产精品| 国产精品进线69影院| 宅男噜噜噜66一区二区66| 国产曰批免费观看久久久| 亚洲美女视频在线观看| 91精品国产手机| eeuss影院一区二区三区| 蜜桃视频一区二区三区| 亚洲精品免费一二三区| 欧美精品一区二区三区四区| 91蜜桃网址入口| 国产综合色精品一区二区三区| 18成人在线观看| 久久精品男人天堂av| 欧美日韩成人一区二区| 91色在线porny| 国产一二三精品| 亚洲一区二区三区视频在线| 国产精品午夜久久| 91精品国产色综合久久| 欧美性生活影院| 欧美日韩一区二区三区视频| 91麻豆精品视频| 972aa.com艺术欧美| 91天堂素人约啪| 色哟哟在线观看一区二区三区| 成人免费观看av| 不卡在线观看av|