git-svn-id: svn://ultimatepp.org/upp/trunk@1848 f0d560ea-af0d-0410-9eb7-867de7ffcac7

This commit is contained in:
sergeynikitin 2009-12-27 12:20:13 +00:00
parent eee2da4355
commit 3580892c63
10 changed files with 2539 additions and 0 deletions

View file

@ -0,0 +1,248 @@
#include <CtrlLib/CtrlLib.h>
#include <Report/Report.h>
using namespace Upp;
#define LAYOUTFILE <SplashSV_test/AddressBook.lay>
#include <CtrlCore/lay.h>
#define TAG_ADDRESSBOOK "AddressBook"
#define TAG_PERSON "person"
#define TAG_NAME "name"
#define TAG_SURNAME "surname"
#define TAG_ADDRESS "address"
#define TAG_EMAIL "email"
//
#define IMAGECLASS SVLogo // Adding Graphic LOGO
#define IMAGEFILE <SplashSV_test/SVLogo.iml> //
#include <Draw/iml.h> //
#define TOPICFILE <SplashSV_test/src.tpp/all.i> // Adding QTF for splash (and for other aims)
#include <Core/topic_group.h> //
#define SPLASHQTF "SplashSV_test/src/Splash" //
#define SPLASH_LOGO_NATIVE SVLogo::logoENUS() //
#define SPLASH_LOGO_INTERNATIONAL SVLogo::logoENUS()// this is Parameter set for Splash
#define SPLASH_NATIVE_LANG "en-us" //
#include <SplashSV/splash-sv.h> //
class AddressBook : public WithAddressBookLayout<TopWindow> {
WithModifyLayout<ParentCtrl> modify;
WithSearchLayout<ParentCtrl> search;
FileSel fs;
String filename;
void SetupSearch();
void Add();
void Change();
void Search();
void Open();
void Save();
void SaveAs();
void Print();
void Quit();
void FileMenu(Bar& bar);
void MainMenu(Bar& bar);
typedef AddressBook CLASSNAME;
public:
void Serialize(Stream& s);
AddressBook();
};
AddressBook::AddressBook()
{
CtrlLayout(*this, "Address book");
CtrlLayout(modify);
CtrlLayout(search);
tab.Add(modify, "Modify");
tab.Add(search, "Search");
ActiveFocus(search.name);
search.oname = true;
search.oname <<= search.osurname <<= search.oaddress
<<= search.oemail <<= THISBACK(SetupSearch);
array.AddColumn(TAG_NAME, "Name");
array.AddColumn(TAG_SURNAME, "Surname");
array.AddColumn(TAG_ADDRESS, "Address");
array.AddColumn(TAG_EMAIL, "Email");
modify.add <<= THISBACK(Add);
modify.change <<= THISBACK(Change);
search.search <<= THISBACK(Search);
SetupSearch();
fs.AllFilesType();
menu.Set(THISBACK(MainMenu));
}
void AddressBook::FileMenu(Bar& bar)
{
bar.Add("Open..", CtrlImg::open(), THISBACK(Open));
bar.Add("Save", CtrlImg::save(), THISBACK(Save));
bar.Add("Save as..", CtrlImg::save_as(), THISBACK(SaveAs));
bar.Separator();
bar.Add("Print", CtrlImg::print(), THISBACK(Print));
bar.Separator();
bar.Add("Quit", THISBACK(Quit));
}
void AddressBook::MainMenu(Bar& bar)
{
bar.Add("File", THISBACK(FileMenu));
}
void AddressBook::SetupSearch()
{
search.name.Enable(search.oname);
search.surname.Enable(search.osurname);
search.address.Enable(search.oaddress);
search.email.Enable(search.oemail);
}
void AddressBook::Add()
{
array.Add(~modify.name, ~modify.surname, ~modify.address, ~modify.email);
array.GoEnd();
modify.name <<= modify.surname <<= modify.address <<= modify.email <<= Null;
ActiveFocus(modify.name);
}
void AddressBook::Change()
{
if(array.IsCursor()) {
array.Set(0, ~modify.name);
array.Set(1, ~modify.surname);
array.Set(2, ~modify.address);
array.Set(3, ~modify.email);
}
}
bool Contains(const String& text, const String& substr)
{
for(const char *s = text; s <= text.End() - substr.GetLength(); s++)
if(strncmp(s, substr, substr.GetLength()) == 0)
return true;
return false;
}
void AddressBook::Search()
{
if(!array.GetCount()) return;
bool sc = true;
array.ClearSelection();
for(int i = 0; i < array.GetCount(); i++) {
if((!search.oname || Contains(array.Get(i, 0), ~search.name)) &&
(!search.osurname || Contains(array.Get(i, 1), ~search.surname)) &&
(!search.oaddress || Contains(array.Get(i, 2), ~search.address)) &&
(!search.oemail || Contains(array.Get(i, 3), ~search.email))) {
array.Select(i);
if(sc) {
array.SetCursor(i);
array.CenterCursor();
sc = false;
};
}
}
}
void AddressBook::Open()
{
if(!fs.ExecuteOpen()) return;
filename = fs;
array.Clear();
try {
String d = LoadFile(filename);
XmlNode n = ParseXML(d);
if(n.GetCount()==0 || n[0].GetTag() != TAG_ADDRESSBOOK)
throw XmlError("No AddressBook tag");
const XmlNode &ab = n[0];
array.SetCount(ab.GetCount());
for(int i=0; i < ab.GetCount(); i++){
const XmlNode &person = ab[i];
for(int j=0; j < person.GetCount(); j++){
const XmlNode &prop = person[j];
if(prop.IsTag(TAG_NAME))
array.Set(i, TAG_NAME, prop[0].GetText());
else
if(prop.IsTag(TAG_SURNAME))
array.Set(i, TAG_SURNAME, prop[0].GetText());
else
if(prop.IsTag(TAG_ADDRESS))
array.Set(i, TAG_ADDRESS, prop[0].GetText());
else
if(prop.IsTag(TAG_EMAIL))
array.Set(i, TAG_EMAIL, prop[0].GetText());
}
}
}
catch(XmlError &e) {
Exclamation("Error reading the input file:&" + DeQtf(e) );
}
}
void AddressBook::Save()
{
if(IsEmpty(filename)) {
SaveAs();
return;
}
XmlNode n;
XmlNode &ab = n.Add(TAG_ADDRESSBOOK);
for(int i=0; i < array.GetCount(); i++) {
XmlNode &person = ab.Add(TAG_PERSON);
person.Add(TAG_NAME).Add().CreateText(array.Get(i, TAG_NAME));
person.Add(TAG_SURNAME).Add().CreateText(array.Get(i, TAG_SURNAME));
person.Add(TAG_ADDRESS).Add().CreateText(array.Get(i, TAG_ADDRESS));
person.Add(TAG_EMAIL).Add().CreateText(array.Get(i, TAG_EMAIL));
}
if(!SaveFile(filename, AsXML(n)))
Exclamation("Error saving the file!");
}
void AddressBook::SaveAs()
{
if(!fs.ExecuteSaveAs()) return;
filename = fs;
Save();
}
void AddressBook::Print()
{
String qtf;
qtf = "{{1:1:1:1 Name:: Surname:: Address:: Email";
for(int i = 0; i < array.GetCount(); i++)
for(int q = 0; q < 4; q++)
qtf << ":: " << DeQtf((String)array.Get(i, q));
Report report;
report << qtf;
Perform(report);
}
void AddressBook::Quit()
{
Break();
}
void AddressBook::Serialize(Stream& s)
{
int version = 0;
s / version;
s % search.oname % search.osurname % search.oaddress % search.oemail;
s % fs;
SetupSearch();
}
GUI_APP_MAIN
{
SplashInit(); // Splash Initializing and Show screen with text "Program Loading"
ShowSplashStatus(t_("Loading Settings...")); // Show message at bottom of splash screen
AddressBook ab;
LoadFromFile(ab);
ShowSplashStatus(t_("Normal Running...")); // Show message at bottom of splash screen
//SetSplashTimer(1000); // Non standart splash-close timer set to 1 sec (maximum is 50 sec)
ab.Run();
StoreToFile(ab);
}

