Graphische Oberfläche

Proggen.org - Lernprojekt: Duplikatefinder
Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Graphische Oberfläche

Beitrag von stampuhh » Di Jul 06, 2010 11:40 am

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
NachDenkSeiten.de

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Graphische Oberfläche

Beitrag von Xin » Di Jul 06, 2010 12:58 pm

Genau so muss das aussehen.

Du übersetzt das Event der GUI in ein Event für Dedupe.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Graphische Oberfläche

Beitrag von stampuhh » Di Jul 06, 2010 3:25 pm

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
NachDenkSeiten.de

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Graphische Oberfläche

Beitrag von stampuhh » Fr Jul 16, 2010 10:23 am

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
NachDenkSeiten.de

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Graphische Oberfläche

Beitrag von Kerli » Fr Jul 16, 2010 3:38 pm

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).
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Graphische Oberfläche

Beitrag von Xin » Sa Jul 17, 2010 9:09 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Graphische Oberfläche

Beitrag von stampuhh » Mo Jul 19, 2010 5:32 pm

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
NachDenkSeiten.de

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Graphische Oberfläche

Beitrag von Xin » Di Jul 20, 2010 9:47 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Graphische Oberfläche

Beitrag von Xin » Do Jul 22, 2010 9:19 am

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. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Graphische Oberfläche

Beitrag von cloidnerux » Mi Aug 04, 2010 9:48 am

Wer macht egt die ncurses Oberfläche?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten