Elkészült a Qtdict v0.3.5

A tervezettnél később bár, de használható állapotba került a Qtdict 0.3.5-ös verziója, mely egy sor újdonságot hoz magával:
A támogatott nyelvek száma 2-ről 7-re nőtt a v0.3.1-óta, és egy teljes újratervezésen esett át, melynek jelei a felhasználói felületen is mutatkoznak.
Ezen kívül kapott egy Windowsos installert/uninstallert is (Nullsoft Scriptable Install System), mely a batch alapú telepítőt váltja.

Letölthető innen.

A jelenleg használt online adatbázisok és nyelveik:

Teszteljétek minél többen, várom az ötleteket, javaslatokat, és ha esetleg valaki készít egy Debian/Ubuntu csomagot, azt is hálásan megköszönöm.

Screenshot:
Qtdict
Qtdict installer (wine)

Hozzászólások

"..teljes újratervezésen esett át, melynek jelei a felhasználói felületen is mutatkoznak..

Screenshot? :)

Jó ötlet a git, legalább bele tudtam nézni tömörítgetés nélkül.

Pár megjegyzés:
dictionaries.h:
Ezt szerintem írd át: :)


  24 #ifndef DICTIONARYES_H
  25 #define DICTIONARYES_H

online_dictionary.h:
Mint ahogy írod ez egy abstract class.
Tehát sohasem példányosítjuk. Ilyenkor szokták a konstruktort protected-re állítani. Így fordítási időben kiderül, hogy nem lehet példányosítani, de persze a származtatott osztályok elérik a konstruktort.

Plusz megtehetetd, hogy a virtuális fv-eknek nem adsz implementációt:


virtual bool search(const settings &)=0;

Ez azért jó, mert így nem fordulhat elő, hogy származtatáskor valaki véletlenül nem implementál egy virtuális fv-t.
(Persze csak azoknál a virt. fv-eknél kell ez amiket kötelező implementálni. Ha van értelmes default viselkedés, akkor nem kell.)

main.cpp:


qtdict * mw = new qtdict();
mw->show();

delete? Értem én, hogy az OS kilövi, de így nem szép.
Mellesleg felesleges is:


qtdict mw;
mw.show();

A névadási szokásaid nekem nagyon furcsák, két szokást keversz:
- a típusneveket kisbetűvel kezded, ezt a STL-en kívül kb sehol nem látni (na jó, boost). Itt a szóhatárokat '_'-vel jelölöd.
- a tagfv-eknél, és a tagváltozóknál viszont nagybetű mutatja a szóhatárokat. (Camel Casing)

Egyik módszerrel sincs baj, csak a kettő keverése szerintem kicsit zavaró. Leginkább a kisbetűs típusnevek zavarnak...

Különben nem rossz (így 10 perc után :) ), tetszik, hogy nem inlude-olsz mindent feleslegesen, egyedül az utils.h elején látok valami tobzódást. :)

Majd még futtatom is, megnézem a GUI-t.

Csak így tovább!

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Több szem többet lát. Köszönöm.
Hát igen, a keverék elnevezések nagyrészt abból a skizofréniából fakadnak, hogy egyetemen C++-ból belém nevelték (legalább is próbálták) az STL-t. Viszont nagyrészt Javaban programozok, de a C++-t jobban szeretem, így tudatalatt mindig becsúsznak az STL-es kisbetűs, "_"-os elnevezések, aztán lustaságból úgy maradnak. Javítom mindet.
____________________________________________________________
Slackware 12.1 - linux-2.6.24.4-olorin - KDE 3.5.9

Az STL-lel nincs baj, sőt!
Tagfv-eknél sincs bajom a '_'-os jelöléssel, egyedül a kisbetűs tipusnév az ami zavar.
Az én szokásom az, hogy mindig annak a libnek névadási stílusához alkalmazkodom, ami használok. Jelen esetben a Qt-hez.
(Ez alól két kivétel van, nem használok kisbetűs típusneveket, illetve a tagváltozókat m_ prefixszel látom el. Ez utóbbi kódkiegészítés használata közben is előny.)

Itt írnak okosakat: http://doc.trolltech.com/qq/qq13-apis.html
Persze ezek ajánlások, és el lehet térni...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Kicsit jobban belenéztem...

qtdict.cpp:

Eleve ezek a "QList<QPair<QString,QList<..." dolgok nagyon nem szépek. Az a minimum, hogy szép typedef-eket kapjanak (WordList, DictList, akármi, a különböző szinteknek külön), legalább magadat sem szivatnád, ha egy ilyen változót kell deklarálni.
El lehetne gondolkozni rajta nem lenne-e szebb egy új típust bevezetni, mert valójában egy fát implementáltál.
Valami ilyesmire gondolok:
http://doc.trolltech.com/4.3/itemviews-simpletreemodel.html
(A model/view megközelítésen is lehet gondolkozni, de az elég nagy meló, bár később megtérülhet.)

A foreach jó dolog, de így ahogy te használod feleslegesen lassú.
Minden iterációban lemásolja a változót, igaz elvileg a Qt-ben sokminden implicit shared, de egyrészt nem minden, másrészt még így is minek másolni ha nem muszáj? Használj const ref-et, vagy mutatót.
Gondolom azért nem ezt tetted, mert csúnya volt a típus... Na erre van a typedef.

Az utils.h tele van ronda dolgokkal.
Typedef-ek hiánya miatt fél év mulva sokat fogsz gondolkozni rajta, mi a franc is történik ezekben a fv-ekben...
(Hidd el, velem már megtörtént... Igaz én tuple-t használtam az még rosszabb mint a pair. :) )
Szerintem átgondoltabb tervezéssel megszabadulhatnál ezektől a konverziós fv-ektől.

Mi ez a rengeteg include az utils elején? Miért nem ott include-olod, ahol használni is fogod őket?

dictionaries.cpp:
htmlToLatin, latinToHex csak a cab ban használatos, miért van az ősosztályban?
Ha úgy érzed kellhet még, csinálhatnál saját QTextCodec-et:
http://doc.trolltech.com/4.3/qtextcodec.html#creating-your-own-codec-cl…

A htmlList feltöltése... Hmmm... Sajátos. :)
Szintaktikai cukor lenne (egy teljesen felesleges copy constructor hívással), ha nem lenne az első dolgod vele, hogy átkonvertáld...

GUI:
Sokat ront a használhatóságon, hogy a második oszlopban a szó különböző fordításai egy-egy mezőben vannak, így nem lehet egyesével vágólapra másolni őket. Mindenképp külön mező kéne.

További ötletek:
- Esetleg egy szóra duplán kattintva elindulhatna egy új keresés. Ez hasznos mikor az ember rokonértelmű szavak között keresi a legmegfelelőbbet.
- Drag and Drop keresés, illetve az eredmény.
- Model/View megközelítés. Ez első körben sok meló, de később esetleg megéri.

Kb ennyi. Remélem nem vettem el a kedved. :)

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Üdv!
Egyáltalán nem vetted el a kedvem! Örülök, hogy van aki értelmesen tud tanácsokat adni, és próbálom megfogadni őket.
Ha lesz kis időm átdolgozom a ronda template típusokat. Sok kényszermegoldás van még benne, ami természetesen a tapasztalatlanságomból fakad, ezért is köszönöm, hogy megosztod velem a véleményed.
____________________________________________________________
Slackware 12.1 - linux-2.6.24.4-olorin - KDE 3.5.9