View file

@ -0,0 +1,31 @@
LAYOUT(AddressBookLayout, 532, 456)
ITEM(MenuBar, menu, LeftPosZ(0, 200).TopPosZ(0, 20))
ITEM(TabCtrl, tab, LeftPosZ(8, 516).TopPosZ(32, 84))
ITEM(ArrayCtrl, array, LeftPosZ(8, 516).TopPosZ(124, 324))
END_LAYOUT
LAYOUT(ModifyLayout, 480, 52)
ITEM(Label, dv___0, SetLabel(t_("&Name")).LeftPosZ(8, 48).TopPosZ(8, 15))
ITEM(EditField, name, LeftPosZ(8, 96).TopPosZ(28, 19))
ITEM(Label, dv___2, SetLabel(t_("&Surname")).LeftPosZ(108, 48).TopPosZ(8, 15))
ITEM(EditField, surname, LeftPosZ(108, 96).TopPosZ(28, 19))
ITEM(Label, dv___4, SetLabel(t_("&Address")).LeftPosZ(208, 48).TopPosZ(8, 15))
ITEM(EditField, address, LeftPosZ(208, 96).TopPosZ(28, 19))
ITEM(Label, dv___6, SetLabel(t_("&Email")).LeftPosZ(308, 48).TopPosZ(8, 15))
ITEM(EditField, email, LeftPosZ(308, 96).TopPosZ(28, 19))
ITEM(Button, add, SetLabel(t_("Ad&d")).LeftPosZ(416, 56).TopPosZ(4, 20))
ITEM(Button, change, SetLabel(t_("&Change")).LeftPosZ(416, 56).TopPosZ(28, 20))
END_LAYOUT
LAYOUT(SearchLayout, 480, 56)
ITEM(Option, oname, SetLabel(t_("&Name")).LeftPosZ(8, 56).TopPosZ(8, 18))
ITEM(EditField, name, LeftPosZ(8, 96).TopPosZ(28, 19))
ITEM(Option, osurname, SetLabel(t_("&Surname")).LeftPosZ(108, 64).TopPosZ(8, 18))
ITEM(EditField, surname, LeftPosZ(108, 96).TopPosZ(28, 19))
ITEM(Option, oaddress, SetLabel(t_("&Address")).LeftPosZ(208, 64).TopPosZ(8, 18))
ITEM(EditField, address, LeftPosZ(208, 96).TopPosZ(28, 19))
ITEM(Option, oemail, SetLabel(t_("&Email")).LeftPosZ(308, 52).TopPosZ(8, 18))
ITEM(EditField, email, LeftPosZ(308, 96).TopPosZ(28, 19))
ITEM(Button, search, SetLabel(t_("&Search")).LeftPosZ(416, 56).TopPosZ(28, 20))
END_LAYOUT

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,16 @@
description "Address book application, uses XML to store data (using DOM like U++ classes)\377";
uses
CtrlLib,
Report,
SplashSV;
file
AddressBook.cpp,
AddressBook.lay,
SVLogo.iml,
src.tpp;
mainconfig
"" = "GUI";

