Exemple #1
0
BOOL
ShowAvailableAppInfo(INT Index)
{
    PAPPLICATION_INFO Info = (PAPPLICATION_INFO) ListViewGetlParam(Index);
    WCHAR szText[MAX_STR_LEN];

    if (!Info) return FALSE;

    NewRichEditText(Info->szName, CFE_BOLD);

    InsertRichEditText(L"\n", 0);

#define ADD_TEXT(a, b, c, d) \
    if (b[0] != '\0') \
    { \
        LoadStringW(hInst, a, szText, sizeof(szText) / sizeof(WCHAR)); \
        InsertRichEditText(szText, c); \
        InsertRichEditText(b, d); \
    } \

    ADD_TEXT(IDS_AINFO_VERSION, Info->szVersion, CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_LICENCE, Info->szLicence, CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_SIZE, Info->szSize, CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_URLSITE, Info->szUrlSite, CFE_BOLD, CFE_LINK);
    ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc, CFE_BOLD, 0);

    return TRUE;
}
Exemple #2
0
int QueryTrackers (void)
{
	tMenuItem	m [3];
	int i;

if (!RequestServerListFromTracker ())
	return 0;
memset (m, 0, sizeof (m));
ADD_GAUGE (0, "                    ", 0, 1000); 
ADD_TEXT (1, "", 0);
ADD_TEXT (2, "(Press Escape to cancel)", 0);
m [2].centered = 1;
nQueryTimeout = SDL_GetTicks ();
do {
	i = ExecMenu2 (NULL, "Looking for Trackers", 3, m, TrackerPoll, 0, NULL);
	} while (i >= 0);
return i;
}
Exemple #3
0
BOOL
ShowAvailableAppInfo(INT Index)
{
    PAPPLICATION_INFO Info = (PAPPLICATION_INFO) ListViewGetlParam(Index);
    WCHAR szText[MAX_STR_LEN];

    if (!Info) return FALSE;

    NewRichEditText(Info->szName, CFE_BOLD);

    InsertRichEditText(L"\n", 0);

    ADD_TEXT(IDS_AINFO_VERSION,     Info->szVersion, CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_LICENSE,     Info->szLicense, CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_SIZE,        Info->szSize,    CFE_BOLD, 0);
    ADD_TEXT(IDS_AINFO_URLSITE,     Info->szUrlSite, CFE_BOLD, CFE_LINK);
    ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc,    CFE_BOLD, 0);

    return TRUE;
}
Exemple #4
0
static void print_master_line(VSTREAM *fp, int mode, PC_MASTER_ENT *masterp)
{
    char  **argv = masterp->argv->argv;
    const char *arg;
    const char *aval;
    int     arg_len;
    int     line_len;
    int     field;
    int     in_daemon_options;
    static int column_goal[] = {
	0,				/* service */
	11,				/* type */
	17,				/* private */
	25,				/* unpriv */
	33,				/* chroot */
	41,				/* wakeup */
	49,				/* maxproc */
	57,				/* command */
    };

#define ADD_TEXT(text, len) do { \
        vstream_fputs(text, fp); line_len += len; } \
    while (0)
