3
Version 3.1.2, 28 April 2003
4
(C) 2000-2003 Zavolzhsky Alexandr <zavolzhsky@mail.ru>
3
Version 3.2.1, 17 July 2004
4
(C) 2000-2004 Zavolzhsky Alexandr <zavolzhsky@mail.ru>
6
6
This program is free software; you can redistribute it and/or modify
7
7
it under the terms of the GNU General Public License as published by
38
38
KSocrat::KSocrat(const char *name) : KMainWindow(0L,name){
41
sconfigure = new SConfigure();
41
sconfigure = new SConfigure(this);
43
43
dw = new DockWidget(this);
47
45
connect(edWord,SIGNAL(returnPressed()),SLOT(translate()));
48
46
connect(btClear,SIGNAL(clicked()),this,SLOT(clearall()));
47
connect(btTrClip,SIGNAL(clicked()),this,SLOT(translateClipboard()));
49
48
connect(btTranslate,SIGNAL(clicked()),this,SLOT(translate()));
49
connect(btTranslate,SIGNAL(clicked()),edWord,SLOT(returnPressed()));
50
50
connect(btSave,SIGNAL(clicked()),this,SLOT(save()));
51
51
connect(btAbout,SIGNAL(clicked()),this,SLOT(about()));
52
52
connect(btConfigure,SIGNAL(clicked()),this,SLOT(configure()));
53
connect(btExit,SIGNAL(clicked()),this,SLOT(quit()));
54
connect(cbSentTrans,SIGNAL(clicked()),this,SLOT(setKeepTransState()));
53
connect(btExit,SIGNAL(clicked()),kapp,SLOT(quit()));
55
54
connect(kapp,SIGNAL(shutDown()),this,SLOT(appClosing()));
56
55
connect(btHide,SIGNAL(clicked()),this,SLOT(hide()));
64
63
skey->connectItem(skey->insertItem(ALT+Key_S),this,SLOT(save()));
65
64
skey->connectItem(skey->insertItem(ALT+Key_A),this,SLOT(about()));
66
65
skey->connectItem(skey->insertItem(ALT+Key_P),this,SLOT(configure()));
67
skey->connectItem(skey->insertItem(ALT+Key_X),this,SLOT(quit()));
66
skey->connectItem(skey->insertItem(ALT+Key_X),kapp,SLOT(quit()));
68
67
skey->connectItem(skey->insertItem(ALT+Key_C),this,SLOT(clearall()));
69
68
skey->connectItem(skey->insertItem(ALT+Key_H),this,SLOT(hide()));
103
if (!cbKeepTrans->isChecked()) {
105
107
if (cbSentTrans->isChecked()) {
106
meResult->insertLine(i18n("TRANSLATING: ") + sWord);
107
meResult->insertLine("====================");
109
sl = QStringList::split(" ",sWord,false);
111
for ( QStringList::Iterator it = sl.begin(); it != sl.end(); ++it ) {
113
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
114
QCString csWord = codec->fromUnicode(sWord);
116
prGrep.clearArguments();
117
prGrep << "grep" << "\"^"+ csWord + "\\ --" + "\"" << sDic;
120
if (!prGrep.start(KProcess::NotifyOnExit,KProcess::Stdout)) {
121
KMessageBox::error(this,i18n("Cannot execute grep utility!"),i18n("Error"));
127
if (!prGrep.isRunning()) {
128
if (prGrep.exitStatus() != 0) {
133
kapp->processEvents();
108
meResult->append(i18n("TRANSLATING: ") + sWord);
109
meResult->append("====================");
110
if(!grepSentence(true))
111
btTranslate->setEnabled(true);
141
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
142
QCString csWord = codec->fromUnicode(sWord);
144
prGrep.clearArguments();
145
prGrep << "grep" << "\"^"+ csWord +"\"" << sDic;
147
if (!cbKeepTrans->isChecked()) {
152
if (!prGrep.start(KProcess::NotifyOnExit,KProcess::Stdout)) {
153
KMessageBox::error(this,i18n("Cannot execute grep utility!"),i18n("Error"));
115
btTranslate->setEnabled(true);
160
121
void KSocrat::save(){
161
QString sName = KFileDialog::getSaveFileName("/");
122
QString sName = KFileDialog::getSaveFileName(QDir::homeDirPath());
162
123
if (!sName.isEmpty()) {
163
124
if (sName.right(1)=="/") {
164
125
KMessageBox::error(this,i18n("You need to specify name of the file."),i18n("Warning"));
182
143
void KSocrat::done(){
183
btTranslate->setEnabled(true);
144
if(!sMsgs.isEmpty()) {
145
meResult->append(sMsgs);
146
meResult->append("--------------------------------");
153
btTranslate->setEnabled(true);
186
157
void KSocrat::gotResult(KProcess *,char *msg, int len){
188
158
QTextCodec* codec = QTextCodec::codecForName("KOI8-R");
189
sMsg = codec->toUnicode(msg,len);
191
meResult->insertLine(sMsg);
192
meResult->insertLine("--------------------------------");
159
sMsgs += codec->toUnicode(msg,len);
161
edWord->lineEdit()->home(false);
162
edWord->lineEdit()->end(true);
196
165
void KSocrat::gotError(KProcess *,char *msg,int len){
198
QTextCodec* codec = QTextCodec::codecForName("KOI8-R");
167
QTextCodec* codec = QTextCodec::codecForLocale();
199
168
sMsg = codec->toUnicode(msg,len);
200
169
KMessageBox::information(this,sMsg,i18n("Warning"));
204
172
void KSocrat::about(){
263
226
edWord->setFocus();
266
void KSocrat::setKeepTransState() {
267
if (cbSentTrans->isChecked()) {
268
cbKeepTrans->setChecked(true);
269
cbKeepTrans->setEnabled(false);
272
cbKeepTrans->setChecked(false);
273
cbKeepTrans->setEnabled(true);
277
229
void KSocrat::appClosing() {
231
saveMainWindowSettings(kapp->config(), "MainWindow");
281
234
void KSocrat::saveHistory() {
285
238
QStringList slHistory;
286
239
for(int i = 0; i<= (edWord->count()) - 1; i++) {
287
slHistory.append(edWord->text(i));
240
QString curText = edWord->text(i);
241
if (slHistory.findIndex(curText) == -1) {
242
slHistory.append(curText);
289
245
config->writeEntry("History",slHistory);
293
void KSocrat::resizeEvent (QResizeEvent * ) {
294
meResult->setGeometry(5,115,this->width() - 10,this->height() - 160);
295
btSave->setGeometry(5,this->height() - 32,60,24);
296
btConfigure->setGeometry(70,this->height() - 32,60,24);
297
btAbout->setGeometry(135,this->height() - 32,60,24);
298
btHide->setGeometry(200,this->height() - 32,50,24);
299
btExit->setGeometry(255,this->height() - 32,50,24);
302
249
void KSocrat::show_hide(){
303
250
if (this->isVisible()) {
255
KWin::setActiveWindow(winId());
259
bool KSocrat::grep() {
262
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
263
QCString csWord = codec->fromUnicode(sWord);
265
prGrep.clearArguments();
266
prGrep << "grep" << "^" + csWord << sDic;
269
bResult = prGrep.start(KProcess::NotifyOnExit,KProcess::AllOutput);
271
KMessageBox::error(this,i18n("Cannot execute grep utility!"),i18n("Error"));
277
bool KSocrat::grepSentence(bool bFirstTime) {
278
static QStringList sl;
279
static QStringList::Iterator it;
283
sl = QStringList::split(" ", sWord, false);
285
iMultiPass = sl.count();
292
QString sWord(*it++);
293
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
294
QCString csWord = codec->fromUnicode(sWord);
296
prGrep.clearArguments();
297
prGrep << "grep" << "^" + csWord + " --" << sDic;
300
bResult = prGrep.start(KProcess::NotifyOnExit,KProcess::AllOutput);
302
KMessageBox::error(this,i18n("Cannot execute grep utility!"),i18n("Error"));
308
void KSocrat::polish() {
310
kapp->sendPostedEvents();
312
// Set default window size to fit 12 lines of text
313
resize(minimumSizeHint().width(), height() +
314
(meResult->fontMetrics().lineSpacing() * 12 + 6 - meResult->height()));
316
applyMainWindowSettings(kapp->config(), "MainWindow");
318
QRect scr = QApplication::desktop()->screenGeometry();
319
move(scr.center() - rect().center());
322
void KSocrat::translateClipboard() {
325
QClipboard *cb = kapp->clipboard();
326
edWord->insertItem(cb->text(QClipboard::Clipboard),0);