#include "dsp-mainwindow.h"
+#include "ext.h"
+
#include "list-account.h"
#include "hub-account.h"
static void ui_mainwindow_action_anonymize(void);
static void ui_mainwindow_action_file_statistics(void);
+static void ui_mainwindow_action_pluginprefs(void);
+
static void ui_mainwindow_action_help(void);
void ui_mainwindow_action_help_welcome(void);
static void ui_mainwindow_action_help_online(void);
void ui_mainwindow_recent_add (struct hbfile_data *data, const gchar *path);
+static void ui_mainwindow_showprefs(gint page);
static GtkActionEntry entries[] = {
{ "TxnMenu" , NULL, N_("_Transactions"), NULL, NULL, NULL },
{ "ReportMenu" , NULL, N_("_Reports"), NULL, NULL, NULL },
{ "ToolsMenu" , NULL, N_("_Tools"), NULL, NULL, NULL },
+ { "PluginMenu" , NULL, N_("_Plugins"), NULL, NULL, NULL },
{ "HelpMenu" , NULL, N_("_Help"), NULL, NULL, NULL },
// { "Import" , NULL, N_("Import") },
//{ "ImportQIF" , ICONNAME_HB_FILE_IMPORT , N_("QIF file...") , NULL, N_("Open the import assistant"), G_CALLBACK (ui_mainwindow_action_import) },
//{ "ImportOFX" , ICONNAME_HB_FILE_IMPORT , N_("OFX/QFX file...") , NULL, N_("Open the import assistant"), G_CALLBACK (ui_mainwindow_action_import) },
//{ "ImportCSV" , ICONNAME_HB_FILE_IMPORT , N_("CSV file...") , NULL, N_("Open the import assistant"), G_CALLBACK (ui_mainwindow_action_import) },
-
+
{ "ExportQIF" , ICONNAME_HB_FILE_EXPORT , N_("Export as QIF...") , NULL, N_("Export all account in a QIF file"), G_CALLBACK (ui_mainwindow_action_export) },
/* EditMenu */
{ "Welcome" , NULL , N_("Show welcome dialog...") , NULL, NULL, G_CALLBACK (ui_mainwindow_action_help_welcome) },
{ "FileStats" , NULL , N_("File statistics...") , NULL, NULL, G_CALLBACK (ui_mainwindow_action_file_statistics) },
{ "Anonymize" , NULL , N_("Anonymize...") , NULL, NULL, G_CALLBACK (ui_mainwindow_action_anonymize) },
-
+
+ /* Plugins */
+ { "PluginPreferences", "prf-plugins", N_("_Plugins..."), "<control>U", N_("Configure plugin preferences"), G_CALLBACK(ui_mainwindow_action_pluginprefs) },
+
/* HelpMenu */
{ "Contents" , ICONNAME_HELP , N_("_Contents") , "F1", N_("Documentation about HomeBank"), G_CALLBACK (ui_mainwindow_action_help) },
{ "Online" , "lpi-help" , N_("Get Help Online...") , NULL, N_("Connect to the LaunchPad website for online help"), G_CALLBACK (ui_mainwindow_action_help_online) },
" <separator/>"
" <menuitem action='Anonymize'/>"
" </menu>"
+" <menu action='PluginMenu'>"
+" <separator/>"
+" <menuitem action='PluginPreferences'/>"
+" <separator/>"
+" </menu>"
" <menu action='HelpMenu'>"
" <menuitem action='Contents'/>"
" <menuitem action='Online'/>"
" <toolitem action='RBalance'/>"
" <toolitem action='RBudget'/>"
" <toolitem action='RVehiculeCost'/>"
+" <separator/>"
" </toolbar>"
"</ui>";
title = g_strdup_printf (
_("Revert unsaved changes to file '%s'?"), basename);
- secondtext =
+ secondtext =
_("- Changes made to the file will be permanently lost\n"
"- File will be reloaded from the last save (.xhb~)");
if( result == GTK_RESPONSE_OK )
{
DB( g_print(" - should revert\n") );
-
+
hbfile_change_filepath(hb_filename_new_with_extension(GLOBALS->xhb_filepath, "xhb~"));
ui_mainwindow_open_internal(widget, NULL);
hbfile_change_filepath(hb_filename_new_with_extension(GLOBALS->xhb_filepath, "xhb"));
gpointer data)
{
DB( g_print("activate url %s\n", link) );
-
+
homebank_util_url_show (link);
}
static const gchar *authors[] = {
"Lead developer:\n" \
"Maxime DOYEN",
- "\nContributor:\n" \
+ "\nContributors:\n" \
+ "Charles MCGARVEY (Plugin system, Perl support)\n" \
"Ga\xc3\xabtan LORIDANT (Maths formulas for charts)\n",
NULL
};
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ());
-
+
dialog = gtk_about_dialog_new();
gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(GLOBALS->mainwindow));
gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-
+
gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG(dialog), g_get_application_name ());
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), version);
gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), copyright);
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog), _("Free, easy, personal accounting for everyone"));
gtk_about_dialog_set_license_type (GTK_ABOUT_DIALOG(dialog), GTK_LICENSE_GPL_2_0);
-
+
//gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(dialog), );
gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog), "http://homebank.free.fr");
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(dialog), "Visit the HomeBank website");
gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(dialog), pixbuf);
g_object_unref (pixbuf);
}
-
+
gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors);
gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(dialog), artists);
//gtk_about_dialog_set_documenters(GTK_ABOUT_DIALOG(dialog), );
gtk_widget_destroy (dialog);
g_free(version);
-
+
}
}
+static void ui_mainwindow_action_pluginprefs(void)
+{
+ ui_mainwindow_showprefs(PREF_PLUGINS);
+}
+
+
static void ui_mainwindow_action_properties(void)
{
create_defhbfile_dialog();
title = _("Are you sure you want to anonymize the file?");
- secondtext =
+ secondtext =
_("Proceeding will anonymize any text, \n"
"like 'account x', 'payee y', 'memo z', ...");
//#1707201
//if( result == GTK_RESPONSE_CANCEL )
- // return;
+ // return;
if( result == GTK_RESPONSE_OK )
{
hbfile_anonymize();
static void ui_mainwindow_action_preferences(void)
+{
+ ui_mainwindow_showprefs(PREF_GENERAL);
+}
+
+static void ui_mainwindow_showprefs(gint page)
{
struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
- defpref_dialog_new();
+ defpref_dialog_new(page);
if(!PREFS->euro_active)
{
GtkToggleAction *action = (GtkToggleAction *)gtk_ui_manager_get_action(data->manager, "/MenuBar/ViewMenu/AsMinor");
// top spending
gtk_chart_show_minor(GTK_CHART(data->RE_pie), GLOBALS->minor);
-
+
ui_hub_spending_update(data->window, data);
}
static void ui_mainwindow_action_trendtime(void)
{
struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
-
+
ui_reptime_window_new(data->acc != NULL ? data->acc->key : 0);
}
NULL);
content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
-
+
mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start (GTK_BOX (content_area), mainvbox, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER(mainvbox), SPACING_MEDIUM);
widget = gtk_button_new_with_mnemonic(_("Read HomeBank _Manual"));
gtk_box_pack_start (GTK_BOX (mainvbox), widget, FALSE, FALSE, 0);
g_signal_connect (widget, "clicked", G_CALLBACK (ui_mainwindow_action_help_welcome1), dialog);
-
+
widget = gtk_button_new_with_mnemonic(_("Configure _preferences"));
gtk_box_pack_start (GTK_BOX (mainvbox), widget, FALSE, FALSE, 0);
g_signal_connect (widget, "clicked", G_CALLBACK (ui_mainwindow_action_help_welcome2), dialog);
-
+
widget = gtk_button_new_with_mnemonic(_("Create a _new file"));
gtk_box_pack_start (GTK_BOX (mainvbox), widget, FALSE, FALSE, 0);
g_signal_connect (widget, "clicked", G_CALLBACK (ui_mainwindow_action_help_welcome3), dialog);
gtk_tree_store_clear(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc))));
gtk_list_store_clear(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_upc))));
gtk_list_store_clear(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_top))));
-
+
data->showall = FALSE;
ui_hub_account_setup(data);
-
+
hbfile_cleanup(file_clear);
hbfile_setup(file_clear);
if( PREFS->heritdate == FALSE ) //fix: 318733
ope->date = GLOBALS->today;
-
+
da_transaction_set_default_template(ope);
}
DB( g_print(" - added 1 transaction to %d\n", ope->kacc) );
ui_hub_account_populate(GLOBALS->mainwindow, NULL);
-
+
count++;
//todo: still usefull ? store last date
date = ope->date;
basename = g_path_get_basename(filepath);
secondtext = g_strdup_printf (
- _("Your are about to open the backup file '%s'.\n\nAre you sure you want to do this ?"), basename);
+ _("Your are about to open the backup file '%s'.\n\nAre you sure you want to do this ?"), basename);
result = ui_dialog_msg_confirm_alert(
GTK_WINDOW(GLOBALS->mainwindow),
_("Open the backup file ?"),
secondtext,
_("_Open backup")
- );
+ );
g_free(secondtext);
g_free(basename);
if( result == GTK_RESPONSE_OK )
retval = TRUE;
-
+
return retval;
}
g_free(filename);
return;
}
- }
+ }
hbfile_change_filepath(filename);
ui_mainwindow_open_internal(widget, NULL);
GLOBALS->xhb_timemodified = hbfile_file_get_time_modified(GLOBALS->xhb_filepath);
hbfile_file_hasrevert(GLOBALS->xhb_filepath);
-
+
if(PREFS->appendscheduled)
scheduled_post_all_pending();
ui_hub_scheduled_populate(GLOBALS->mainwindow, NULL);
ui_hub_spending_populate(GLOBALS->mainwindow, NULL);
ui_hub_transaction_populate(data);
-
+
ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_TITLE+UF_SENSITIVE+UF_VISUAL));
}
_("If you save it, all the external changes could be lost. Save it anyway?"),
_("S_ave Anyway")
);
-
+
if( result != GTK_RESPONSE_OK )
return;
}
#else
data->wintitle = g_strdup_printf("%s%s - %s - " PROGNAME, changed, basename, GLOBALS->owner);
#endif
-
+
gtk_window_set_title (GTK_WINDOW (gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), data->wintitle);
g_free(basename);
gtk_widget_hide(GTK_WIDGET(data->GR_top));
-
+
DB( g_print(" - show upcoming=%d\n", PREFS->wal_upcoming) );
if(PREFS->wal_upcoming)
gtk_widget_show(GTK_WIDGET(data->GR_upc));
struct WinGeometry *wg;
gboolean retval = FALSE;
+ GValue widget_value = G_VALUE_INIT;
+ ext_hook("main_window_disposal", EXT_OBJECT(&widget_value, widget), NULL);
+
DB( g_print("\n[ui-mainwindow] delete-event\n") );
//store position and size
if(PREFS->pnl_list_tab)
g_free(PREFS->pnl_list_tab);
PREFS->pnl_list_tab = g_strdup(gtk_stack_get_visible_child_name(GTK_STACK(data->stack)));
-
+
//todo
if(ui_dialog_msg_savechanges(widget, NULL) == FALSE)
{
g_free(data->wintitle);
da_flt_free(data->filter);
g_free(user_data);
-
+
gtk_main_quit();
}
gchar *newseldata;
gint n_uris, filetype, slen;
GError *error = NULL;
-
+
if (info != TARGET_URI_LIST)
return;
newseldata[slen] = 0;
//DB( g_print(" - seldata ='%s'\n", gtk_selection_data_get_data(selection_data) ) );
//DB( g_print(" - newseldata ='%s'\n", newseldata ) );
-
+
uris = g_uri_list_extract_uris (newseldata);
n_uris = g_strv_length(uris);
DB( g_print(" - dragged %d files (len=%d)\n", n_uris, slen ) );
//single file: check for xhb
if(n_uris == 1)
- {
+ {
filetype = hb_filename_type_get_by_extension(*uris);
DB( g_print(" - filetype is homebank (%d)\n", filetype) );
//collect known filetype to import
DB( g_print(" - collect %d files\n", n_uris) );
-
+
gchar **paths = g_new (gchar *, n_uris + 1);
slen = 0;
for (str = uris; *str; str++)
DB( g_print(" - append %d '%s'\n", slen, path ) );
paths[slen++] = path;
}
- }
+ }
}
paths[slen] = NULL;
{
ui_import_assistant_new( paths );
}
-
-
+
+
end_drop:
g_strfreev (uris);
}
gtk_label_set_markup (GTK_LABEL(label), "Unstable Development Version");
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE, 0);
#endif
-
+
/* Add the main area */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
//gtk_container_set_border_width (GTK_CONTAINER(vbox), SPACING_MEDIUM);
gtk_stack_sidebar_set_stack (GTK_STACK_SIDEBAR (sidebar), GTK_STACK (stack));
data->stack = stack;
gtk_box_pack_start (GTK_BOX (box), stack, TRUE, TRUE, 0);
-
+
page = ui_hub_scheduled_create(data);
gtk_stack_add_titled (GTK_STACK (stack), page, "sched", _("Scheduled"));
//gtk_paned_pack2 (GTK_PANED(vpaned), widget, TRUE, FALSE);
page = ui_hub_transaction_create(data, HUB_TXN_TYPE_REMIND);
gtk_stack_add_titled (GTK_STACK (stack), page, "remin", _("Remind"));
-
+
//setup, init and show window
wg = &PREFS->wal_wg;
if( PREFS->pnl_list_tab != NULL )
gtk_stack_set_visible_child_name (GTK_STACK(data->stack), PREFS->pnl_list_tab);
-
+
//todo: move this elsewhere
DB( g_print(" - setup stuff\n") );