CrossPlatform GUI Programming with wxWidgets [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

CrossPlatform GUI Programming with wxWidgets [Electronic resources] - نسخه متنی

Julian Smart; Kevin Hock; Stefan Csomor

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
توضیحات
افزودن یادداشت جدید





  • Parsing the Command Line


    Passing commands to the application to be read on initialization is often useful, and if the application is document-oriented, you should allow files to be loaded in this way. You also might want to let the application be run from the operating system command line, for example to automate tasks from a makefile, in which case command-line options can be used to tell the application that it should be run without a user interface. Although most configuration of an application will be done via the user interface, command-line configuration options can be appropriate in some cases, such as turning on a debug mode.[View full width]

    #include "wx/cmdline.h"
    static const wxCmdLineEntryDesc g_cmdLineDesc[] =
    {
    { wxCMD_LINE_SWITCH, wxT("h"), wxT("help"),
    wxT("displays help on the command line
    parameters") },
    { wxCMD_LINE_SWITCH, wxT("v"), wxT("version"),
    wxT("print version") },
    { wxCMD_LINE_OPTION, wxT("d"), wxT("debug"),
    wxT("specify a debug level") },
    { wxCMD_LINE_PARAM, NULL, NULL, wxT("input file"),
    wxCMD_LINE_VAL_STRING,
    wxCMD_LINE_PARAM_OPTIONAL },
    { wxCMD_LINE_NONE }
    };
    bool MyApp::OnInit()
    {
    // Parse command line
    wxString cmdFilename;
    wxCmdLineParser cmdParser(g_cmdLineDesc, argc, argv);
    int res;
    {
    wxLogNull log;
    // Pass false to suppress auto Usage() message
    res = cmdParser.Parse(false);
    }
    // Check if the user asked for command-line help
    if (res == -1 || res > 0 || cmdParser.Found(wxT("h")))
    {
    cmdParser.Usage();
    return false;
    }
    // Check if the user asked for the version
    if (cmdParser.Found(wxT("v")))
    {
    #ifndef __WXMSW__
    wxLog::SetActiveTarget(new wxLogStderr);
    #endif
    wxString msg;
    wxString date(wxString::FromAscii(__DATE__));
    msg.Printf(wxT("Anthemion DialogBlocks, (c) Julian Smart,
    2005 Version %.2f, %s"),
    wbVERSION_NUMBER, (const wxChar*) date);
    wxLogMessage(msg);
    return false;
    }
    // Check for debug level
    long debugLevel = 0;
    if (cmdParser.Found(wxT("d"), & debugLevel))
    {
    }
    // Check for a project filename
    if (cmdParser.GetParamCount() > 0)
    {
    cmdFilename = cmdParser.GetParam(0);
    // Under Windows when invoking via a document
    // in Explorer, we are passed the short form.
    // So normalize and make the long form.
    wxFileName fName(cmdFilename);
    fName.Normalize(wxPATH_NORM_LONG|wxPATH_NORM_DOTS|
    wxPATH_NORM_TILDE|wxPATH_NORM_ABSOLUTE);
    cmdFilename = fName.GetFullPath();
    }
    ...
    return true;
    }

    The use of wxFileName for normalizing the file name is necessary because Windows sometimes passes the short form when the application is invoked from the command line.

    As we noted earlier in the chapter, Mac OS X doesn''''t use the command line when running an application by opening an associated document; instead, wxApp::MacOpenFile is called after the application has initialized. However, the command-line method is used by other operating systems. If you intend to write a document-based application for Mac OS X and other operating systems, you should allow for both methods.

  • / 261