#define ADD_SPACE ADD_TEXT(" ", 1)

    /*
     * Show the standard fields at their preferred column position. Use at
     * least one-space column separation.
     */
    for (line_len = 0, field = 0; field < PC_MASTER_MIN_FIELDS; field++) {
	arg = argv[field];
	if (line_len > 0) {
	    do {
		ADD_SPACE;
	    } while (line_len < column_goal[field]);
	}
	ADD_TEXT(arg, strlen(arg));
    }

    /*
     * Format the daemon command-line options and non-option arguments. Here,
     * we have no data-dependent preference for column positions, but we do
     * have argument grouping preferences.
     */
    in_daemon_options = 1;
    for ( /* void */ ; (arg = argv[field]) != 0; field++) {
	arg_len = strlen(arg);
	aval = 0;
	if (in_daemon_options) {

	    /*
	     * Try to show the generic options (-v -D) on the first line, and
	     * non-options on a later line.
	     */
	    if (arg[0] != '-' || strcmp(arg, "--") == 0) {
		in_daemon_options = 0;
		if ((mode & FOLD_LINE)
		    && line_len > column_goal[PC_MASTER_MIN_FIELDS - 1]) {
		    /* Force line wrap. */
		    line_len = LINE_LIMIT;
		}
	    }

	    /*
	     * Special processing for options that require a value.
	     */
	    else if (strchr(daemon_options_expecting_value, arg[1]) != 0
		     && (aval = argv[field + 1]) != 0) {

		/*
		 * Optionally, expand $name in parameter value.
		 */
		if (strcmp(arg, "-o") == 0
		    && (mode & SHOW_EVAL) != 0)
		    aval = expand_parameter_value((VSTRING *) 0, mode,
						  aval, masterp);

		/*
		 * Keep option and value on the same line.
		 */
		arg_len += strlen(aval) + 1;
	    }
	}

	/*
	 * Insert a line break when the next item won't fit.
	 */
	if (line_len > INDENT_LEN) {
	    if ((mode & FOLD_LINE) == 0
		|| line_len + 1 + arg_len < LINE_LIMIT) {
		ADD_SPACE;
	    } else {
		vstream_fputs("\n" INDENT_TEXT, fp);
		line_len = INDENT_LEN;
	    }
	}
	ADD_TEXT(arg, strlen(arg));
	if (aval) {
	    ADD_SPACE;
	    ADD_TEXT(aval, strlen(aval));
	    field += 1;
	}
    }
    vstream_fputs("\n", fp);
}
Exemple #5
0
static void print_master_line(int mode, ARGV *argv)
{
    char   *arg;
    char   *aval;
    int     line_len;
    int     field;
    int     in_daemon_options;
    static int column_goal[] = {
	0,				/* service */
	11,				/* type */
	17,				/* private */
	25,				/* unpriv */
	33,				/* chroot */
	41,				/* wakeup */
	49,				/* maxproc */
	57,				/* command */
    };

#define ADD_TEXT(text, len) do { \
        vstream_fputs(text, VSTREAM_OUT); line_len += len; } \
    while (0)
