42 |
extern GtkWidget *mainnotebook; |
extern GtkWidget *mainnotebook; |
43 |
extern GList *logwindowlist; |
extern GList *logwindowlist; |
44 |
|
|
45 |
|
/* |
46 |
|
* in case we open a non-xlog file, we have to know the xlog filename |
47 |
|
*/ |
48 |
static gchar *find_logname (const gchar *selected) |
static gchar *find_logname (const gchar *selected) |
49 |
{ |
{ |
50 |
gchar *basen, *dirn, **split, *l; |
gchar *basen, *dirn, **split, *l; |
120 |
state.utf8error = FALSE; |
state.utf8error = FALSE; |
121 |
if (response == GTK_RESPONSE_ACCEPT) |
if (response == GTK_RESPONSE_ACCEPT) |
122 |
{ |
{ |
123 |
/* skip all if nothing filled in */ |
/* unselect any selected QSO */ |
124 |
sellog = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileselection)); |
for (i = 0; i < g_list_length (logwindowlist); i++) |
|
if (strlen(sellog) > 0) |
|
125 |
{ |
{ |
126 |
filetype = gtk_combo_box_get_active (GTK_COMBO_BOX (combobox)); |
logwindow = g_list_nth_data (logwindowlist, i); |
127 |
|
gtk_tree_selection_unselect_all |
128 |
|
(gtk_tree_view_get_selection(GTK_TREE_VIEW (logwindow->treeview))); |
129 |
|
} |
130 |
|
|
131 |
filen = g_path_get_basename (sellog); |
sellog = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileselection)); |
132 |
logn = logname (filen); |
filetype = gtk_combo_box_get_active (GTK_COMBO_BOX (combobox)); |
|
g_free (filen); |
|
133 |
|
|
134 |
/* unselect any selected QSO */ |
/* check by filename and if log exist jump to the page in the notebook */ |
135 |
for (i = 0; i < g_list_length (logwindowlist); i++) |
filen = find_logname (sellog); |
136 |
|
for (i = 0; i < g_list_length (logwindowlist); i++) |
137 |
|
{ |
138 |
|
logwindow = g_list_nth_data (logwindowlist, i); |
139 |
|
if (g_ascii_strcasecmp (filen, logwindow->filename) == 0) |
140 |
{ |
{ |
141 |
logwindow = g_list_nth_data (logwindowlist, i); |
gtk_notebook_set_current_page (GTK_NOTEBOOK(mainnotebook), i); |
142 |
gtk_tree_selection_unselect_all |
set_qsoframe (logwindow); |
143 |
(gtk_tree_view_get_selection(GTK_TREE_VIEW (logwindow->treeview))); |
logexist = TRUE; |
144 |
|
break; |
145 |
} |
} |
146 |
|
} |
147 |
|
|
148 |
/* if log exist jump to the page in the notebook */ |
if (!logexist) |
149 |
for (i = 0; i < g_list_length (logwindowlist); i++) |
{ |
150 |
{ |
state.qsos = 0; |
151 |
logwindow = g_list_nth_data (logwindowlist, i); |
lp = log_file_open (sellog, filetype); |
152 |
if (g_ascii_strcasecmp (logn, logwindow->logname) == 0) |
if (lp) |
|
{ |
|
|
gtk_notebook_set_current_page (GTK_NOTEBOOK(mainnotebook), i); |
|
|
set_qsoframe (logwindow); |
|
|
logexist = TRUE; |
|
|
break; |
|
|
} |
|
|
} |
|
|
if (!logexist) |
|
153 |
{ |
{ |
154 |
state.qsos = 0; |
logn = logname (g_path_get_basename (sellog)); |
155 |
lp = log_file_open (sellog, filetype); |
logwindow = openlog (lp, logn, state.logwindows++); |
156 |
if (lp) |
log_file_qso_foreach (lp, fillin_list, logwindow); |
157 |
|
log_file_close (lp); |
158 |
|
g_free (logn); |
159 |
|
lp->type = filetype; |
160 |
|
if ((lp->type) == TYPE_FLOG) |
161 |
{ |
{ |
162 |
logwindow = openlog (lp, logn, state.logwindows++); |
xlogbackupfile = g_strconcat (sellog, ".backup", NULL); |
163 |
log_file_qso_foreach (lp, fillin_list, logwindow); |
unlink (xlogbackupfile); |
164 |
log_file_close (lp); |
backuplog (sellog, xlogbackupfile); |
165 |
lp->type = filetype; |
g_free (xlogbackupfile); |
|
if ((lp->type) == TYPE_FLOG) |
|
|
{ |
|
|
xlogbackupfile = g_strconcat (sellog, ".backup", NULL); |
|
|
unlink (xlogbackupfile); |
|
|
backuplog (sellog, xlogbackupfile); |
|
|
g_free (xlogbackupfile); |
|
|
} |
|
|
logwindowlist = g_list_append (logwindowlist, logwindow); |
|
|
logwindow->filename = find_logname (sellog); |
|
|
gtk_notebook_set_current_page |
|
|
(GTK_NOTEBOOK(mainnotebook), state.logwindows - 1); |
|
|
set_qsoframe (logwindow); |
|
|
temp = g_strdup_printf (_("%d QSO's loaded"), state.qsos); |
|
|
update_statusbar (temp); |
|
|
g_free (temp); |
|
166 |
} |
} |
167 |
|
logwindow->filename = g_strdup (filen); |
168 |
|
logwindowlist = g_list_append (logwindowlist, logwindow); |
169 |
|
gtk_notebook_set_current_page |
170 |
|
(GTK_NOTEBOOK(mainnotebook), state.logwindows - 1); |
171 |
|
set_qsoframe (logwindow); |
172 |
|
temp = g_strdup_printf (_("%d QSO's loaded"), state.qsos); |
173 |
|
update_statusbar (temp); |
174 |
|
g_free (temp); |
175 |
} |
} |
|
g_free (logn); |
|
|
g_free (sellog); |
|
|
} |
|
|
else |
|
|
{ |
|
|
temp = g_strdup_printf (_("No filename entered, open cancelled")); |
|
|
update_statusbar (temp); |
|
|
g_free (temp); |
|
176 |
} |
} |
177 |
|
g_free (filen); |
178 |
|
g_free (sellog); |
179 |
} |
} |
180 |
|
|
181 |
gtk_widget_destroy (fileselection); |
gtk_widget_destroy (fileselection); |
182 |
gtk_widget_set_sensitive (mainwindow, 1); |
gtk_widget_set_sensitive (mainwindow, 1); |
183 |
|
|
184 |
while (gtk_events_pending ()) gtk_main_iteration (); |
while (gtk_events_pending ()) gtk_main_iteration (); |
185 |
|
|
186 |
if (state.utf8error) |
if (state.utf8error) |
187 |
warningdialog (_("xlog - open log"), |
warningdialog (_("xlog - open log"), |
188 |
_("There were some errors converting from your locale to UTF8, " |
_("There were some errors converting from your locale to UTF8, " |