GUInterpreter::GUInterpreter(){ debug = false; skipvoidsteps = true; GUIEnvironment = new GUIWidget(); interpreter = new BefungeInterpreter(GUIEnvironment); loadscriptAction = new QAction(tr("Load Script"),this); quitAction = new QAction(tr("Quit"),this); runScriptAction = new QAction(tr("Run"), this); startDebugAction = new QAction(tr("Start debug"), this);; stepAction = new QAction(tr("&Step Next"), this); traceAction = new QAction(tr("Trace"),this); traceTimer = new QTimer(this); connect(loadscriptAction,SIGNAL(triggered()),this,SLOT(loadscript())); connect(quitAction,SIGNAL(triggered()),qApp,SLOT(quit())); connect(runScriptAction, SIGNAL(triggered()),this,SLOT(runscript())); connect(startDebugAction,SIGNAL(triggered()),this,SLOT(runscriptSbS())); connect(stepAction,SIGNAL(triggered()),this,SLOT(step())); connect(traceAction,SIGNAL(triggered()),this,SLOT(trace())); connect(traceTimer,SIGNAL(timeout()),this,SLOT(step())); menu = menuBar()->addMenu(tr("Interpreter")); menu->addAction(loadscriptAction); menu->addSeparator(); menu->addAction(quitAction); menu_runtime = menuBar()->addMenu(tr("Runtime")); menu_runtime->addAction(runScriptAction); menu_debug = menuBar()->addMenu(tr("&Debug")); menu_debug->addAction(startDebugAction); menu_debug->addAction(stepAction); menu_debug->addAction(traceAction); setCentralWidget(GUIEnvironment); }
int main(int argc, char **argv) { int c; /* Command character */ int quit = 0; /* 'q' or 'x' pressed */ char *s, *bufp; /* Scratch pointers */ int doinit = 1; /* -o option */ char capname[128]; /* Name of capture file */ struct passwd *pwd; /* To look up user name */ char *use_port; /* Name of initialization file */ char *args[20]; /* New argv pointer */ int argk = 1; /* New argc */ char *mc; /* For 'MINICOM' env. variable */ int env_args; /* Number of args in env. variable */ char *cmd_dial; /* Entry from the command line. */ int alt_code = 0; /* Type of alt key */ char *cmdline_baudrate = NULL;/* Baudrate given on the command line via -b */ char *cmdline_device = NULL; /* Device/Port given on the command line via -D */ char *remote_charset = NULL; /* Remote charset given on the command line via -R */ char pseudo[64]; /* char* console_encoding = getenv ("LC_CTYPE"); */ static struct option long_options[] = { { "setup", no_argument, NULL, 's' }, { "help", no_argument, NULL, 'h' }, { "ptty", required_argument, NULL, 'p' }, { "metakey", no_argument, NULL, 'm' }, { "metakey8", no_argument, NULL, 'M' }, { "ansi", no_argument, NULL, 'l' }, { "iso", no_argument, NULL, 'L' }, { "term", required_argument, NULL, 't' }, { "noinit", no_argument, NULL, 'o' }, { "color", required_argument, NULL, 'c' }, { "attrib", required_argument, NULL, 'a' }, { "dial", required_argument, NULL, 'd' }, { "statline", no_argument, NULL, 'z' }, { "capturefile", required_argument, NULL, 'C' }, { "script", required_argument, NULL, 'S' }, { "7bit", no_argument, NULL, '7' }, { "8bit", no_argument, NULL, '8' }, { "version", no_argument, NULL, 'v' }, { "wrap", no_argument, NULL, 'w' }, { "displayhex", no_argument, NULL, 'H' }, { "disabletime", no_argument, NULL, 'T' }, // obsolete { "baudrate", required_argument, NULL, 'b' }, { "device", required_argument, NULL, 'D' }, { "remotecharset", required_argument, NULL, 'R' }, { "statlinefmt", required_argument, NULL, 'F' }, { NULL, 0, NULL, 0 } }; /* initialize locale support */ setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); /* Initialize global variables */ portfd = -1; capfp = NULL; docap = 0; online = -1; linespd = 0; stdattr = XA_NORMAL; us = NULL; addlf = 0; addcr = 0; line_timestamp = 0; wrapln = 0; display_hex = 0; option_T_used = 0; local_echo = 0; strcpy(capname, "minicom.cap"); lockfile[0] = 0; tempst = 0; st = NULL; us = NULL; bogus_dcd = 0; usecolor = 0; screen_ibmpc = screen_iso = 1; useattr = 1; strncpy(termtype, getenv("TERM") ? getenv("TERM") : "dumb", sizeof(termtype)); stdattr = XA_NORMAL; use_port = "dfl"; alt_override = 0; scr_name[0] = 0; scr_user[0] = 0; scr_passwd[0] = 0; dial_name = (char *)NULL; dial_number = (char *)NULL; dial_user = (char *)NULL; dial_pass = (char *)NULL; size_changed = 0; escape = 1; cmd_dial = NULL; /* fmg 1/11/94 colors (set defaults) */ /* MARK updated 02/17/95 to be more similiar to TELIX */ mfcolor = YELLOW; mbcolor = BLUE; tfcolor = WHITE; tbcolor = BLACK; sfcolor = WHITE; sbcolor = RED; st_attr = XA_NORMAL; /* If no LANG or LC_ALL is set, fall back to 7bit mode * since in 8bit mode we can't have fancy window borders... */ { char *e1 = getenv("LANG"), *e2 = getenv("LC_ALL"); if ((!e1 || !strcmp("C", e1) || !strcmp("POSIX", e1)) && (!e2 || !strcmp("C", e2) || !strcmp("POSIX", e2))) screen_ibmpc = screen_iso = 0; } /* MARK updated 02/17/95 default history buffer size */ num_hist_lines = 256; /* fmg - but we reset these to F=WHITE, B=BLACK if -b flag found */ /* Before processing the options, first add options * from the environment variable 'MINICOM'. */ args[0] = "minicom"; if ((mc = getenv("MINICOM")) != NULL) { char buf[80]; strncpy(buf, mc, 80); bufp = buf; buf[79] = 0; while (isspace(*bufp)) bufp++; while (*bufp && argk < 19) { for (s = bufp; !isspace(*bufp) && *bufp; bufp++) ; args[argk++] = s; while (isspace(*bufp)) *bufp++ = 0; } } env_args = argk; /* Add command - line options */ for(c = 1; c < argc && argk < 19; c++) args[argk++] = argv[c]; args[argk] = NULL; do { /* Process options with getopt */ while ((c = getopt_long(argk, args, "v78zhlLsomMHb:wTc:a:t:d:p:C:S:D:R:F:", long_options, NULL)) != EOF) switch(c) { case 'v': printf(_("%s version %s"), PACKAGE, VERSION); #ifdef __DATE__ printf(_(" (compiled %s)"), __DATE__); #endif printf("\n"); printf(_("Copyright (C) Miquel van Smoorenburg.\n\n")); printf("This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU General Public License\n" "as published by the Free Software Foundation; either version\n" "2 of the License, or (at your option) any later version.\n\n"); exit(1); break; case 's': /* setup mode */ dosetup = 1; break; case 'h': helpthem(); exit(1); break; case 'p': /* Pseudo terminal to use. */ if (strncmp(optarg, "/dev/", 5) == 0) optarg += 5; if (((strncmp(optarg, "tty", 3) != 0) /* /dev/pts support --misiek. */ && (strncmp(optarg, "pts", 3) != 0) /* /dev/pty support --jl. */ && (strncmp(optarg, "pty", 3) != 0)) || !strchr("pqrstuvwxyz/", optarg[3])) { fprintf(stderr, _("minicom: argument to -p must be a pty\n")); exit(1); } snprintf(pseudo, sizeof(pseudo), "/dev/%s", optarg); dial_tty = pseudo; break; case 'm': /* ESC prefix metakey */ alt_override++; alt_code = 27; break; case 'M': /* 8th bit metakey. */ alt_override++; alt_code = 128; break; case 'l': /* Don't assume literal ANSI chars */ screen_ibmpc = 0; break; case 'L': /* Don't assume literal ISO8859 chars */ screen_iso = 0; break; case 't': /* Terminal type */ strncpy(termtype, optarg, sizeof(termtype)); #ifdef __GLIBC__ /* Bug in older libc's (< 4.5.26 I think) */ if ((s = getenv("TERMCAP")) != NULL && *s != '/') unsetenv("TERMCAP"); #endif break; case 'o': /* DON'T initialize */ doinit = 0; break; case 'c': /* Color on/off */ if (strcmp("on", optarg) == 0) { usecolor = 1; stdattr = XA_BOLD; break; } if (strcmp("off", optarg) == 0) { usecolor = 0; stdattr = XA_NORMAL; break; } usage(env_args, optind - 1, mc); break; case 'a': /* Attributes on/off */ if (strcmp("on", optarg) == 0) { useattr = 1; break; } if (strcmp("off", optarg) == 0) { useattr = 0; break; } usage(env_args, optind - 1, mc); break; case 'd': /* Dial from the command line. */ cmd_dial = optarg; break; case 'z': /* Enable status line. */ use_status = 1; break; case 'C': /* Capturing */ capfp = fopen(optarg, "a"); if (capfp == NULL) { werror(_("Cannot open capture file")); exit(1); } docap = 1; vt_set(addlf, -1, docap, -1, -1, -1, -1, -1, addcr); break; case 'S': /* start Script */ strncpy(scr_name, optarg, 33); break; case '7': /* 7bit fallback mode */ screen_ibmpc = screen_iso = 0; break; case '8': /* force 8bit mode */ screen_ibmpc = screen_iso = 1; break; case 'w': /* Linewrap on */ wrapln = 1; break; case 'H': /* Display in hex */ display_hex = 1; break; case 'T': option_T_used = 1; break; case 'F': /* format of status line */ set_status_line_format(optarg); break; case 'b': cmdline_baudrate = optarg; break; case 'D': cmdline_device = optarg; break; case 'R': remote_charset = optarg; break; default: usage(env_args, optind, mc); break; } /* Now, get portname if mentioned. Stop at end or '-'. */ while (optind < argk && args[optind][0] != '-') use_port = args[optind++]; /* Loop again if more options */ } while (optind < argk); init_iconv(remote_charset); if (screen_iso && screen_ibmpc) /* init VT */ vt_set(-1, -1, -1, -1, -1, -1, 1, -1, -1); /* Avoid fraude ! */ for (s = use_port; *s; s++) if (*s == '/') *s = '_'; snprintf(parfile, sizeof(parfile), "%s/minirc.%s", CONFDIR, use_port); /* Get password file information of this user. */ if ((pwd = getpwuid(getuid())) == NULL) { fputs(_("You don't exist. Go away.\n"), stderr); exit(1); } /* Remember home directory and username. */ if ((s = getenv("HOME")) == NULL) strncpy(homedir, pwd->pw_dir, sizeof(homedir)); else strncpy(homedir, s, sizeof(homedir)); strncpy(username, pwd->pw_name, sizeof(username)); /* Get personal parameter file */ snprintf(pparfile, sizeof(pparfile), "%s/.minirc.%s", homedir, use_port); read_parms(); num_hist_lines = atoi(P_HISTSIZE); strcpy(logfname,P_LOGFNAME); /* Set default terminal behaviour */ addlf = strcasecmp(P_ADDLINEFEED, "yes") == 0; local_echo = strcasecmp(P_LOCALECHO, "yes") == 0; addcr = strcasecmp(P_ADDCARRIAGERETURN, "yes") == 0; /* -w overrides config file */ if (!wrapln) wrapln = strcasecmp(P_LINEWRAP, "yes") == 0; /* -H overrides config file */ if (!display_hex) display_hex = strcasecmp(P_DISPLAYHEX, "yes") == 0; /* After reading in the config via read_parms we can possibly overwrite * the baudrate with a value given at the cmdline */ if (cmdline_baudrate) { unsigned int b = strtol(cmdline_baudrate, (char **)NULL, 0); if (speed_valid(b)) { snprintf(P_BAUDRATE, sizeof(P_BAUDRATE), "%d", b); P_BAUDRATE[sizeof(P_BAUDRATE) - 1] = 0; } } /* Now we can also overwrite the device name, if one was given */ if (cmdline_device) { strncpy(P_PORT, cmdline_device, sizeof(P_PORT)); P_PORT[sizeof(P_PORT) - 1] = 0; } stdwin = NULL; /* It better be! */ /* Reset colors if we don't use 'em. */ if (!usecolor) { mfcolor = tfcolor = sfcolor = WHITE; mbcolor = tbcolor = sbcolor = BLACK; st_attr = XA_REVERSE; } if (dial_tty == NULL) { if (!dosetup) { while ((dial_tty = get_port(P_PORT)) != NULL && open_term(doinit, 1, 0) < 0) ; if (dial_tty == NULL) exit(1); } } else { if (!dosetup && open_term(doinit, 1, 0) < 0) exit(1); } mc_setenv("TERM", termtype); if (win_init(tfcolor, tbcolor, XA_NORMAL) < 0) leave(""); if (COLS < 40 || LINES < 10) leave(_("Sorry. Your screen is too small.\n")); if (dosetup) { if (config(1)) { mc_wclose(stdwin, 1); exit(0); } while ((dial_tty = get_port(P_PORT)) != NULL && open_term(doinit, 1, 0) < 0) ; if (dial_tty == NULL) exit(1); } /* Signal handling */ signal(SIGTERM, hangsig); signal(SIGHUP, hangsig); signal(SIGINT, SIG_IGN); signal(SIGQUIT, SIG_IGN); signal(SIGPIPE, SIG_IGN); #ifdef SIGTSTP signal(SIGTSTP, shjump); signal(SIGTTIN, SIG_IGN); signal(SIGTTOU, SIG_IGN); #endif #ifdef SIGTINT signal(SIGTINT, SIG_IGN); #endif #ifdef SIGWINCH signal(SIGWINCH, change_size); #endif #ifdef DEBUG for(c = 1; c < _NSIG; c++) { if (c == SIGTERM) continue; /* Saviour when hung */ signal(c, signore); } #endif keyboard(KINSTALL, 0); if (strcmp(P_BACKSPACE, "BS") != 0) keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127); if (alt_override) keyboard(KSETESC, alt_code); else if (strcmp(P_ESCAPE, "^A") != 0) { switch (P_ESCAPE[0]) { case '^': c = P_ESCAPE[1] & 31; break; case 'E': c = 27; break; default: c = 128; break; } keyboard(KSETESC, c); } st = NULL; us = NULL; init_emul(VT100, 1); if (doinit) modeminit(); if (option_T_used) mc_wprintf(us, "WARNING: Option -T ignored, use -F now\n\n"); mc_wprintf(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION); mc_wprintf(us, "\n%s: %s\r\n", _("OPTIONS"), option_string); #if defined (__DATE__) && defined (__TIME__) mc_wprintf(us, "%s %s, %s.\r\n",_("Compiled on"), __DATE__,__TIME__); #endif { struct stat st; char port_date[20] = ""; if (stat(P_PORT, &st) == 0) { time_t t = time(NULL); struct tm tm; if ( st.st_mtime + 20 * 60 * 60 > t && localtime_r(&st.st_mtime, &tm)) { strftime(port_date, sizeof(port_date), ", %T", &tm); port_date[sizeof(port_date) - 1] = 0; } } mc_wprintf(us, "%s %s%s\r\n", _("Port"), P_PORT, port_date); } if (using_iconv()) mc_wprintf(us, "%s\r\n", _("Using character set conversion")); mc_wprintf(us, _("\nPress %sZ for help on special keys%c\n\n"),esc_key(),'\r'); readdialdir(); if (scr_name[0]) runscript (0, scr_name, "", ""); if (cmd_dial) dialone(cmd_dial); set_local_echo(local_echo); set_addlf(addlf); set_line_timestamp(line_timestamp); /* The main loop calls do_terminal and gets a function key back. */ while (!quit) { c = do_terminal(); dirty_goto: switch (c + 32 *(c >= 'A' && c <= 'Z')) { case 'a': /* Add line feed */ toggle_addlf(); s = addlf ? _("Add linefeed ON") : _("Add linefeed OFF"); status_set_display(s, 0); break; case 'u': /* Add carriage return */ toggle_addcr(); s = addcr ? _("Add carriage return ON") : _("Add carriage return OFF"); status_set_display(s, 0); break; case 'e': /* Local echo on/off. */ toggle_local_echo(); s = local_echo ? _("Local echo ON") : _("Local echo OFF"); status_set_display(s, 0); break; case 'z': /* Help */ c = help(); if (c != 'z') goto dirty_goto; break; case 'c': /* Clear screen */ mc_winclr(us); break; case 'f': /* Send break */ sendbreak(); break; case 'b': /* Scroll back */ scrollback(); break; case 'm': /* Initialize modem */ if (P_HASDCD[0]=='Y' && online >= 0) { c = ask(_("You are online. Really initialize?"), c1); if (c != 0) break; } modeminit(); break; case 'q': /* Exit without resetting */ c = ask(_("Leave without reset?"), c1); if (c == 0) quit = NORESET; if (!strcmp(P_MACCHG,"CHANGED")) { c = ask (_("Save macros?"),c1); if (c == 0) if (dodflsave() < 0) { /* fmg - error */ c = 'O'; /* hehe */ quit = 0; goto dirty_goto; } } break; case 'x': /* Exit Minicom */ c = ask(_("Leave Minicom?"), c1); if (c == 0) { quit = RESET; if(online >= 0) do_hang(0); modemreset(); } if (!strcmp(P_MACCHG,"CHANGED")) { c = ask (_("Save macros?"), c1); if (c == 0) if (dodflsave() < 0) { /* fmg - error */ c = 'O'; /* hehe */ quit = 0; goto dirty_goto; } } break; case 'l': /* Capture file */ if (capfp == (FILE *)0 && !docap) { s = input(_("Capture to which file? "), capname); if (s == NULL || *s == 0) break; if ((capfp = fopen(s, "a")) == (FILE *)NULL) { werror(_("Cannot open capture file")); break; } docap = 1; } else if (capfp != (FILE *)0 && !docap) { c = ask(_("Capture file"), c3); if (c == 0) { fclose(capfp); capfp = (FILE *)NULL; docap = 0; } if (c == 1) docap = 1; } else if (capfp != (FILE *)0 && docap) { c = ask(_("Capture file"), c2); if (c == 0) { fclose(capfp); capfp = (FILE *)NULL; docap = 0; } if (c == 1) docap = 0; } vt_set(addlf, -1, docap, -1, -1, -1, -1, -1, addcr); break; case 'p': /* Set parameters */ get_bbp(P_BAUDRATE, P_BITS, P_PARITY, P_STOPB, 0); port_init(); show_status(); quit = 0; break; case 'k': /* Run kermit */ kermit(); break; case 'h': /* Hang up */ do_hang(1); break; case 'd': /* Dial */ dialdir(); break; case 't': /* Terminal emulation */ c = dotermmenu(); if (c > 0) init_emul(c, 1); break; case 'w': /* Line wrap on-off */ c = !us->wrap; vt_set(addlf, c, docap, -1, -1, -1, -1, -1, addcr); s = c ? _("Linewrap ON") : _("Linewrap OFF"); status_set_display(s, 0); break; case 'n': /* Line timestamp */ toggle_line_timestamp(); switch (line_timestamp) { default: case TIMESTAMP_LINE_OFF: s = _("Timestamp OFF"); break; case TIMESTAMP_LINE_SIMPLE: s = _("Timestamp every line (simple)"); break; case TIMESTAMP_LINE_EXTENDED: s = _("Timestamp every line (extended)"); break; case TIMESTAMP_LINE_PER_SECOND: s = _("Timestamp lines every second"); break; } status_set_display(s, 0); break; case 'o': /* Configure Minicom */ (void) config(0); break; case 's': /* Upload */ updown('U', 0); break; case 'r': /* Download */ updown('D', 0); break; case 'j': /* Jump to a shell */ shjump(0); break; case 'g': /* Run script */ runscript(1, "", "", ""); break; case 'i': /* Re-init, re-open portfd. */ cursormode = (cursormode == NORMAL) ? APPL : NORMAL; keyboard(cursormode == NORMAL ? KCURST : KCURAPP, 0); show_status(); break; case 'y': /* Paste file */ paste_file(); break; case EOF: /* Cannot read from stdin anymore, exit silently */ quit = NORESET; break; default: break; } }; /* Reset parameters */ if (quit != NORESET) m_restorestate(portfd); else { if (P_LOGCONN[0] == 'Y' && online > 0) do_log("%s", _("Quit without reset while online.")); m_hupcl(portfd, 0); } signal(SIGTERM, SIG_IGN); signal(SIGHUP, SIG_IGN); #ifdef SIGTSTP signal(SIGTSTP, SIG_DFL); #endif signal(SIGQUIT, SIG_DFL); if (capfp != (FILE *)0) fclose(capfp); mc_wclose(us, 0); mc_wclose(st, 0); mc_wclose(stdwin, 1); keyboard(KUNINSTALL, 0); lockfile_remove(); close(portfd); if (quit != NORESET && P_CALLIN[0]) fastsystem(P_CALLIN, NULL, NULL, NULL); close_iconv(); return 0; }
Client * newclient(void) { Client *c; WebKitWebSettings *settings; WebKitWebFrame *frame; GdkGeometry hints = { 1, 1 }; char *uri, *ua; if(!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); /* Window */ if(embed) { c->win = gtk_plug_new(embed); } else { c->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* TA: 20091214: Despite what the GNOME docs say, the ICCCM * is always correct, so we should still call this function. * But when doing so, we *must* differentiate between a * WM_CLASS and a resource on the window. By convention, the * window class (WM_CLASS) is capped, while the resource is in * lowercase. Both these values come as a pair. */ gtk_window_set_wmclass(GTK_WINDOW(c->win), "surf", "surf"); /* TA: 20091214: And set the role here as well -- so that * sessions can pick this up. */ gtk_window_set_role(GTK_WINDOW(c->win), "Surf"); } gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600); g_signal_connect(G_OBJECT(c->win), "destroy", G_CALLBACK(destroywin), c); g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c); g_signal_connect(G_OBJECT(c->win), "size-allocate", G_CALLBACK(resize), c); /* VBox */ c->vbox = gtk_vbox_new(FALSE, 0); /* Scrolled Window */ c->scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll), GTK_POLICY_NEVER, GTK_POLICY_NEVER); /* Webview */ c->view = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_signal_connect(G_OBJECT(c->view), "button-press-event", G_CALLBACK(buttonevent), c); g_signal_connect(G_OBJECT(c->view), "title-changed", G_CALLBACK(titlechange), c); g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(linkhover), c); g_signal_connect(G_OBJECT(c->view), "create-web-view", G_CALLBACK(createwindow), c); g_signal_connect(G_OBJECT(c->view), "new-window-policy-decision-requested", G_CALLBACK(decidewindow), c); g_signal_connect(G_OBJECT(c->view), "mime-type-policy-decision-requested", G_CALLBACK(decidedownload), c); g_signal_connect(G_OBJECT(c->view), "window-object-cleared", G_CALLBACK(windowobjectcleared), c); g_signal_connect(G_OBJECT(c->view), "notify::load-status", G_CALLBACK(loadstatuschange), c); g_signal_connect(G_OBJECT(c->view), "notify::progress", G_CALLBACK(progresschange), c); g_signal_connect(G_OBJECT(c->view), "download-requested", G_CALLBACK(initdownload), c); /* Indicator */ c->indicator = gtk_drawing_area_new(); gtk_widget_set_size_request(c->indicator, 0, 2); g_signal_connect (G_OBJECT (c->indicator), "expose_event", G_CALLBACK (exposeindicator), c); /* Arranging */ gtk_container_add(GTK_CONTAINER(c->scroll), GTK_WIDGET(c->view)); gtk_container_add(GTK_CONTAINER(c->win), c->vbox); gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll); gtk_container_add(GTK_CONTAINER(c->vbox), c->indicator); /* Setup */ gtk_box_set_child_packing(GTK_BOX(c->vbox), c->indicator, FALSE, FALSE, 0, GTK_PACK_START); gtk_box_set_child_packing(GTK_BOX(c->vbox), c->scroll, TRUE, TRUE, 0, GTK_PACK_START); gtk_widget_grab_focus(GTK_WIDGET(c->view)); gtk_widget_show(c->vbox); gtk_widget_show(c->indicator); gtk_widget_show(c->scroll); gtk_widget_show(GTK_WIDGET(c->view)); gtk_widget_show(c->win); gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints, GDK_HINT_MIN_SIZE); gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK); gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); webkit_web_view_set_full_content_zoom(c->view, TRUE); frame = webkit_web_view_get_main_frame(c->view); runscript(frame, webkit_web_frame_get_global_context(frame)); settings = webkit_web_view_get_settings(c->view); if(!(ua = getenv("SURF_USERAGENT"))) ua = useragent; g_object_set(G_OBJECT(settings), "user-agent", ua, NULL); uri = g_strconcat("file://", stylefile, NULL); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); g_object_set(G_OBJECT(settings), "auto-load-images", loadimage, NULL); g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL); g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL); g_object_set(G_OBJECT(settings), "enable-spatial-navigation", true, NULL); g_free(uri); setatom(c, AtomFind, ""); setatom(c, AtomUri, "about:blank"); if(NOBACKGROUND) webkit_web_view_set_transparent(c->view, TRUE); c->title = NULL; c->next = clients; clients = c; if(showxid) { gdk_display_sync(gtk_widget_get_display(c->win)); printf("%u\n", (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); fflush(NULL); } return c; }
static int runcmd(cmdint_t *ci, char *cmdline) { int res; int i; int argc; char *argv[MAX_ARGS]; char *cmd; char *oldcmd; static char delim[] = " \t\n\r"; if (cmdline[0] == '#') { return OK; } oldcmd = strnew(cmdline); argc = 0; cmd = strtok(cmdline, delim); while(cmd != NULL && argc < MAX_ARGS) { argv[argc++] = cmd; cmd = strtok(NULL, delim); } if (argc == 0) { free(oldcmd); return OK; } cmd = argv[0]; res = INVALID_CMD; if (cmd[0] == '.') { res = runscript(ci, &cmd[1]); } else { for (i = 0; fntab[i].fn != NULL; i++) { if (strcmp(fntab[i].name, cmd) == 0) { res = fntab[i].fn(ci, argc, argv); break; } } } if (res == INVALID_CMD) { genrec_t *rec; RC rc = RC_OK; rec = NULL; if (ci->db != NULL) { rc = mdb_QueryDo(ci->db, oldcmd, &rec); if (rc != RC_COMPILATIONERROR) { RP(rc); } if (rec != NULL) { RP(mdb_GenrecShow(rec)); RP(mdb_GenrecFree(&rec)); } } if (rc != RC_COMPILATIONERROR && ci->db != NULL) { res = OK; } } switch(res) { case INVALID_CMD: fprintf(stderr, "Invalid command: %s\n", cmd); break; case SCRIPT_NOT_FOUND: fprintf(stderr, "script not found: %s\n", &cmd[1]); break; case WRONG_ARGC: fprintf(stderr, "%s: Incorrect number of arguments\n", cmd); break; } free(oldcmd); return res; }
int init (int argc, char *argv[]) { char *p; int rc = 0, oldmode; url_t u; int x0=-1, y0=-1, r=-1, c=-1; struct hostent *remote; char buffer[MAX_PATH]; if (action == ACTION_TESTONLY) exit (0); if (action == ACTION_BADAGS) { usage (); exit (1); } if (options.keep_winsize) { r = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "rows"); c = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "cols"); if (r == 0 && c == 0) r = -1, c = -1; } if (options.keep_winpos) { x0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "x0"); y0 = cfg_get_integer (CONFIG_NFTP, fl_opt.platform_nick, "y0"); if (x0 == 0 || y0 == 0) x0 = -1, y0 = -1; } p = cfg_get_string (CONFIG_NFTP, fl_opt.platform_nick, "font"); if (p[0] == '\0') p = NULL; fly_init (x0, y0, r, c, p); if (options.show_hw_cursor) video_cursor_state (1); fly_mouse (options.mouse); wintitle = get_window_name (); if (fl_opt.platform == PLATFORM_OS2_VIO) { strcpy (buffer, paths.system_libpath); str_cats (buffer, "nftp.ico"); if (access (buffer, R_OK) == 0) set_icon (buffer); } if (main_menu != NULL) { menu_activate (main_menu); adjust_menu_status (); } display.dir_mode = options.defaultdirmode; display.view_mode = VIEW_CONTROL; display.rshift = 0; display.lshift = 0; display.tabsize = 8; if (options.slowlink) set_view_mode (VIEW_REMOTE); else set_view_mode (VIEW_CONTROL); site.maxndir = 1024; site.dir = malloc (sizeof(directory)*site.maxndir); // ignore "broken PIPE" signals signal (SIGPIPE, SIG_IGN); set_window_name ("NFTP%s(C) Copyright Sergey Ayukov", NFTP_VERSION); local.dir.files = NULL; local.sortmode = abs (options.default_localsort); if (options.default_localsort >= 0) local.sortdirection = 1; else local.sortdirection = -1; build_local_filelist (NULL); site.batch_mode = FALSE; site.chunks = NULL; PutLineIntoResp2 ("NFTP Version%s(%s, %s) -- %s", NFTP_VERSION, __DATE__, __TIME__, fl_opt.platform_name); PutLineIntoResp1 ("Copyright (C) 1994-2003 Sergey Ayukov <*****@*****.**>"); PutLineIntoResp1 ("Portions Copyright (C) Eric Young <*****@*****.**>"); //PutLineIntoResp1 ("Portions Copyright (C) Martin Nicolay <*****@*****.**>"); status.usage_interval = 0; if (!fl_opt.has_osmenu) PutLineIntoResp1 (M("Press F9 or Ctrl-F for menu")); update (1); if (options.firewall_type != 0) { if (options.fire_server[0] == '\0') { fly_ask_ok (ASK_WARN, M("Firewall proxy host isn't specified in NFTP.INI")); options.firewall_type = 0; } else { if (strspn (options.fire_server, " .0123456789") == strlen (options.fire_server)) { firewall.fwip = inet_addr (options.fire_server); } else { PutLineIntoResp2 (M("Looking up '%s'"), options.fire_server); remote = gethostbyname (options.fire_server); if (remote == NULL) { PutLineIntoResp2 (M("Cannot find '%s'"), options.fire_server); options.firewall_type = 0; } else { firewall.fwip = *((unsigned long *)(remote->h_addr)); PutLineIntoResp2 (M("Found '%s'"), remote->h_name); } } } } // read password cache psw_read (); // analyze arguments switch (action) { case 0: if (options.download_path != NULL) { set_local_path (options.download_path); } else { p = cfg_get_string (CONFIG_NFTP, "", "local-directory"); if (p[0] != '\0') set_local_path (p); } build_local_filelist (NULL); switch (options.start_prompt) { case 1: return FMSG_BASE_MENU + KEY_GEN_LOGIN; case 2: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case 3: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case 5: return FMSG_BASE_MENU + KEY_MENU; } return 0; case ACTION_DOWNLOAD: case ACTION_UPLOAD: oldmode = site.batch_mode; site.batch_mode = TRUE; if (action == ACTION_DOWNLOAD) rc = do_get (optarg1); if (action == ACTION_UPLOAD) rc = do_put (optarg1); //set_view_mode (VIEW_CONTROL); //update (1); if (rc && !cmdline.batchmode) fly_ask_ok (0, M("Transfer of '%s' has failed"), optarg1); if ((disc_after && rc == 0) || cmdline.batchmode) { Logoff (); terminate (); exit (0); } site.batch_mode = oldmode; return 0; case ACTION_CMDLIST: rc = runscript (optarg1); return 0; case ACTION_NICK_BOOK: case ACTION_NICK_HIST: if (action == ACTION_NICK_BOOK && bookmark_nickname (optarg1, &u) == 0) return 0; if (action == ACTION_NICK_HIST && history_nickname (optarg1, &u) == 0) return 0; rc = Login (&u); if (rc) return 0; if (options.login_bell) Bell (3); return 0; case ACTION_OPEN_BOOKMARKS: return FMSG_BASE_MENU + KEY_GEN_BOOKMARKS; case ACTION_OPEN_HISTORY: return FMSG_BASE_MENU + KEY_GEN_HISTORY; case ACTION_LOGIN: // if download_path was specified in nftp.ini, set it now if (options.download_path != NULL) set_local_path (options.download_path); build_local_filelist (NULL); parse_url (optarg1, &u); rc = Login (&u); // attempt to download file if chdir failed /*if (site.set_up && strcmp (site.u.pathname, RCURDIR.name) != 0) { rc = do_get (optarg1); } if (rc) return 0; */ if (options.login_bell) Bell (3); return 0; case ACTION_TESTONLY: terminate (); exit (0); } fly_error ("internal error in init()"); return 0; }