syncing uppdev

git-svn-id: svn://ultimatepp.org/upp/trunk@1505 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2009-08-13 13:40:35 +00:00
parent 4a8fb4c7b0
commit 8c030b0c5a
7 changed files with 110 additions and 87 deletions

View file

@ -0,0 +1,10 @@
uses
CtrlLib,
Report;
file
main.cpp;
mainconfig
"" = "GUI";

View file

@ -0,0 +1,5 @@
#ifndef _DrawingReport_icpp_init_stub
#define _DrawingReport_icpp_init_stub
#include "CtrlLib/init"
#include "Report/init"
#endif

View file

@ -0,0 +1,43 @@
#include <CtrlLib/CtrlLib.h>
#include <Report/Report.h>
using namespace Upp;
void Print(String text)
{
int top = 1;
int left = 1;
int sizex = 4600;
int sizey = 6800;
Size sz(sizex-(2*top),sizey-(2*left));
String txt = "[ $$0,0#00000000000000000000000000000000:Default]\n[{_} \n[s0; [*1 Seite $$P]&]\n[s0;*1 &]\n[ {{10000<64;h1;^t/13b/4@(229) [s0; [*1 Artikel]]\n::@2 [s0; [1 1]]\n:: [s0; [1 2]&]\n[s0; [1 3]]\n:: [s0; [1 040114]]\n:: [s0; [1 5]]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0; [1 xxx]]\n:: [s0; [1 xxx]]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]\n:: [s0;1 ]}}&]\n[s0;*2 ]";
Report rep;
rep.SetPageSize(sz);
rep.Put(txt);
Size size(rep.GetSize());
Report report(size);
Perform(rep,"Original");
const Array <Drawing>& aDw = rep.GetPages();
for(int i = 0; i < aDw.GetCount(); i++)
{
if(i>0)
report.NewPage();
report.DrawDrawing(size,aDw[i]);
}
Perform(report,"copy");
}
GUI_APP_MAIN
{
Print("Just a test!");
}

View file

@ -1,87 +0,0 @@
#include "CtrlLib/CtrlLib.h"
#define LAYOUTFILE <GuiMT/Divisors.lay>
#include <CtrlCore/lay.h>
struct Divisors : public WithDivisorsLayout<TopWindow> {
typedef Divisors CLASSNAME;
void TestNumber();
void ShowResult(int line, String result);
void SetTitle();
Divisors();
~Divisors();
};
struct DivisorsInfo {
int line;
uint64 number;
Divisors *gui;
};
void WorkerThread(DivisorsInfo f)
{
String r;
int divisors = 0;
uint64 max = (uint64)sqrt((double)f.number) + 1;
for(uint64 i = 1; i < max; i++) {
if(Thread::IsShutdownThreads())
break;
if(f.number % i == 0) {
r << ' ' << i;
PostCallback(callback2(f.gui, &Divisors::ShowResult, f.line, "working..." + r));
divisors++;
}
}
r << ' ' << f.number;
PostCallback(callback2(f.gui, &Divisors::ShowResult, f.line, AsString(divisors + 1) + ": " + r));
}
void Divisors::TestNumber()
{
if(IsNull(editor))
return;
DivisorsInfo f;
f.number = stou64((String)~editor);
f.line = table.GetCount();
table.Add(AsString(f.number), "working...");
f.gui = this;
Thread().Run(callback1(WorkerThread, f));
SetTitle();
}
void Divisors::ShowResult(int line, String result)
{
table.Set(line, 1, result);
SetTitle();
}
void Divisors::SetTitle()
{
Title(AsString(Thread::GetCount()) + " threads");
}
Divisors::Divisors()
{
CtrlLayout(*this, "Window title");
Sizeable().Zoomable();
push <<= THISBACK(TestNumber);
editor.SetFilter(CharFilterDigit);
table.AddColumn("Number");
table.AddColumn("Divisors");
table.ColumnWidths("135 527");
table.NoCursor();
SetTitle();
}
Divisors::~Divisors()
{
Thread::ShutdownThreads();
}
GUI_APP_MAIN
{
Divisors().Run();
}

52
uppdev/GuiMTtest/main.cpp Normal file
View file

@ -0,0 +1,52 @@
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
struct App : TopWindow {
Thread work;
void Work();
ArrayCtrl list;
typedef App CLASSNAME;
App();
~App();
};
void App::Work()
{
int q = 0;
for(;;) {
Sleep(1);
GuiLock __;
if(Thread::IsShutdownThreads())
break;
DLOG("BEGIN");
if(list.GetCount() > 100)
list.Clear();
list.Add((int64)Random());
DLOG("END");
}
}
App::App()
{
list.AddColumn("Test");
list.AddColumn("Test2", 20);
Add(list.SizePos());
work.Run(THISBACK(Work));
}
App::~App()
{
Thread::ShutdownThreads();
work.Wait();
}
GUI_APP_MAIN
{
App app;
app.Run();
}