View file

@ -0,0 +1,6 @@
#ifndef _SplashSV_test_icpp_init_stub
#define _SplashSV_test_icpp_init_stub
#include "CtrlLib/init"
#include "Report/init"
#include "SplashSV/init"
#endif

View file

@ -0,0 +1,23 @@
topic "";
[ $$0,0#00000000000000000000000000000000:Default]
[{_}%RU-RU
[ {{5625:4375f0;g0;@(93.94.144)-1 [s0;=*@2 &]
[s0;=%% [*@2 Program to storing addresses in XML format]&]
[s0;=*@2%- &]
[s0;=%% [*@(184.185.234)+184 AddressBook`-XML2]&]
[s0;=*@(184.185.234)%- &]
[s0;=%% [*@(235) (C) Copyright Ultimate`+`+ team]&]
[s0;=*C@(184.185.234)4%- ]
::@2 [s0;%- ]
::@(194.194.239) [s0;*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234)%- &]
[s0;%% [*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234) www.ultimatepp.org]&]
[s0;=*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234)%- ]
:: [s0;>%% [*^mailto`:mail`@svsoft`.ru^@(184.185.234) mail`@gmail.com]]
::@(93.94.144)-1 [s0;=*2%- &]
[s0;=%% [*@2 This program uses][* ][*@(255.255.192) Ultimate`+`+][*@2 technology]]
::@2 [s0;%- ]
::@(93.94.144)-1 [s0;=%% [@2 All rights reserved. Coping, distributing or using without
a valid license is deprecated][@2+117 .]&]
[s0;=%- ]
::@2 [s0;%- ]}}&]
[s0; ]

View file

@ -0,0 +1,5 @@
TITLE("")
COMPRESSED
120,156,149,82,127,107,219,48,16,253,42,7,107,70,156,52,138,127,182,141,67,75,218,244,207,14,70,89,96,96,212,202,139,21,91,212,142,140,36,39,148,144,239,222,147,147,181,100,222,24,21,8,233,56,189,119,79,119,47,129,179,51,247,220,253,226,254,103,197,247,124,149,54,165,161,201,238,121,223,123,92,140,30,23,144,192,110,23,93,248,81,28,6,151,209,202,157,230,238,116,214,159,4,100,18,18,47,12,157,145,7,137,118,167,215,131,153,15,95,105,123,237,245,32,177,225,119,37,115,149,86,96,36,104,35,149,88,231,144,102,153,226,90,115,13,98,13,63,191,61,192,74,170,42,53,244,136,68,84,111,116,74,211,247,174,176,208,85,68,252,32,116,134,24,192,237,129,227,78,202,23,54,66,14,255,3,125,242,184,195,228,7,145,3,253,185,3,115,89,191,42,145,23,6,22,165,17,88,159,179,33,27,130,225,105,245,206,53,63,37,11,145,141,198,49,254,202,166,143,65,223,179,77,192,237,7,19,167,77,12,158,10,99,106,22,179,49,27,111,183,91,70,244,70,203,149,
97,68,53,108,252,244,15,125,173,188,79,0,1,31,144,230,168,188,174,137,84,249,187,236,207,213,199,79,180,178,111,14,18,170,84,148,70,178,216,158,108,246,1,253,179,254,33,159,219,131,44,101,69,219,94,252,197,18,157,97,250,240,163,16,26,234,163,49,26,52,2,77,6,0,180,29,79,132,244,184,189,137,239,156,12,134,182,72,28,207,178,88,203,82,230,175,180,59,137,110,117,91,17,31,221,150,37,180,179,214,128,174,225,106,195,51,98,13,128,110,60,135,76,104,163,196,175,198,88,111,74,133,130,236,101,43,76,33,27,3,41,108,210,82,100,80,138,37,95,107,14,168,60,227,181,226,75,212,149,81,36,31,122,222,37,144,223,189,239,56,100,191,63,100,128,190,1,24,142,0,62,

View file

@ -0,0 +1,27 @@
topic "";
[ $$0,0#00000000000000000000000000000000:Default]
[{_}%RU-RU
[ {{5625:4375f0;g0;@(93.94.144)-1 [s0;=*@2 &]
[s0;=%% [*@2 Программа Ведения адресов в формате
XML]&]
[s0;=*@2%- &]
[s0;=%% [*@(184.185.234)+184 AddressBook`-XML2]&]
[s0;=*@(184.185.234)%- &]
[s0;=%% [*@(235) (C) Copyright Ultimate`+`+ team]&]
[s0;=*C@(184.185.234)4%- ]
::@2 [s0;%- ]
::@(194.194.239) [s0;*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234)%- &]
[s0;%% [*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234) www.ultimatepp.org]&]
[s0;=*^http`:`/`/www`.svsoft`.ru`/^@(184.185.234)%- ]
:: [s0;>%% [*^mailto`:mail`@svsoft`.ru^@(184.185.234) mail`@gmail.com]]
::@(93.94.144)-1 [s0;=*2%- &]
[s0;=%% [*@2 Программа использует технологию][*
][*@(255.255.192) Ultimate`+`+]]
::@2 [s0;%- ]
::@(93.94.144)-1 [s0;=%% [@2 Все права защищены. Копирование,
продажа и использование без действительной
лицензии запрещены ]&]
[s0;=%- &]
[s0;=%- ]
::@2 [s0;%- ]}}&]
[s0; ]

