mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Separate out the UI from the program logic
The following are UI toolkit specific: gtk-gui.c - overall layout, main window of the UI divelist.c - list of dives subsurface maintains equipment.c - equipment / tank information for each dive info.c - detailed dive info print.c - printing The rest is independent of the UI: main.c i - program frame dive.c i - creates and maintaines the internal dive list structure libdivecomputer.c uemis.c parse-xml.c save-xml.c - interface with dive computers and the XML files profile.c - creates the data for the profile and draws it using cairo This commit should contain NO functional changes, just moving code around and a couple of minor abstractions. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
6ea5132463
commit
682135838f
18 changed files with 808 additions and 648 deletions
47
uemis.c
47
uemis.c
|
|
@ -16,10 +16,7 @@
|
|||
#include <time.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "dive.h"
|
||||
#include "display.h"
|
||||
#include "uemis.h"
|
||||
|
||||
/*
|
||||
|
|
@ -214,8 +211,11 @@ static void parse_divelog_binary(char *base64, struct dive **divep) {
|
|||
return;
|
||||
}
|
||||
|
||||
/* parse a single file
|
||||
* TODO: we don't report any errors when the parse fails - we simply don't add them to the list
|
||||
*/
|
||||
void
|
||||
parse_uemis_file(char *divelogfilename,GError **error) {
|
||||
parse_uemis_file(char *divelogfilename) {
|
||||
char *found=NULL;
|
||||
struct tm tm;
|
||||
struct dive *dive;
|
||||
|
|
@ -261,40 +261,7 @@ bail:
|
|||
*/
|
||||
void
|
||||
uemis_import() {
|
||||
GtkWidget *dialog;
|
||||
GtkFileFilter *filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_pattern (filter, "*.SDA");
|
||||
gtk_file_filter_set_name(filter, "uemis Zurich SDA files");
|
||||
dialog = gtk_file_chooser_dialog_new("Open File",
|
||||
GTK_WINDOW(main_window),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
|
||||
GSList *filenames;
|
||||
char *filename;
|
||||
filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
|
||||
|
||||
GError *error = NULL;
|
||||
while(filenames != NULL) {
|
||||
filename = (char *)filenames->data;
|
||||
parse_uemis_file(filename, &error);
|
||||
if (error != NULL)
|
||||
{
|
||||
report_error(error);
|
||||
g_error_free(error);
|
||||
error = NULL;
|
||||
}
|
||||
|
||||
g_free(filename);
|
||||
filenames = g_slist_next(filenames);
|
||||
}
|
||||
g_slist_free(filenames);
|
||||
if (open_import_file_dialog("*.SDA","uemis Zurich SDA files",
|
||||
&parse_uemis_file))
|
||||
report_dives();
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue