GUI, LaTeX a C++ czyli jak "oklikać" program

0

Witam wszystkich,
czytałem regulamin i FAQ, i bardzo nie zgrzeszę zakładając ten temat.

Na początku coś o mnie: jestem już prawie inżynierem budownictwa, na imię mam Piotr i mam w planach napisanie programu. Moje doświadczenie to Mathcad, C, C++, XHTML, PHP i nie daleko padające jabłka od tego co napisałem.

Krótki opis programu:
Program będzie służył obliczaniu konstrukcji wg najnowszej normy Eurokod 2 (Eurocode 2, PN-EN 1992-1-1). Program wymagać będzie użycia tylko kilku podstawowych funkcji i prostych operacji na liczbach (if, for, while, dodawania, mnożenie, pierwiastek, potęga). W zasadzie będzie to beznadziejnie prosty program, który będzie tylko podstawiał wartości do wzorów wg algorytmów.

To co napisałem wyżej, potrafię zrobić, bo liczyłem już konstrukcje i znam C++ na tyle, że bez problemu sobie z tym wszystkim poradzę.

Dlaczego więc tutaj piszę?
Bo są dwa zagadnienia, które muszę poznać, ponieważ mam zamiar je zastosować, a nie znam ich na tyle dobrze by po prostu usiąść i robić:

  1. LaTeX - ze względu na używanie wzorów i chęci generacji raportu z całego toku obliczeń, potrzebuję go by generować te wzory. Idea jest taka:
  • do każdego działania przypisana jest jeszcze jedna zmienna, która zawiera postać równania zapisaną w LaTeKsie. Np. dzialanie := (a+b)/c2; dzialanie_latex := "(a+b)/c2";, gdzie to ostatnie będzie wyświetlać równanie
  • I teraz cała zabawa. Owy raport powinien zostać na końcu wyeksportowany do jakiegoś pliku, który da się zobaczyć bez posiadania jakiegoś szczególnego oprogramowania, np. pdf, ponadto całość wprowadzonych danych powinna zostać zapisana do pliku *.xml. Wyników nie trzeba zapisywać lub również do *xml.
  • i tu pytanie: w jakiż to magiczny sposób przejść ze zwykłego "cout" do takiego pliku pdf/xml z raportem i wprowadzonymi danymi?
  1. GUI - jak z tematu; potrafię wszystko napisać pod C++, ale nie mam pojęcia jak zrobić do tego jakieś klikalne okienko. Jeśli chodzi o wizję, jak to będzie zorganizowane, to naturalnie - wiem doskonale, mam narysowane na kartkach :) natomiast jak to zrobić to nie wiem. Patrzyłem na C++ Builder, ale szczerze nie rozumiem jak się tam podstawia zmienne, jak ustawia ify i inne. Wolałbym mieć możliwość panowania nad tym wszystkim i wiedzieć co i dlaczego.

Jakim oprogramowanie dysponuje:

  • gdzies tam mam C++ Builder chyba 6 personal
  • Dev-C++
  • Visual Studio 2005 Professional Edition (z MSDN AA)
  • Visual C++ 2005 Express Edition (z MSDN AA) - mam też C#

Wydaje mi się że C++ jest najlepszym wyborem, gdyby jednak miało to być o niebo łatwiej zrobić w czymś innym, to jestem otwarty na naukę innego języka.

Fajnie by było gdyby program dało się skompilować później pod Linuksem, żeby mieć wersję pod to i pod to. Nie jest to jednak priorytet.

Na koniec jeszcze zapraszam wszystkich chętnych do pisania programu lub udzielania innej pomocy. Jestem otwarty na wszelkie propozycje.

Dziękuję za poświęcony czas na czytanie tego długiego posta i z góry dziękuję za wszystkie odpowiedzi.

--
Pozdrawiam,
Piotr Turkowski

//hm, starczy przyklejenia ;) - R

0
Piotr Turkowski napisał(a)

[...]- I teraz cała zabawa. Owy raport powinien zostać na końcu wyeksportowany do jakiegoś pliku, który da się zobaczyć bez posiadania jakiegoś szczególnego oprogramowania, np. pdf, ponadto całość wprowadzonych danych powinna zostać zapisana do pliku *.xml. Wyników nie trzeba zapisywać lub również do *xml.

  • i tu pytanie: w jakiż to magiczny sposób przejść ze zwykłego "cout" do takiego pliku pdf/xml z raportem i wprowadzonymi danymi?

Tutaj żadnej magii nie ma pdfa to w czystym C++ nie wygenerujesz ;) jakieś biblioteki do tego będa ci potrzebne, xml to będzie zwykły tekst? wystarczy użycie klasy fstream

Piotr Turkowski napisał(a)
  1. GUI - jak z tematu; potrafię wszystko napisać pod C++, ale nie mam pojęcia jak zrobić do tego jakieś klikalne okienko. Jeśli chodzi o wizję, jak to będzie zorganizowane, to naturalnie - wiem doskonale, mam narysowane na kartkach :) natomiast jak to zrobić to nie wiem. Patrzyłem na C++ Builder, ale szczerze nie rozumiem jak się tam podstawia zmienne, jak ustawia ify i inne. Wolałbym mieć możliwość panowania nad tym wszystkim i wiedzieć co i dlaczego.

http://darkcult.gamedev.pl/
www.winapi.rox.pl

po opanowaniu tych treści powinieneś już wystarczająco władać "okienkiem" ;)

0

