Van egy nagy struct, meg egy csomó függvény ami beállít meg kiszed belőle dolgokat. A struct csak adatszerkezet (kb. mintha statikus mezőid lennének), de ha már vannak függvények (metódusok) amik dolgoznak rajta, a belső adatokat pedig elfedik a használó elől az már OOP. Pl. Így néz ki a fájlokat beállító függvény:void on_button_set_files_clicked(GtkWidget* widget, gpointer data) {
GtkWidget* opendialog = gtk_file_chooser_dialog_new("Input file",
GTK_WINDOW(window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_OPEN, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
GtkResponseType open_response = gtk_dialog_run(GTK_DIALOG(opendialog));
char* infile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(opendialog));
gtk_widget_destroy(opendialog);
GtkWidget* savedialog = gtk_file_chooser_dialog_new("Output file",
GTK_WINDOW(window),
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
GtkResponseType save_response = gtk_dialog_run(GTK_DIALOG(savedialog));
char* outfile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(savedialog));
gtk_widget_destroy(savedialog);
if (open_response == GTK_RESPONSE_OK && save_response == GTK_RESPONSE_OK) {
gtk_entry_set_text(GTK_ENTRY(entry_infile), infile);
gtk_entry_set_text(GTK_ENTRY(entry_outfile), outfile);
files_set = 1;
}
} |