⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc-gtk.c

📁 Linux下使用最为广泛的gftp的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
      default:        if (ddata->nofunc != NULL)          ddata->nofunc (ddata->nopointer, ddata);        break;    }  if (ddata->edit != NULL &&      ddata->dialog != NULL)    gtk_widget_destroy (ddata->dialog);  g_free (ddata);}#endifstatic gintdialog_keypress (GtkWidget * widget, GdkEventKey * event, gpointer data){  if (event->type != GDK_KEY_PRESS)    return (FALSE);  if (event->keyval == GDK_KP_Enter || event->keyval == GDK_Return)    {#if GTK_MAJOR_VERSION == 1      ok_dialog_response (widget, data);#else      dialog_response (widget, GTK_RESPONSE_YES, data);#endif      return (TRUE);    }  else if (event->keyval == GDK_Escape)    {#if GTK_MAJOR_VERSION == 1      cancel_dialog_response (widget, data);#else      dialog_response (widget, GTK_RESPONSE_NO, data);#endif      return (TRUE);    }  return (FALSE);}voidMakeEditDialog (char *diagtxt, char *infotxt, char *deftext, int passwd_item,		char *checktext,                 gftp_dialog_button okbutton, void (*okfunc) (), void *okptr,		void (*cancelfunc) (), void *cancelptr){  GtkWidget * tempwid, * dialog;  gftp_dialog_data * ddata;  const gchar * yes_text;  ddata = g_malloc (sizeof (*ddata));  ddata->yesfunc = okfunc;  ddata->yespointer = okptr;  ddata->nofunc = cancelfunc;  ddata->nopointer = cancelptr;#if GTK_MAJOR_VERSION == 1  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), diagtxt);  gtk_grab_add (dialog);  gtk_container_border_width (GTK_CONTAINER			      (GTK_DIALOG (dialog)->action_area), 5);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 15);  gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->action_area), TRUE);#else  switch (okbutton)    {      case gftp_dialog_button_ok:        yes_text = GTK_STOCK_OK;        break;      case gftp_dialog_button_create:        yes_text = GTK_STOCK_ADD;        break;      case gftp_dialog_button_change:        yes_text = _("Change");        break;      case gftp_dialog_button_connect:        yes_text = _("Connect");        break;      case gftp_dialog_button_rename:        yes_text = _("Rename");        break;      default:        yes_text = GTK_STOCK_MISSING_IMAGE;        break;    }  dialog = gtk_dialog_new_with_buttons (_(diagtxt), NULL, 0,                                        yes_text,                                        GTK_RESPONSE_YES,                                        GTK_STOCK_CANCEL,                                        GTK_RESPONSE_NO,                                        NULL);#endif  gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 10);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 5);  gtk_window_set_wmclass (GTK_WINDOW(dialog), "edit", "gFTP");  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);  gtk_widget_realize (dialog);  if (gftp_icon != NULL)    {      gdk_window_set_icon (dialog->window, NULL, gftp_icon->pixmap,                           gftp_icon->bitmap);      gdk_window_set_icon_name (dialog->window, gftp_version);    }  ddata->dialog = dialog;  tempwid = gtk_label_new (infotxt);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), tempwid, TRUE,		      TRUE, 0);  gtk_widget_show (tempwid);  ddata->edit = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (ddata->edit), "key_press_event",                      GTK_SIGNAL_FUNC (dialog_keypress), (gpointer) ddata);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), ddata->edit, TRUE,		      TRUE, 0);  gtk_widget_grab_focus (ddata->edit);  gtk_entry_set_visibility (GTK_ENTRY (ddata->edit), passwd_item);  if (deftext != NULL)    {      gtk_entry_set_text (GTK_ENTRY (ddata->edit), deftext);      gtk_entry_select_region (GTK_ENTRY (ddata->edit), 0, strlen (deftext));    }  gtk_widget_show (ddata->edit);  if (checktext != NULL)    {      ddata->checkbox = gtk_check_button_new_with_label (checktext);      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),                           ddata->checkbox, TRUE, TRUE, 0);      gtk_widget_show (ddata->checkbox);    }      #if GTK_MAJOR_VERSION == 1  switch (okbutton)    {      case gftp_dialog_button_ok:        yes_text = _("OK");        break;      case gftp_dialog_button_create:        yes_text = _("Add");        break;      case gftp_dialog_button_change:        yes_text = _("Change");        break;      case gftp_dialog_button_connect:        yes_text = _("Connect");        break;      case gftp_dialog_button_rename:        yes_text = _("Rename");        break;      default:        yes_text = "";        break;    }  tempwid = gtk_button_new_with_label (yes_text);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid,		      TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",                      GTK_SIGNAL_FUNC (ok_dialog_response),                      ddata);  gtk_widget_grab_default (tempwid);  gtk_widget_show (tempwid);  tempwid = gtk_button_new_with_label (_("Cancel"));  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid,		      TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",                      GTK_SIGNAL_FUNC (cancel_dialog_response),                      ddata);  gtk_widget_show (tempwid);#else  g_signal_connect (GTK_OBJECT (dialog), "response",                    G_CALLBACK (dialog_response), ddata);#endif  gtk_widget_show (dialog);}voidMakeYesNoDialog (char *diagtxt, char *infotxt,                  void (*yesfunc) (), gpointer yespointer,                  void (*nofunc) (), gpointer nopointer){  GtkWidget * text, * dialog;  gftp_dialog_data * ddata;#if GTK_MAJOR_VERSION == 1  GtkWidget * tempwid;#endif  ddata = g_malloc (sizeof (*ddata));  ddata->yesfunc = yesfunc;  ddata->yespointer = yespointer;  ddata->nofunc = nofunc;  ddata->nopointer = nopointer;#if GTK_MAJOR_VERSION == 1  dialog = gtk_dialog_new ();  gtk_grab_add (dialog);  gtk_window_set_title (GTK_WINDOW (dialog), diagtxt);  gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area),                               5);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 15);  gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->action_area), TRUE);#else  dialog = gtk_dialog_new_with_buttons (_(diagtxt), NULL, 0,                                        GTK_STOCK_YES,                                        GTK_RESPONSE_YES,                                        GTK_STOCK_NO,                                        GTK_RESPONSE_NO,                                        NULL);#endif  gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 10);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 5);  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);  gtk_window_set_wmclass (GTK_WINDOW(dialog), "yndiag", "gFTP");  gtk_widget_realize (dialog);  if (gftp_icon != NULL)    {      gdk_window_set_icon (dialog->window, NULL, gftp_icon->pixmap,                           gftp_icon->bitmap);      gdk_window_set_icon_name (dialog->window, gftp_version);    }  ddata->dialog = dialog;  text = gtk_label_new (infotxt);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), text, TRUE, TRUE, 0);  gtk_widget_show (text);#if GTK_MAJOR_VERSION == 1  tempwid = gtk_button_new_with_label (_("  Yes  "));  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid,                      FALSE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",                      GTK_SIGNAL_FUNC (ok_dialog_response), ddata);  gtk_widget_grab_default (tempwid);  gtk_widget_show (tempwid);  tempwid = gtk_button_new_with_label (_("  No  "));  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid,                      FALSE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",                      GTK_SIGNAL_FUNC (cancel_dialog_response), ddata);  gtk_widget_show (tempwid);#else  g_signal_connect (GTK_OBJECT (dialog), "response",                    G_CALLBACK (dialog_response), ddata);#endif  gtk_widget_show (dialog);}static gintdelete_event (GtkWidget * widget, GdkEvent * event, gpointer data){  return (TRUE);}static voidtrans_stop_button (GtkWidget * widget, gpointer data){  gftp_transfer * transfer;  transfer = data;  pthread_kill (((gftp_window_data *) transfer->fromwdata)->tid, SIGINT);}voidupdate_directory_download_progress (gftp_transfer * transfer){  static GtkWidget * dialog = NULL, * textwid, * stopwid;  char tempstr[255];  GtkWidget * vbox;  if (transfer->numfiles < 0 || transfer->numdirs < 0)    {      if (dialog != NULL)        gtk_widget_destroy (dialog);      dialog = NULL;      return;    }  if (dialog == NULL)    {      dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);#if GTK_MAJOR_VERSION > 1      gtk_window_set_decorated (GTK_WINDOW (dialog), 0);#endif      gtk_grab_add (dialog);      gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",                          GTK_SIGNAL_FUNC (delete_event), NULL);      gtk_window_set_title (GTK_WINDOW (dialog),			    _("Getting directory listings"));      gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);      gtk_window_set_wmclass (GTK_WINDOW(dialog), "dirlist", "gFTP");      vbox = gtk_vbox_new (FALSE, 5);      gtk_container_border_width (GTK_CONTAINER (vbox), 10);      gtk_container_add (GTK_CONTAINER (dialog), vbox);      gtk_widget_show (vbox);      textwid = gtk_label_new (NULL);      gtk_box_pack_start (GTK_BOX (vbox), textwid, TRUE, TRUE, 0);      gtk_widget_show (textwid);      statuswid = gtk_progress_bar_new ();      gtk_progress_set_activity_mode (GTK_PROGRESS (statuswid), 1);      gtk_progress_bar_set_activity_step (GTK_PROGRESS_BAR (statuswid), 3);      gtk_progress_bar_set_activity_blocks (GTK_PROGRESS_BAR (statuswid), 5);      gtk_box_pack_start (GTK_BOX (vbox), statuswid, TRUE, TRUE, 0);      gtk_widget_show (statuswid);      stopwid = gtk_button_new_with_label (_("  Stop  "));      gtk_signal_connect (GTK_OBJECT (stopwid), "clicked",                          GTK_SIGNAL_FUNC (trans_stop_button), transfer);      gtk_box_pack_start (GTK_BOX (vbox), stopwid, TRUE, TRUE, 0);      gtk_widget_show (stopwid);       gtk_widget_show (dialog);    }  g_snprintf (tempstr, sizeof (tempstr),              _("Received %ld directories\nand %ld files"),               transfer->numdirs, transfer->numfiles);  gtk_label_set_text (GTK_LABEL (textwid), tempstr);}intprogress_timeout (gpointer data){  gftp_transfer * tdata;  double val;  tdata = data;  update_directory_download_progress (tdata);  val = gtk_progress_get_value (GTK_PROGRESS (statuswid));  if (val >= 1.0)    val = 0.0;  else    val += 0.10;  gtk_progress_bar_update (GTK_PROGRESS_BAR (statuswid), val);  return (1);}voiddisplay_cached_logs (void){  gftp_log * templog;  GList * templist;   pthread_mutex_lock (&log_mutex);  templist = gftp_file_transfer_logs;  while (templist != NULL)    {       templog = (gftp_log *) templist->data;      ftp_log (templog->type, NULL, "%s", templog->msg);      g_free (templog->msg);      g_free (templog);       templist->data = NULL;      templist = templist->next;    }  g_list_free (gftp_file_transfer_logs);  gftp_file_transfer_logs = NULL;  pthread_mutex_unlock (&log_mutex);}char *get_xpm_path (char *filename, int quit_on_err){  char *tempstr, *exfile, *share_dir;  tempstr = g_strconcat (BASE_CONF_DIR, "/", filename, NULL);  exfile = gftp_expand_path (NULL, tempstr);  g_free (tempstr);  if (access (exfile, F_OK) != 0)    {      g_free (exfile);      share_dir = gftp_get_share_dir ();      tempstr = g_strconcat (share_dir, "/", filename, NULL);      exfile = gftp_expand_path (NULL, tempstr);      g_free (tempstr);      if (access (exfile, F_OK) != 0)	{	  g_free (exfile);	  exfile = g_strconcat ("/usr/share/icons/", filename, NULL);	  if (access (exfile, F_OK) != 0)	    {	      g_free (exfile);	      if (!quit_on_err)		return (NULL);	      printf (_("gFTP Error: Cannot find file %s in %s or %s\n"),		      filename, share_dir, BASE_CONF_DIR);	      exit (1);	    }	}    }  return (exfile);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -