|
|
| Строка 1: |
Строка 1: |
| - | wxWidgets consists of a large group of helper classes, that help programmers to do their job.
| |
| - | These include classes for working with strings, files, xml files, streams, database or network.
| |
| - | Here we will show only a tiny drop of the whole lake.
| |
| | | | |
| - | wxWidgets library can be used to create console and gui applications. In this chapter, we will illustrate some of the helper classes in console based applications.
| |
| - |
| |
| - | == Console ==
| |
| - | This is a simple console application. The application puts some text into the console window.
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxPuts(wxT("A wxWidgets console application"));
| |
| - | }
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | A wxWidgets console application
| |
| - | </source>
| |
| - |
| |
| - | == wxString ==
| |
| - | This is probably the most useful class. wxString is a class representing a character string.
| |
| - |
| |
| - | In the following example, we define three wxStrings. We create one string of these strings using addition operation.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxString str1 = wxT("Linux");
| |
| - | wxString str2 = wxT("Operating");
| |
| - | wxString str3 = wxT("System");
| |
| - |
| |
| - | wxString str = str1 + wxT(" ") + str2 + wxT(" ") + str3;
| |
| - |
| |
| - | wxPuts(str);
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | Linux Operating System
| |
| - | </source>
| |
| - |
| |
| - | The Printf() method is used to format strings.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | int flowers = 21;
| |
| - |
| |
| - | wxString str;
| |
| - | str.Printf(wxT("There are %d red roses."), flowers);
| |
| - |
| |
| - | wxPuts(str);
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | There are 21 red roses.
| |
| - | </source>
| |
| - |
| |
| - | The following example checks, whether a string contains another string. For this we have a <i>Contains()</i> method.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | wxString str = wxT("The history of my life");
| |
| - |
| |
| - | if (str.Contains(wxT("history"))) {
| |
| - | wxPuts(wxT("Contains!"));
| |
| - | }
| |
| - |
| |
| - |
| |
| - | if (!str.Contains(wxT("plain"))) {
| |
| - | wxPuts(wxT("Does not contain!"));
| |
| - | }
| |
| - |
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | Contains!
| |
| - | Does not contain!
| |
| - | </source>
| |
| - |
| |
| - | The <i>Len()</i> method returns the number of characters in the string.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxString str = wxT("The history of my life");
| |
| - | wxPrintf(wxT("The string has %d characters\n"), str.Len());
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | The string has 22 characters
| |
| - | </source>
| |
| - |
| |
| - | The <i>MakeLower()</i> and <i>MakeUpper()</i> methods make characters lower case and upper case.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxString str = wxT("The history of my life");
| |
| - |
| |
| - | wxPuts(str.MakeLower());
| |
| - | wxPuts(str.MakeUpper());
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | the history of my life
| |
| - | THE HISTORY OF MY LIFE
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | == Utility functions ==
| |
| - | wxWidgets has several handy utility functions for executing a process, getting a home user directory or getting the OS name.
| |
| - |
| |
| - | In the following example, we execute the ls command. For this, we have the wxShell() function. Unix only.
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - | #include <wx/utils.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | wxShell(wxT("ls -l"));
| |
| - |
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | total 40
| |
| - | -rwxr-xr-x 1 vronskij vronskij 9028 2007-09-06 22:10 basic
| |
| - | -rw-r--r-- 1 vronskij vronskij 95 2007-09-06 22:09 basic.cpp
| |
| - | -rw-r--r-- 1 vronskij vronskij 430 2007-09-06 00:07 basic.cpp~
| |
| - | -rwxr-xr-x 1 vronskij vronskij 11080 2007-09-05 23:17 console
| |
| - | -rw-r--r-- 1 vronskij vronskij 500 2007-09-05 23:17 console.cpp
| |
| - | -rw-r--r-- 1 vronskij vronskij 485 2007-09-05 23:16 console.cpp~
| |
| - | </source>
| |
| - |
| |
| - | Next we will we will get the home user directory, os name, user name, host name and total free memory.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/string.h>
| |
| - | #include <wx/utils.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxPuts(wxGetHomeDir());
| |
| - | wxPuts(wxGetOsDescription());
| |
| - | wxPuts(wxGetUserName());
| |
| - | wxPuts(wxGetFullHostName());
| |
| - |
| |
| - | long mem = wxGetFreeMemory().ToLong();
| |
| - |
| |
| - | wxPrintf(wxT("Memory: %ld\n"), mem);
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | /home/vronskij
| |
| - | Linux 2.6.20-16-generic i686
| |
| - | jan bodnar
| |
| - | spartan
| |
| - | Memory: 741244928
| |
| - | </source>
| |
| - |
| |
| - | == Time & date ==
| |
| - |
| |
| - | In wxWidgets, we have several classes for working with date & time.
| |
| - |
| |
| - | The example shows current date or time in various formats.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/datetime.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxDateTime now = wxDateTime::Now();
| |
| - |
| |
| - | wxString date1 = now.Format();
| |
| - | wxString date2 = now.Format(wxT("%X"));
| |
| - | wxString date3 = now.Format(wxT("%x"));
| |
| - |
| |
| - | wxPuts(date1);
| |
| - | wxPuts(date2);
| |
| - | wxPuts(date3);
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - |
| |
| - | Fri Sep 7 21:28:38 2007
| |
| - | 21:28:38
| |
| - | 09/07/07
| |
| - | </source>
| |
| - |
| |
| - | Next we will show current time in different cities.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/datetime.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxDateTime now = wxDateTime::Now();
| |
| - |
| |
| - | wxPrintf(wxT(" Tokyo: %s\n"), now.Format(wxT("%a %T"),
| |
| - | wxDateTime::GMT9).c_str());
| |
| - | wxPrintf(wxT(" Moscow: %s\n"), now.Format(wxT("%a %T"),
| |
| - | wxDateTime::MSD).c_str());
| |
| - | wxPrintf(wxT("Budapest: %s\n"), now.Format(wxT("%a %T"),
| |
| - | wxDateTime::CEST).c_str());
| |
| - | wxPrintf(wxT(" London: %s\n"), now.Format(wxT("%a %T"),
| |
| - | wxDateTime::WEST).c_str());
| |
| - | wxPrintf(wxT("New York: %s\n"), now.Format(wxT("%a %T"),
| |
| - | wxDateTime::EDT).c_str());
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | Tokyo: Sat 05:42:24
| |
| - | Moscow: Sat 00:42:24
| |
| - | Budapest: Fri 22:42:24
| |
| - | London: Fri 22:42:24
| |
| - | New York: Fri 16:42:24
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | The following example shows, how we can add date spans to our date/time.
| |
| - | We add one month to the current time.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - |
| |
| - | #include <wx/datetime.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - | wxDateTime now = wxDateTime::Now();
| |
| - | wxString date1 = now.Format(wxT("%B %d %Y"));
| |
| - | wxPuts(date1);
| |
| - |
| |
| - | wxDateSpan span(0, 1);
| |
| - | wxDateTime then = now.Add(span);
| |
| - |
| |
| - | wxString date2 = then.Format(wxT("%B %d %Y"));
| |
| - | wxPuts(date2);
| |
| - |
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | September 07 2007
| |
| - | October 07 2007
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | == Files ==
| |
| - | wxWidgets has several classes to facilitate working with files. This is low level access to files, as opposed to working with streams.
| |
| - |
| |
| - | In the following example, we use the <b>wxFile</b> class to create a new file and write data to it.
| |
| - | We also test, whether the file is opened. Note, that when we create a file, it automatically stays as opened.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/file.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | wxString str = wxT("You make me want to be a better man.\n");
| |
| - |
| |
| - | wxFile file;
| |
| - | file.Create(wxT("quote"), true);
| |
| - |
| |
| - | if (file.IsOpened())
| |
| - | wxPuts(wxT("the file is opened"));
| |
| - |
| |
| - | file.Write(str);
| |
| - | file.Close();
| |
| - |
| |
| - | if (!file.IsOpened())
| |
| - | wxPuts(wxT("the file is not opened"));
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | $ ls qoute
| |
| - | ls: qoute: No such file or directory
| |
| - |
| |
| - | $ ./createfile
| |
| - | the file is opened
| |
| - | the file is not opened
| |
| - |
| |
| - | $ cat quote
| |
| - | You make me want to be a better man.
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | The <b>wxTextFile</b> is a simple class which allows to work with text files on line by line basis.
| |
| - | It is easier to work with this class than with wxFile class.
| |
| - |
| |
| - | In the next example, we will print the number of lines in a file, first and last lines and finally we will read and show the contents of the file.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/textfile.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | wxTextFile file(wxT("test.c"));
| |
| - |
| |
| - | file.Open();
| |
| - |
| |
| - | wxPrintf(wxT("Number of lines: %d\n"), file.GetLineCount());
| |
| - | wxPrintf(wxT("First line: %s\n"), file.GetFirstLine().c_str());
| |
| - | wxPrintf(wxT("Last line: %s\n"), file.GetLastLine().c_str());
| |
| - |
| |
| - | wxPuts(wxT("-------------------------------------"));
| |
| - |
| |
| - | wxString s;
| |
| - |
| |
| - | for ( s = file.GetFirstLine(); !file.Eof();
| |
| - | s = file.GetNextLine() )
| |
| - | {
| |
| - | wxPuts(s);
| |
| - | }
| |
| - |
| |
| - | file.Close();
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | Number of lines: 8
| |
| - | First line: #include <glib.h>
| |
| - | Last line: }
| |
| - | -------------------------------------
| |
| - | #include <glib.h>
| |
| - | #include <glib/gstdio.h>
| |
| - |
| |
| - | int main() {
| |
| - |
| |
| - | g_mkdir("/home/vronskij/test", S_IRWXU);
| |
| - |
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | The <b>wxDir</b> class allows us to enumerate files and directories.
| |
| - |
| |
| - | In the following example, we will print all files and directories available in the current working directory.
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | #include <wx/dir.h>
| |
| - |
| |
| - | #include <wx/filefn.h>
| |
| - |
| |
| - | int main(int argc, char **argv)
| |
| - | {
| |
| - |
| |
| - | wxDir dir(wxGetCwd());
| |
| - |
| |
| - | wxString file;
| |
| - |
| |
| - | bool cont = dir.GetFirst(&file, wxEmptyString,
| |
| - | wxDIR_FILES | wxDIR_DIRS);
| |
| - |
| |
| - | while (cont) {
| |
| - | wxPuts(file);
| |
| - | cont = dir.GetNext(&file);
| |
| - | }
| |
| - | }
| |
| - |
| |
| - | </source>
| |
| - |
| |
| - | <source lang="cpp">
| |
| - | $ ./dir
| |
| - | dir
| |
| - | temp
| |
| - | console
| |
| - | basic.cpp
| |
| - | basic
| |
| - | quote
| |
| - | createfile
| |
| - | console.cpp
| |
| - | basic.cpp~
| |
| - | test.c
| |
| - | console.cpp~
| |
| - | </source>
| |
| - |
| |
| - | [[Категория:WxWidgets]]
| |