#define ADD_SPACE ADD_TEXT(" ", 1)

    /*
     * Show the standard fields at their preferred column position. Use at
     * least one-space column separation.
     */
    for (line_len = 0, field = 0; field < PC_MASTER_MIN_FIELDS; field++) {
	arg = argv->argv[field];
	if (line_len > 0) {
	    do {
		ADD_SPACE;
	    } while (line_len < column_goal[field]);
	}
	ADD_TEXT(arg, strlen(arg));
    }

    /*
     * Format the daemon command-line options and non-option arguments. Here,
     * we have no data-dependent preference for column positions, but we do
     * have argument grouping preferences.
     */
    in_daemon_options = 1;
    for ( /* void */ ; argv->argv[field] != 0; field++) {
	arg = argv->argv[field];
	if (in_daemon_options) {

	    /*
	     * Try to show the generic options (-v -D) on the first line, and
	     * non-options on a later line.
	     */
	    if (arg[0] != '-' || strcmp(arg, "--") == 0) {
		in_daemon_options = 0;
		if ((mode & FOLD_LINE)
		    && line_len > column_goal[PC_MASTER_MIN_FIELDS - 1]) {
		    vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT);
		    line_len = INDENT_LEN;
		}
	    }

	    /*
	     * Try to avoid breaking "-o name=value" over multiple lines if
	     * it would fit on one line.
	     */
	    else if ((mode & FOLD_LINE)
		     && line_len > INDENT_LEN && strcmp(arg, "-o") == 0
		     && (aval = argv->argv[field + 1]) != 0
		     && INDENT_LEN + 3 + strlen(aval) < LINE_LIMIT) {
		vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT);
		line_len = INDENT_LEN;
		ADD_TEXT(arg, strlen(arg));
		arg = aval;
		field += 1;
	    }
	}

	/*
	 * Insert a line break when the next argument won't fit (unless, of
	 * course, we just inserted a line break).
	 */
	if (line_len > INDENT_LEN) {
	    if ((mode & FOLD_LINE) == 0
		|| line_len + 1 + strlen(arg) < LINE_LIMIT) {
		ADD_SPACE;
	    } else {
		vstream_fputs("\n" INDENT_TEXT, VSTREAM_OUT);
		line_len = INDENT_LEN;
	    }
	}
	ADD_TEXT(arg, strlen(arg));
    }
    vstream_fputs("\n", VSTREAM_OUT);
}
void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platform,
                              int page, String &title, String *&key, String *&dsc) {
    key = new String[HELP_NUM_LINES];
    dsc = new String[HELP_NUM_LINES];
    int i = 0;
    switch (page) {
    case 1:
        title = "Common keyboard commands:";
        ADD_BIND("F5", "Save / Load dialog");
        if (version >= 5)
            ADD_BIND(".", "Skip line of text");
        ADD_BIND("Esc", "Skip cutscene");
        ADD_BIND("Space", "Pause game");
        ADD_BIND("Ctrl 0-9", "Load game state 1-10");
        ADD_BIND("Alt 0-9", "Save game state 1-10");
#ifdef MACOSX
        ADD_BIND("Cmd q", "Quit");
#else
        ADD_BIND("Alt x, Ctrl z", "Quit");
#endif
        ADD_BIND("Alt Enter", "Toggle fullscreen");
        ADD_BIND("[, ]", "Music volume up / down");
        ADD_BIND("-, +", "Text speed slower / faster");
        ADD_BIND("Enter", "Simulate left mouse button");
        ADD_BIND("Tab", "Simulate right mouse button");
        break;
    case 2:
        title = "Special keyboard commands:";
        ADD_BIND("~, #", "Show / Hide console");
        ADD_BIND("Ctrl d", "Start the debugger");
        ADD_BIND("Ctrl s", "Show memory consumption");
        ADD_BIND("Ctrl f", "Run in fast mode (*)");
        ADD_BIND("Ctrl g", "Run in really fast mode (*)");
        ADD_BIND("Ctrl m", "Toggle mouse capture");
        ADD_BIND("Ctrl Alt 1-8", "Switch between graphics filters");
        ADD_BIND("Ctrl Alt +, -", "Increase / Decrease scale factor");
        ADD_BIND("Ctrl Alt a", "Toggle aspect-ratio correction");
        ADD_LINE;
        ADD_LINE;
        // FIXME: This should use word-wrapping, and should not assume
        //        that the font is mono-spaced.
        ADD_TEXT("* Note that using ctrl-f and");
        ADD_TEXT("  ctrl-g are not recommended");
        ADD_TEXT("  since they may cause crashes");
        ADD_TEXT("  or incorrect game behaviour.");
        break;
    case 3:
        if (gameId == GID_LOOM)
            title = "Spinning drafts on the keyboard:";
        else
            title = "Main game controls:";
        switch (gameId) {
        case GID_ZAK:
        case GID_MANIAC:
            // HACK. I know use of g_scumm here is evil, however,
            // introducing new GID and putting it everywhere will
            // pollute code much more that this single instance
            if (g_scumm->_game.platform == Common::kPlatformNES) {
                ADD_BIND("q", "Push");
                ADD_BIND("a", "Pull");
                ADD_BIND("z", "Give");
                ADD_BIND("w", "Open");
                ADD_BIND("s", "Close");
                ADD_BIND("x", "Go to");
                ADD_BIND("e", "Get");
                ADD_BIND("d", "Use");
                ADD_BIND("c", "Read");
                ADD_BIND("r", "New kid");
                ADD_BIND("f", "Turn on");
                ADD_BIND("v", "Turn off");
                break;
            }

            ADD_BIND("q", "Push");
            ADD_BIND("a", "Pull");
            ADD_BIND("z", "Give");
            ADD_BIND("w", "Open");
            ADD_BIND("s", "Close");
            ADD_BIND("x", "Read");
            ADD_BIND("e", "Walk to");
            ADD_BIND("d", "Pick up");
            ADD_BIND("c", "What is");
            if (gameId == GID_MANIAC) {
                ADD_BIND("r", "Unlock");
                ADD_BIND("f", "New kid");
            } else {
                ADD_BIND("r", "Put on");
                ADD_BIND("f", "Take off");
            }
            ADD_BIND("v", "Use");
            ADD_BIND("t", "Turn on");
            ADD_BIND("g", "Turn off");
            if (gameId == GID_MANIAC)
                ADD_BIND("b", "Fix");
            else
                ADD_BIND("b", "Switch");
            break;
        case GID_INDY3:
            ADD_BIND("q", "Push");
            ADD_BIND("a", "Pull");
            ADD_BIND("z", "Give");
            ADD_BIND("w", "Open");
            ADD_BIND("s", "Close");
            ADD_BIND("x", "Look");
            ADD_BIND("e", "Walk to");
            ADD_BIND("d", "Pick up");
            ADD_BIND("c", "What is");
            ADD_BIND("r", "Use");
            ADD_BIND("f", "Turn on");
            ADD_BIND("v", "Turn off");
            ADD_BIND("t", "Talk");
            ADD_BIND("g", "Travel");
            ADD_BIND("b", "To Henry / To Indy");
            break;
        case GID_LOOM:
            ADD_BIND("q, c", "play C minor on distaff");
            ADD_BIND("w, d", "play D on distaff");
            ADD_BIND("e, e", "play E on distaff");
            ADD_BIND("r, f", "play F on distaff");
            ADD_BIND("t, g", "play G on distaff");
            ADD_BIND("y, a", "play A on distaff");
            ADD_BIND("u, b", "play B on distaff");
            ADD_BIND("i, C", "play C major on distaff");
            break;
        case GID_MONKEY_EGA:
        case GID_MONKEY_VGA:
            ADD_BIND("o", "Open");
            ADD_BIND("c", "Close");
            ADD_BIND("s", "puSh");
            ADD_BIND("y", "pull (Yank)");
            ADD_BIND("w", "Walk to");
            ADD_BIND("p", "Pick up");
            ADD_BIND("t", "Talk to");
            ADD_BIND("g", "Give");
            ADD_BIND("u", "Use");
            ADD_BIND("l", "Look at");
            ADD_BIND("n", "turn oN");
            ADD_BIND("f", "turn oFf");
            break;
        case GID_MONKEY:
        case GID_MONKEY2:
        case GID_INDY4:
        case GID_TENTACLE:
            ADD_BIND("g", "Give");
            ADD_BIND("o", "Open");
            ADD_BIND("c", "Close");
            ADD_BIND("p", "Pick up");
            ADD_BIND("l", "Look at");
            ADD_BIND("t", "Talk to");
            ADD_BIND("u", "Use");
            ADD_BIND("s", "puSh");
            ADD_BIND("y", "pull (Yank)");
            if (platform == Common::kPlatformSegaCD) {
                // FIXME look at scripts to figure all options out...
                // keys 1->4 seem to do something as well
                ADD_BIND("6", "Highlight prev dialogue");
                ADD_BIND("7", "Highlight next dialogue");
            }
            break;
        case GID_SAMNMAX:
            ADD_BIND("w", "Walk");
            ADD_BIND("t", "Talk");
            ADD_BIND("u", "Use");
            ADD_BIND("i", "Inventory");
            ADD_BIND("o", "Object");
            ADD_BIND("p", "Pick up");
            ADD_BIND("l", "Look");
            ADD_BIND("b", "Black and White / Color");
            break;
        case GID_FT:
            ADD_BIND("e", "Eyes");
            ADD_BIND("t", "Tongue");
            ADD_BIND("i", "Inventory");
            ADD_BIND("p", "Punch");
            ADD_BIND("k", "Kick");
            break;
        case GID_DIG:
            ADD_BIND("e", "Examine");
            ADD_BIND("t", "Regular cursor");
            ADD_BIND("i", "Inventory");
            ADD_BIND("c", "Comm");
            break;
        case GID_CMI:
            ADD_BIND("F1", "Save / Load / Options");
            ADD_BIND("e", "Examine");
            ADD_BIND("t", "Talk to");
            ADD_BIND("i", "Inventory");
            ADD_BIND("u", "Use");
            break;
        }
        break;
    case 4:
        title = "Other game controls:";
        if (version <= 2) {
            ADD_TEXT("Inventory: (not yet implemented)");
            ADD_BIND("u", "Scroll list up");
            ADD_BIND("j", "Scroll list down");
            ADD_BIND("i", "Upper left item");
            ADD_BIND("k", "Lower left item");
            ADD_BIND("o", "Upper right item");
            ADD_BIND("l", "Lower right item");
            ADD_LINE;
            ADD_TEXT("Switching characters:");
            if (gameId == GID_MANIAC) {
                ADD_BIND("F1", "Dave");
                ADD_BIND("F2", "Second kid");
                ADD_BIND("F3", "Third kid");
            } else {
                ADD_BIND("F1", "Zak");
                ADD_BIND("F2", "Annie");
                ADD_BIND("F3", "Melissa");
                ADD_BIND("F4", "Leslie");
            }
        } else if (gameId == GID_INDY3 || gameId == GID_ZAK) {
            // Indy3, or FM-TOWNS Zak
            ADD_TEXT("Inventory:");
            ADD_BIND("y", "Upper left item");
            ADD_BIND("h", "Middle left item");
            ADD_BIND("n", "Lower left item");
            ADD_BIND("u", "Upper right item");
            ADD_BIND("j", "Middle right item");
            ADD_BIND("m", "Lower right item");
            ADD_BIND("o", "Scroll list up");
            ADD_BIND("l", "Scroll list down");
        }
        break;
    case 5:
        switch (gameId) {
        case GID_INDY3:
            title = "Fighting controls (numpad):";
            ADD_BIND("7", "Step back");
            ADD_BIND("4", "Step back");
            ADD_BIND("1", "Step back");
            ADD_BIND("8", "Block high");
            ADD_BIND("5", "Block middle");
            ADD_BIND("2", "Block low");
            ADD_BIND("9", "Punch high");
            ADD_BIND("6", "Punch middle");
            ADD_BIND("3", "Punch low");
            ADD_LINE;
            ADD_LINE;
            ADD_TEXT("These are for Indy on left.");
            ADD_TEXT("When Indy is on the right,");
            ADD_TEXT("7, 4, and 1 are switched with");
            ADD_TEXT("9, 6, and 3, respectively.");
            break;
        }
        break;
    case 6:
        switch (gameId) {
        case GID_INDY3:
            title = "Biplane controls (numpad):";
            ADD_BIND("7", "Fly to upper left");
            ADD_BIND("4", "Fly to left");
            ADD_BIND("1", "Fly to lower left");
            ADD_BIND("8", "Fly upwards");
            ADD_BIND("5", "Fly straight");
            ADD_BIND("2", "Fly down");
            ADD_BIND("9", "Fly to upper right");
            ADD_BIND("6", "Fly to right");
            ADD_BIND("3", "Fly to lower right");
            break;
        }
        break;
    }
    while (i < HELP_NUM_LINES) {
        ADD_LINE;
    }
}
Exemple #7
0
static void pcf_print_master_field(VSTREAM *fp, int mode,
				           PCF_MASTER_ENT *masterp,
				           int field)
{
    char  **argv = masterp->argv->argv;
    const char *arg;
    const char *aval;
    int     arg_len;
    int     line_len;
    int     in_daemon_options;
    int     need_parens;

    /*
     * Show the field value, or the first value in the case of a multi-column
     * field.
     */
#define ADD_CHAR(ch) ADD_TEXT((ch), 1)

    line_len = 0;
    if ((mode & PCF_HIDE_NAME) == 0) {
	ADD_TEXT(argv[0], strlen(argv[0]));
	ADD_CHAR(PCF_NAMESP_SEP_STR);
	ADD_TEXT(argv[1], strlen(argv[1]));
	ADD_CHAR(PCF_NAMESP_SEP_STR);
	ADD_TEXT(pcf_str_field_pattern(field), strlen(pcf_str_field_pattern(field)));
    }
    if ((mode & (PCF_HIDE_NAME | PCF_HIDE_VALUE)) == 0) {
	ADD_TEXT(" = ", 3);
    }
    if ((mode & PCF_HIDE_VALUE) == 0) {
	if (line_len > 0 && line_len + strlen(argv[field]) > PCF_LINE_LIMIT) {
	    vstream_fputs("\n" PCF_INDENT_TEXT, fp);
	    line_len = PCF_INDENT_LEN;
	}
	ADD_TEXT(argv[field], strlen(argv[field]));
    }

    /*
     * Format the daemon command-line options and non-option arguments. Here,
     * we have no data-dependent preference for column positions, but we do
     * have argument grouping preferences.
     */
    if (field == PCF_MASTER_FLD_CMD && (mode & PCF_HIDE_VALUE) == 0) {
	in_daemon_options = 1;
	for (field += 1; (arg = argv[field]) != 0; field++) {
	    arg_len = strlen(arg);
	    aval = 0;
	    need_parens = 0;
	    if (in_daemon_options) {

		/*
		 * We make no special case for generic options (-v -D)
		 * options.
		 */
		if (arg[0] != '-' || strcmp(arg, "--") == 0) {
		    in_daemon_options = 0;
		} else if (strchr(pcf_daemon_options_expecting_value, arg[1]) != 0
			   && (aval = argv[field + 1]) != 0) {

		    /* Force line break before option with value. */
		    line_len = PCF_LINE_LIMIT;

		    /*
		     * Optionally, expand $name in parameter value.
		     */
		    if (strcmp(arg, "-o") == 0
			&& (mode & PCF_SHOW_EVAL) != 0)
			aval = pcf_expand_parameter_value((VSTRING *) 0, mode,
							  aval, masterp);

		    /*
		     * Keep option and value on the same line.
		     */
		    arg_len += strlen(aval) + 1;
		    if ((need_parens = aval[strcspn(aval, PCF_MASTER_BLANKS)]) != 0)
			arg_len += 2;
		}
	    } else {
		need_parens = arg[strcspn(arg, PCF_MASTER_BLANKS)];
	    }

	    /*
	     * Insert a line break when the next item won't fit.
	     */
	    if (line_len > PCF_INDENT_LEN) {
		if ((mode & PCF_FOLD_LINE) == 0
		    || line_len + 1 + arg_len < PCF_LINE_LIMIT) {
		    ADD_SPACE;
		} else {
		    vstream_fputs("\n" PCF_INDENT_TEXT, fp);
		    line_len = PCF_INDENT_LEN;
		}
	    }
	    if (in_daemon_options == 0 && need_parens)
		ADD_TEXT("{", 1);
	    ADD_TEXT(arg, strlen(arg));
	    if (in_daemon_options == 0 && need_parens)
		ADD_TEXT("}", 1);
	    if (aval) {
		ADD_SPACE;
		if (need_parens)
		    ADD_TEXT("{", 1);
		ADD_TEXT(aval, strlen(aval));
		if (need_parens)
		    ADD_TEXT("}", 1);
		field += 1;

		/* Force line break after option with value. */
		line_len = PCF_LINE_LIMIT;
	    }
	}
    }
    vstream_fputs("\n", fp);

    if (msg_verbose)
	vstream_fflush(fp);
}