View file

@ -0,0 +1,6 @@
TITLE("")
COMPRESSED
120,156,149,83,93,111,18,65,20,253,43,55,177,24,22,202,178,159,90,150,104,80,124,212,151,38,36,38,155,173,67,44,80,34,100,9,187,72,12,33,105,235,71,210,104,52,233,163,47,254,5,196,174,208,168,240,23,102,254,145,103,6,250,1,212,152,178,204,238,206,189,231,222,123,238,220,179,62,109,109,25,219,198,29,227,63,63,239,73,173,94,237,181,226,192,31,188,24,166,118,43,185,221,10,249,52,24,184,247,44,215,115,236,251,110,221,40,54,140,98,41,93,176,245,130,163,155,142,163,229,76,242,35,163,248,32,83,178,232,110,160,94,83,41,242,229,150,127,19,135,124,198,127,224,62,226,191,113,141,136,159,242,132,159,97,253,225,83,241,133,96,63,131,55,17,71,192,141,9,127,241,142,207,96,1,86,28,243,132,158,63,123,26,44,179,34,99,42,183,90,34,109,238,128,196,142,171,91,182,163,101,177,161,71,251,251,221,90,20,61,14,195,87,44,135,96,235,42,122,5,188,145,201,178,93,141,210,101,141,202,97,231,77,183,217,56,136,169,210,138,155,237,106,92,99,89,
150,165,184,86,109,95,230,42,175,38,115,144,45,240,60,116,44,221,203,77,218,148,7,132,101,217,5,77,57,50,123,7,113,220,97,30,203,179,124,191,223,103,122,244,58,10,235,49,211,187,61,150,223,251,7,63,69,239,22,129,4,128,222,91,50,239,116,244,176,219,184,164,125,187,250,104,66,209,126,184,160,208,174,54,91,113,200,60,249,100,165,171,208,245,250,11,127,67,62,244,151,97,59,80,103,113,131,92,54,134,121,179,94,166,144,198,28,198,95,226,19,159,136,183,144,202,49,73,101,136,247,144,16,204,18,15,208,231,192,207,16,5,106,146,46,152,96,153,5,75,91,153,97,176,57,163,77,94,146,139,164,114,138,186,9,241,185,226,50,150,76,38,144,228,9,74,157,72,245,138,143,58,241,175,40,62,135,69,146,6,68,106,154,39,219,139,160,25,84,62,226,63,85,11,107,93,92,71,19,255,142,116,19,82,223,196,185,56,66,107,99,160,209,160,194,202,22,207,9,93,78,197,7,245,209,76,16,52,85,92,84,149,228,130,13,93,12,249,218,169,174,139,114,56,92,120,
40,248,11,132,25,153,60,

View file

@ -0,0 +1,8 @@
TOPIC("Splash$en-us")
#include "Splash$en-us.tppi"
END_TOPIC
TOPIC("Splash$ru-ru")
#include "Splash$ru-ru.tppi"
END_TOPIC