Jeśli GUI ma być jednak wieloplatformowe, to zainteresuj się Qt, wxWidgets, GTK. Jeśli to jakieś proste, to może Tk (cpptk)?
Swoją drogą, Qt ma też wiele klas do obsługi XML-a (jeśli używać Qt, to czemu z nich nie skorzystać)

Co do PDF, to obadaj http://www.pdflib.com/

0

Zainstalowałem już to QT. Wygląda miło. Ja w zasadzie będę potrzebował checkboxów, list, małych formularzy, zakładek, nic szczególnie niesamowitego. Chce miec tylko mozliwosc latwego przejscia i definiowania, ze np. wartosc wpisana tutaj w tym polu ma byc przypisana do do wartosc1. A jak ktos zaznaczy checkboxa, to zmienna2 zmieni swoja wartosc na "1".
To wlasnie to jest dla mnie zagadka poki co. :) Wiem, ze to pewnie jest banalne, ale jak na start mam 4 strony kodu to sie gubie.

Odnosnie LaTeX-a szukałem na sourceforge.net czegos co by zrobilo to o czym pisalem, ale niestety TO czego potrzebuje jest w fazie pre-alpha :/.

Idealnym rozwiazaniem byloby posiadanie jakiegos malego programu, ktory mozna by wywolac komenda, i ktory zamienil by plik LaTeX-a chociazby do .ps, a najlepiej do pdf. Jesli chodzi o strukture pliku TeX, to przeciez jest czysty tekst. Podobnie jak *.xml.

A gdyby LaTeX nie wypalil, to moze do *.odf ? Wszak jest tam edytor rownan, i te rownania tez mozna pisac zwyklym tekstem.

PDFlib w wersji darmowej niestety nie pracuje z LaTeX-em, platna zreszta chyba tez nie.

0
Piotr Turkowski napisał(a)

A jak ktos zaznaczy checkboxa, to zmienna2 zmieni swoja wartosc na "1".
To wlasnie to jest dla mnie zagadka poki co. :)

zwykle kontrolki typu checkbox udostepniaja jakies wlasciwosci w stylu chkbox::IsChecked ktore mozesz w kazdej chwili odczytac i sprawdzic czy jest zaznaczony. czesto tez istnieje jakis mechanizm eventow/calbackow na ktore mozesz podpiac jakas swoja metode/funkcje i zostac poinformowany kazdorazowo o zmianie wartosci

Piotr Turkowski napisał(a)

Idealnym rozwiazaniem byloby posiadanie jakiegos malego programu, ktory mozna by wywolac komenda, i ktory zamienil by plik LaTeX-a chociazby do .ps, a najlepiej do pdf.

*tex na .ps ? na pewno jest taki programik.. przeciez to podstawa uzytkowania *texow.. podobni ejak ps->pdf!

Piotr Turkowski napisał(a)

Jesli chodzi o strukture pliku TeX, to przeciez jest czysty tekst. Podobnie jak *.xml.

i oba spokojnie wygenerujesz z poziomu c++ za pomoca iostreamow - ofstream. a potem tylko system/createprocess zeby odpalic konwerter tex->ps->pdf

Piotr Turkowski napisał(a)

A gdyby LaTeX nie wypalil, to moze do *.odf ? Wszak jest tam edytor rownan, i te rownania tez mozna pisac zwyklym tekstem.

to tez jakas mysl.. ale wydaje mi sie ze z texem bedzie latwiej

Piotr Turkowski napisał(a)

PDFlib w wersji darmowej niestety nie pracuje z LaTeX-em, platna zreszta chyba tez nie.

ale powinien wspolpracowac z PS'em. a konwerter LaTeX'a na postscript spokojnie znajdziesz

0

No to juz mnie wiecej wiem z jakich technologii bede musial skorzystac.

Ale przypomnialem sobie jeszcze jedno. Mianowicie chcialbym, by program byl w 3 jezykach. Nie wiele bedzie tlumaczenia, w zasadzie sa one gotowe, bo to po prostu teksty z normy. Nie musi to byc od razu, ale caly program powinien miec taka strukture, zeby sie to dalo latwo i elegancko zrobic.

Osobiscie myslalem nad plikiem *.xml jako baza danych, a moze da sie to zrobic jakos inaczej ? A jesli XML to w jaki sposob ? Ktos dysponuje jakims doswiadczeniem w tej kwestii, ew. wie gdzie szukac sprwdzonych informacji ?

0

To zależy niemal całkowicie od tego, jakie GUI wybierzesz, każdy system ma swoje specyficzne metody i rozwiązania do tworzenia multi-językowych aplikacji, własnego systemu tworzyć najczęściej się nie opłaca.

0

Z tego co zrozumiałem to potrzebujesz zrobić projekt - mam na myśli obliczenia i chcesz by było on w (La)TeX-u. Jeśli tak to może nie trzeba wyważać otwartych drzwi. Jestem pomysłodawcą i współautorem pakietu do obliczeń w (La)TeX-u o nazwie CalcTeX. Program bazuje na składni (La)TeX-a ze zdefiniowanymi działaniami i wypluwa plik (La)TeX-a z wynikami tych działań. Mimo swego prymitywizmu to można dostać ciekawe efekty. Nawet są możliwe obliczenia z jednostkami. Jako solwer jest używany python i jest możliwość dodawania własnych procedur... . Jestem świadomy z jego ograniczeń, najlepiej o plusach i minusach samemu sie przekonać... a chętnych zachęcam do jego rozwoju...
Dokumentacja przykłady są dostępne na stronie projektu http://sg.bzip.pl/CalcTeX. pozdr Sławek

1 użytkowników online, w tym zalogowanych: 0, gości: 1