Seite 3 von 10

Re: Graphische Oberfläche

Verfasst: Di Jul 06, 2010 11:40 am
von stampuhh
So darf das nicht aussehen, die Interfaceklasse abstrahiert die GUI, also dürfen Klassen wie exCommandEvent nicht auftauchen.
Mhh, wie mache ich das dann? Soweit ich weiß muss die Methode ein entsprechendes Event (bei Menüs und Buttons eben das CommandEvent) erhalten. Zumindest hab ich bisher immer so gemacht. Oder soll es dann sowas geben?

Code: Alles auswählen

BEGIN_EVENT_TABLE(GuiClass, wxFrame)
  EVT_MENU(MENU_EDIT_ADD_FILE, GuiClass::OnAddFile)
END_EVENT_TABLE()

void GuiClass::OnAddFile(wxCommandEvent &event)
{
  Dedupe::File file = irgendwas_mit_dem_Event_machen_evtl();
  //Und hier wird dann die eigentliche Methode aufgerufen?
  Main::AppendFile( & file );
}
gruß stampuhh

Re: Graphische Oberfläche

Verfasst: Di Jul 06, 2010 12:58 pm
von Xin
Genau so muss das aussehen.

Du übersetzt das Event der GUI in ein Event für Dedupe.

Re: Graphische Oberfläche

Verfasst: Di Jul 06, 2010 3:25 pm
von stampuhh
Ja aber die AppendFile Methode muss doch dann auch wieder auf die GUI Elemente zugreifen? Oder soll sie einfach nur das File zu einer Liste hinzufügen und die GUI greift dann auf die Liste zu und wird refreshed?

Code: Alles auswählen

void GuiClass::OnAddFile(wxCommandEvent &event)
{
  Dedupe::File file = irgendwas_mit_dem_Event_machen_evtl(event);
  //Und hier wird dann die eigentliche Methode aufgerufen?
  bool control = Main::AppendFile( & file );
  //das refresh erst hier? Oder in der AppendFile?
  if(control)
    this->table->refresh();
}
Also in der AppendFile (in der ganzen Klasse Main) steht kein wxWidgets-Code?

gruß stampuhh

Re: Graphische Oberfläche

Verfasst: Fr Jul 16, 2010 10:23 am
von stampuhh
So...langsam wird es hier wieder erträglicher im Zimmer (es sind nur noch 29° statt 34°) und außerdem stehen die Semesterferien an. Ich würde gerne mal etwas machen nur ich habe da meine Probleme mit cmake etc. Ich weiß nicht wie ich die wxWidgets Bibliotheken, Compilerbefehle etc mit Cmake einbinde so dass es sich bei allen gleich compilieren lässt...es wäre super wenn das jemand machen kann der sich damit auskennt und vllt ein kleines Hello World direkt mit einbindet. Ich habe bisher immer die unicode Variante von wxWidgets verwendet (wxUSE_UNICODE)

Die grundlegende Struktur vom MainFrame hab ich ja oben schon gepostet...würde sie nur gerne auch mal als .h Datei hochladen mit den entsprechenden includes etc.
Aber bevor ich nachher alles doppelt machen muss wollte ich lieber warten bis ich weiß wie das alles mit cmake läuft.

gruß stampuhh

Re: Graphische Oberfläche

Verfasst: Fr Jul 16, 2010 3:38 pm
von Kerli
Ich hab einmal eine Branch wx-hello-world erstellt bei dem ein einfaches wxWidgets Programm mit CMake drinnen ist. Unicode kann man wenn vorhanden soweit ich weiß dann direkt mit CMake ändern. (Also zb. mit ccmake oder unter Windows mit der mitgelieferten Oberfläche).

Re: Graphische Oberfläche

Verfasst: Sa Jul 17, 2010 9:09 am
von Xin
stampuhh hat geschrieben:Die grundlegende Struktur vom MainFrame hab ich ja oben schon gepostet...würde sie nur gerne auch mal als .h Datei hochladen mit den entsprechenden includes etc.
Aber bevor ich nachher alles doppelt machen muss wollte ich lieber warten bis ich weiß wie das alles mit cmake läuft.
Das Interface darf keine Includes auf Bibliotheken enthalten. Es ist ja unabhängig vom der verwendeten Lib.

