Home » Extra libraries, Code snippets, applications etc. » Applications created with U++ » Google Translator
Re: Google Translator [message #20426 is a reply to message #20425] |
Wed, 18 March 2009 10:37   |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
Depends on how you want it to work. First you should be running the Http request in a Thread so that you can still process Gui messages.
Normally to get a progress bar on an Http request you would just pass in a Gate (the Progress class has an operator for this) that the HttpClient uses to update the progress indicator. Remember to create the Gate outside of the Http thread or it won't work properly (I think).
In your case however, I don't think the amount of data you're recieving is actually large enough to make a progress bar work properly. It will do nothing until connection is established and then update and close almost immediately. I'd suggest faking it with a timer and a looping Progress indicator. Something like:
(Add to header)
Progress progress;
String result;
volatile Atomic translating;
enum {
TIMEID_PROGRESS = Ctrl::TIMEID_COUNT,
TIMEID_COUNT
};
void HttpThread(String url, String post, Gate2<int, int> _progress);
void UpdateProgress();
bool CheckCancel(int, int);
Source:
void GoogleTranslator::TranslateText(){
String from = inputwindow.fromlanguagectrl.GetKey(inputwindow.fromlanguagectrl.GetIndex());
String to = inputwindow.tolanguagectrl.GetKey(inputwindow.tolanguagectrl.GetIndex());
//... need to add proxy
//http_client.Proxy("");
String url = "www.google.com/translate_a/t?client=t&sl=" + from + "&tl=" + to;
String post = String("text=") << inputwindow.textfrom.GetData();
progress.Reset();
progress.SetText("Contacting Google Translator");
progress.Title("Translating");
progress.Set(0, 50);
AtomicWrite(translating, 1);
SetTimeCallback(-200, THISBACK(UpdateProgress), TIMEID_PROGRESS);
Thread().Run(THISBACK3(HttpThread, url, post, THISBACK(CheckCancel)));
while(AtomicRead(translating)) {
ProcessEvents();
GuiSleep(300);
}
KillTimeCallback(TIMEID_PROGRESS);
progress.Close();
textto.Set(result, CHARSET_UTF8);
}
void GoogleTranslator::UpdateProgress()
{
int p = progress.GetPos() + 1;
progress.Set((p > progress.GetTotal()) ? 0 : p, progress.GetTotal());
}
bool GoogleTranslator::CheckCancel(int, int)
{
return progress.Canceled();
}
void GoogleTranslator::HttpThread(String url, String post, Gate2<int, int> _progress)
{
HttpClient http_client;
http_client.URL(url);
//http_client.Agent("Mozilla/5.0");
http_client.TimeoutMsecs(5000);
http_client.Post();
http_client.PostData(post);
result = http_client.ExecuteRedirect(HttpClient::DEFAULT_MAX_REDIRECT,
HttpClient::DEFAULT_RETRIES, _progress);
result = Nvl(result
,String(", error:")<<Nvl(http_client.GetError(), "")
<<", status: "<<http_client.GetStatusCode()<<", "<<http_client.GetStatusLine()
<<", header: "<<http_client.GetHeaders());
AtomicWrite(translating, 0);
}
|
|
|
 |
|
Google Translator
By: tojocky on Mon, 16 March 2009 13:06
|
 |
|
Re: Google Translator
By: tojocky on Tue, 17 March 2009 22:54
|
 |
|
Re: Google Translator
By: tojocky on Wed, 18 March 2009 10:00
|
 |
|
Re: Google Translator
By: mrjt on Wed, 18 March 2009 10:37
|
 |
|
Re: Google Translator
By: tojocky on Wed, 18 March 2009 10:55
|
 |
|
Re: Google Translator
By: forlano on Wed, 06 May 2009 13:01
|
 |
|
Re: Google Translator
By: mrjt on Wed, 06 May 2009 13:12
|
 |
|
Re: Google Translator
By: forlano on Wed, 06 May 2009 20:22
|
 |
|
Re: Google Translator
By: koldo on Thu, 07 May 2009 01:10
|
 |
|
Re: Google Translator
By: tojocky on Thu, 07 May 2009 21:09
|
 |
|
Re: Google Translator
By: tojocky on Thu, 21 May 2009 10:56
|
 |
|
Re: Google Translator
|
 |
|
Re: Google Translator
By: tojocky on Fri, 22 May 2009 08:09
|
 |
|
Re: Google Translator
By: tojocky on Sat, 23 May 2009 08:48
|
 |
|
Re: Google Translator
By: forlano on Sat, 23 May 2009 12:41
|
 |
|
Re: Google Translator
By: tojocky on Sat, 23 May 2009 13:29
|
 |
|
Re: Google Translator
By: tojocky on Wed, 27 May 2009 08:40
|
 |
|
Re: Google Translator
|
 |
|
Re: Google Translator
By: tojocky on Thu, 28 May 2009 10:10
|
 |
|
Re: Google Translator
By: Didier on Wed, 27 May 2009 21:04
|
 |
|
Re: Google Translator
By: koldo on Wed, 27 May 2009 22:03
|
 |
|
Re: Google Translator
By: tojocky on Sat, 30 May 2009 05:32
|
 |
|
Re: Google Translator
By: koldo on Mon, 01 June 2009 12:13
|
 |
|
Re: Google Translator
By: tojocky on Mon, 01 June 2009 12:59
|
 |
|
Re: Google Translator
By: koldo on Mon, 01 June 2009 13:57
|
 |
|
Re: Google Translator
By: tojocky on Mon, 01 June 2009 15:20
|
 |
|
Re: Google Translator
By: koldo on Mon, 01 June 2009 16:42
|
 |
|
Re: Google Translator
By: tojocky on Thu, 26 November 2009 10:48
|
 |
|
Re: Google Translator
By: masu on Thu, 26 November 2009 14:21
|
 |
|
Re: Google Translator
By: tojocky on Fri, 27 November 2009 09:53
|
 |
|
Re: Google Translator
By: koldo on Fri, 27 November 2009 12:31
|
 |
|
Re: Google Translator
By: tojocky on Fri, 27 November 2009 13:30
|
 |
|
Re: Google Translator
By: masu on Fri, 27 November 2009 14:05
|
 |
|
Re: Google Translator
By: koldo on Fri, 27 November 2009 14:16
|
 |
|
Re: Google Translator
By: tojocky on Fri, 27 November 2009 16:08
|
 |
|
Re: Google Translator
By: tojocky on Fri, 27 November 2009 19:53
|
 |
|
Re: Google Translator
By: koldo on Mon, 30 November 2009 08:50
|
 |
|
Re: Google Translator
By: mirek on Tue, 01 December 2009 08:27
|
 |
|
Re: Google Translator
By: tojocky on Sun, 13 December 2009 10:40
|
 |
|
Re: Google Translator
By: tojocky on Sun, 27 December 2009 18:37
|
 |
|
Re: Google Translator
|
 |
|
Re: Google Translator
By: tojocky on Sun, 27 December 2009 21:58
|
 |
|
Re: Google Translator
By: koldo on Sun, 27 December 2009 22:15
|
 |
|
Re: Google Translator
|
 |
|
Re: Google Translator
By: tojocky on Sat, 30 January 2010 15:33
|
Goto Forum:
Current Time: Sun Apr 27 18:31:03 CEST 2025
Total time taken to generate the page: 0.01250 seconds
|