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

📄 mfm.c

📁 a graphic tools for MTools
💻 C
📖 第 1 页 / 共 5 页
字号:
/* mfm - A graphical Frontend to mtools                                        *//* Copyright (c) 1999 Christian Ospelkaus <christian@core-coutainville.org>    *//* 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              *//* of the License, 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. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifndef HAVE_CONFIG_H#include "manualconf.h"#endif#include <gtk/gtk.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/time.h>#include <sys/stat.h>#include <sys/wait.h>#include <dirent.h>#include <time.h>#include <ctype.h>#include <fcntl.h>#include <signal.h>#include "mfm.h"int er_interface (FILE * infile);char *removespace (char *string){  int i;  if (debug)    printf ("In removespace()\n");  while (string[0] == ' ')    {      for (i = 0; i < strlen (string); i++)	string[i] = string[i + 1];    }  for (i = strlen (string) - 1; i >= 0; i--)    if (string[i] == ' ')      string[i] = '\0';  return (string);}intcasecompare (const char *string1, const char *string2){  if (debug)    printf ("In casecompare()\n");  for (;       (*string1) && (*string2) && (tolower (*string1) == tolower (*string2));       string1++, string2++);  if ((*string1) || (*string2))    return (0);  else    return (1);}voidshiftstring (char *text, int n){  char *runp;  for (runp = text + strlen (text); runp != (text - 1);       *(runp + n) = *runp, runp--);}gintdialog_event (GtkWidget * widget, msgenv * msg){  if (debug)    {      printf ("In dialog_event()\n");      printf ("  msg: %i\n", msg->msg);    }  *(msg->mvar) = msg->msg;  return (TRUE);}gintdialogclose_event (GtkWidget * widget, GdkEvent * event, msgenv * msg){  if (debug)    {      printf ("In dialogclose_event()\n");      printf ("  msg: %i\n", msg->msg);    }  *(msg->mvar) = msg->msg;  return (TRUE);}voidwarnme (const char *title, const char *text){  GtkWidget *dialog, *okbutton, *label, *hbox;#ifndef NOPIXMAPS  GtkWidget *mfmpixwid;#endif  int flag = 0;  msgenv msg;  if (debug)    printf ("In warnme()\n");  msg.mvar = &flag;  msg.msg = 1;  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), title);  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",		      GTK_SIGNAL_FUNC (dialogclose_event), &msg);  hbox = gtk_hbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, FALSE,		      15);  gtk_widget_show (hbox);#ifndef NOPIXMAPS  mfmpixwid = gtk_pixmap_new (mfmpix, mfmmask);  gtk_box_pack_start (GTK_BOX (hbox), mfmpixwid, FALSE, FALSE, 15);  gtk_widget_show (mfmpixwid);#endif  label = gtk_label_new (text);  gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 15);  gtk_widget_show (label);  okbutton = gtk_button_new_with_label ("Ok");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);  gtk_widget_grab_default (okbutton);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msg);  gtk_widget_show (okbutton);  gtk_grab_add (dialog);#ifndef OLDGTK  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);#endif  gtk_widget_show (dialog);#ifndef NOPIXMAPS  gdk_window_set_icon (dialog->window, NULL, mfmpix, mfmmask);#endif  while (!flag)    {      while (gtk_events_pending ())	gtk_main_iteration ();    }  gtk_grab_remove (dialog);  gtk_widget_destroy (dialog);  if (debug)    printf ("End warnme()\n");}intshallwecontinue (const char *title, const char *text){  GtkWidget *dialog, *okbutton, *label, *hbox;#ifndef NOPIXMAPS  GtkWidget *mfmpixwid;#endif  int flag = 0;  msgenv msg, msgok;  if (debug)    printf ("In shallwecontinue()\n");  msg.mvar = &flag;  msg.msg = 1;  msgok.mvar = &flag;  msgok.msg = 2;  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), title);  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",		      GTK_SIGNAL_FUNC (dialogclose_event), &msg);  hbox = gtk_hbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, FALSE,		      15);  gtk_widget_show (hbox);#ifndef NOPIXMAPS  mfmpixwid = gtk_pixmap_new (mfmpix, mfmmask);  gtk_box_pack_start (GTK_BOX (hbox), mfmpixwid, FALSE, FALSE, 15);  gtk_widget_show (mfmpixwid);#endif  label = gtk_label_new (text);  gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 15);  gtk_widget_show (label);  okbutton = gtk_button_new_with_label ("Continue");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);  gtk_widget_grab_default (okbutton);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msgok);  gtk_widget_show (okbutton);  okbutton = gtk_button_new_with_label ("Cancel");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msg);  gtk_widget_show (okbutton);  gtk_grab_add (dialog);#ifndef OLDGTK  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);#endif  gtk_widget_show (dialog);#ifndef NOPIXMAPS  gdk_window_set_icon (dialog->window, NULL, mfmpix, mfmmask);#endif  while (!flag)    {      while (gtk_events_pending ())	gtk_main_iteration ();    }  gtk_grab_remove (dialog);  gtk_widget_destroy (dialog);  if (debug)    printf ("End of shallwecontinue()\n");  return (flag);}intcopyquestion (const char *title, const char *text){  GtkWidget *dialog, *okbutton, *label, *hbox;#ifndef NOPIXMAPS  GtkWidget *mfmpixwid;#endif  int flag = 0;  msgenv msgcancel, msgret, msgskip;  if (debug)    printf ("In copyquestion()\n");  msgcancel.mvar = &flag;  msgcancel.msg = 1;  msgret.mvar = &flag;  msgret.msg = 2;  msgskip.mvar = &flag;  msgskip.msg = 3;  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), title);  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",		      GTK_SIGNAL_FUNC (dialogclose_event), &msgcancel);  hbox = gtk_hbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, FALSE,		      15);  gtk_widget_show (hbox);#ifndef NOPIXMAPS  mfmpixwid = gtk_pixmap_new (mfmpix, mfmmask);  gtk_box_pack_start (GTK_BOX (hbox), mfmpixwid, FALSE, FALSE, 15);  gtk_widget_show (mfmpixwid);#endif  label = gtk_label_new (text);  gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 15);  gtk_widget_show (label);  okbutton = gtk_button_new_with_label ("Retry");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);  gtk_widget_grab_default (okbutton);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msgret);  gtk_widget_show (okbutton);  okbutton = gtk_button_new_with_label ("Skip");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msgskip);  gtk_widget_show (okbutton);  okbutton = gtk_button_new_with_label ("Cancel");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), &msgcancel);  gtk_widget_show (okbutton);  gtk_grab_add (dialog);#ifndef OLDGTK  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);#endif  gtk_widget_show (dialog);#ifndef NOPIXMAPS  gdk_window_set_icon (dialog->window, NULL, mfmpix, mfmmask);#endif  while (!flag)    {      while (gtk_events_pending ())	gtk_main_iteration ();    }  gtk_grab_remove (dialog);  gtk_widget_destroy (dialog);  if (debug)    printf ("End of copyquestion()\n");  return (flag);}voidmtoolserroutput (const char *text){  gtk_text_insert (GTK_TEXT (outtext), NULL, NULL, NULL, text, -1);}intentertext (char *title, char *text, char *answer, int length){  GtkWidget *dialog, *okbutton, *cancelbutton, *label, *hbox, *entry;#ifndef NOPIXMAPS  GtkWidget *mfmpixwid;#endif  int flag = 0;  msgenv msg[2];  if (debug)    printf ("In entertext()\n");  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), title);  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",		      GTK_SIGNAL_FUNC (dialogclose_event), &msg);  hbox = gtk_hbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, FALSE,		      15);  gtk_widget_show (hbox);#ifndef NOPIXMAPS  mfmpixwid = gtk_pixmap_new (mfmpix, mfmmask);  gtk_box_pack_start (GTK_BOX (hbox), mfmpixwid, FALSE, FALSE, 15);  gtk_widget_show (mfmpixwid);#endif  label = gtk_label_new (text);  gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 15);  gtk_widget_show (label);  entry = gtk_entry_new ();  gtk_entry_set_max_length (GTK_ENTRY (entry), length);  gtk_entry_set_text (GTK_ENTRY (entry), answer);  gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 5);  gtk_widget_show (entry);  okbutton = gtk_button_new_with_label ("Ok");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), okbutton,		      TRUE, FALSE, 0);  GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);  gtk_widget_grab_default (okbutton);  msg[0].mvar = &flag;  msg[0].msg = 1;  gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), msg);  gtk_widget_show (okbutton);  cancelbutton = gtk_button_new_with_label ("Cancel");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),		      cancelbutton, TRUE, FALSE, 0);  msg[1].mvar = &flag;  msg[1].msg = 2;  gtk_signal_connect (GTK_OBJECT (cancelbutton), "clicked",		      GTK_SIGNAL_FUNC (dialog_event), msg + 1);  gtk_widget_show (cancelbutton);  gtk_grab_add (dialog);#ifndef OLDGTK  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);#endif  gtk_widget_show (dialog);#ifndef NOPIXMAPS  gdk_window_set_icon (dialog->window, NULL, mfmpix, mfmmask);#endif  while (!flag)    {      while (gtk_events_pending ())	gtk_main_iteration ();    }  strcpy (answer, gtk_entry_get_text (GTK_ENTRY (entry)));  gtk_grab_remove (dialog);  gtk_widget_destroy (dialog);  if (debug)    printf ("End entertext()\n");  return (flag);}GtkWidget *ambusy (char *title, char *text){  GtkWidget *window, *label, *box;#ifndef NOPIXMAPS  GtkWidget *mfmpixwid;#endif  int flag = 0;  static msgenv msg;  msg.mvar = &flag;  msg.msg = 1;  if (debug)    printf ("In ambusy()\n");  window = gtk_window_new (GTK_WINDOW_DIALOG);  gtk_window_set_title (GTK_WINDOW (window), title);/*   gtk_widget_set_usize(GTK_WIDGET(window), 750, 400); */  gtk_signal_connect (GTK_OBJECT (window), "delete_event",		      GTK_SIGNAL_FUNC (dialogclose_event), &msg);#ifndef OLDGTK  gtk_container_set_border_width (GTK_CONTAINER (window), 15);#endif  box = gtk_hbox_new (FALSE, 0);  gtk_container_add (GTK_CONTAINER (window), box);  gtk_widget_show (box);#ifndef NOPIXMAPS  mfmpixwid = gtk_pixmap_new (mfmpix, mfmmask);  gtk_box_pack_start (GTK_BOX (box), mfmpixwid, FALSE, FALSE, 15);  gtk_widget_show (mfmpixwid);#endif  label = gtk_label_new (text);  gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);  gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 15);  gtk_widget_show (label);  gtk_grab_add (window);#ifndef OLDGTK  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);#endif  gtk_widget_show (window);#ifndef NOPIXMAPS  gdk_window_set_icon (window->window, NULL, mfmpix, mfmmask);#endif  if (debug)    printf ("End ambusy()\n");  return (window);}intpathlength (side * whichside){  int i;  int n = 1;  if (debug)    printf ("In pathlength()\n");  for (i = 0; i < whichside->length; i++)    n += strlen (whichside->path[i]) + 1;  if (debug)    {      printf ("  n: %i\n", n);      printf ("End pathlength()\n");    }

⌨️ 快捷键说明

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