Die Includes werden nur in der Implementation eines Interfaces eingebunden.

Ansonsten geh davon aus, dass Du nichts einchecken wirst, was nicht früher oder später wieder verändert wird.

Re: Graphische Oberfläche

Verfasst: Mo Jul 19, 2010 5:32 pm
von stampuhh
Das Interface darf keine Includes auf Bibliotheken enthalten. Es ist ja unabhängig vom der verwendeten Lib.
Mhh ok...ich dachte das Interface wäre das was du schon hochgeladen hast?

Irgendwie I am :?
Die Includes werden nur in der Implementation eines Interfaces eingebunden.
Dann bräuchte die Implementation ja jede Methode mehr oder weniger doppelt?

Eine OnExit() und eine OnExit(wxWidgetsElement...) oder seh ich das falsch?
Ansonsten geh davon aus, dass Du nichts einchecken wirst, was nicht früher oder später wieder verändert wird.
Das ist mir schon klar ;)

Also wenn ich das jetzt alles richtig verstanden habe packe ich einfach erst mal die Methoden die ich oben erwähnt habe in ein "Interface" ohne konkret auf wxWidgets einzugehen...

gruß stampuhh

Re: Graphische Oberfläche

Verfasst: Di Jul 20, 2010 9:47 am
von Xin
stampuhh hat geschrieben:
Das Interface darf keine Includes auf Bibliotheken enthalten. Es ist ja unabhängig vom der verwendeten Lib.
Mhh ok...ich dachte das Interface wäre das was du schon hochgeladen hast?

Irgendwie I am :?
Das Interface, was ich hochgeladen habe, ist unabhängig von der Implementation.
stampuhh hat geschrieben:
Die Includes werden nur in der Implementation eines Interfaces eingebunden.
Dann bräuchte die Implementation ja jede Methode mehr oder weniger doppelt?

Eine OnExit() und eine OnExit(wxWidgetsElement...) oder seh ich das falsch?
Das Interface darf nur eine OnExit haben, die keinerlei Datentypen enthält, die eine NCurses oder QT-Gui nicht liefern kann. wxWidgetsElements kann NCurses bzw. QT nicht liefern, geht also nicht.
Wenn Du für die wxWidgetsImplementation ein OnExit(wxWidgetsElement elem ) benötigst, so ist das in der IMPLEMENTATION absolut okay, aber nicht im INTERFACE. Die OnExit( wxWidgetsElement elem ) kann dann gerne die Interface-Methode rufen:

Code: Alles auswählen

void wxWidgetsImplementation::OnExit( wxWidgetsElement elem )
{
  /* wxWidgets erforderlicher Code */

  OnExit();  // Das Programm über das Interface informieren

  /* wxWidgets erforderlicher Code */
}
stampuhh hat geschrieben:
Ansonsten geh davon aus, dass Du nichts einchecken wirst, was nicht früher oder später wieder verändert wird.
Das ist mir schon klar ;)
Dann check ein und wir gucken uns das an und besprechen dann, wie es weitergeht.

Also wenn ich das jetzt alles richtig verstanden habe packe ich einfach erst mal die Methoden die ich oben erwähnt habe in ein "Interface" ohne konkret auf wxWidgets einzugehen...[/quote]
Das ist das Ziel zwischen Interface und Implementation: Du trennst es voneinander. Das Interface weiß nicht, wie es etwas darstellt, das weiß nur die Implementation. Aber jede Implementation funktioniert genauso, wie es das Interface vorgibt.

Re: Graphische Oberfläche

Verfasst: Do Jul 22, 2010 9:19 am
von Xin
Wenn Du hier noch Unterstützung brauchst, dann meld Dich doch am WE mal per Skype bei mir.

Wir brauchen langsam eine Oberfläche, damit wir mal ein paar Prozesse zusammenführen können. :-)

Re: Graphische Oberfläche

Verfasst: Mi Aug 04, 2010 9:48 am
von cloidnerux
Wer macht egt die ncurses Oberfläche?