/** * positionne les couleurs pour les tree_view * *\param tree_view * * */ void utils_set_tree_view_selection_and_text_color ( GtkWidget *tree_view ) { gtk_widget_modify_base ( tree_view, GTK_STATE_SELECTED, gsb_color_get_couleur ( "couleur_selection" ) ); gtk_widget_modify_base ( tree_view, GTK_STATE_ACTIVE, gsb_color_get_couleur ( "couleur_selection" ) ); gtk_widget_modify_text ( tree_view, GTK_STATE_SELECTED, gsb_color_get_couleur_with_indice ( "text_color", 0 ) ); gtk_widget_modify_text ( tree_view, GTK_STATE_ACTIVE, gsb_color_get_couleur_with_indice ( "text_color", 0 ) ); }
/** * select the transaction by the record * static function * * \param record the CustomRecord to select * * \return TRUE ok, FALSE problem * */ static gboolean transaction_list_select_record ( CustomRecord *record ) { GtkTreePath *path; GtkTreeIter iter; gint i; gint selected_transaction; CustomList *custom_list; custom_list = transaction_model_get_model (); g_return_val_if_fail ( custom_list != NULL, FALSE ); g_return_val_if_fail ( record != NULL, FALSE ); /* get the transaction number */ selected_transaction = gsb_data_transaction_get_transaction_number (record -> transaction_pointer); /* record is the first row of the transaction to select */ custom_list -> selected_row = record; /* get the path of the row we want to select */ path = gtk_tree_path_new (); if ( record -> mother_row ) /* it's a child, need to get the path of the mother */ gtk_tree_path_append_index (path, record -> mother_row -> filtered_pos); gtk_tree_path_append_index (path, record -> filtered_pos); /* colorize the record */ for (i=0 ; i < custom_list -> nb_rows_by_transaction ; i++) { record -> row_bg_save = record -> row_bg; record -> row_bg = gsb_color_get_couleur ( "couleur_selection" ); /* inform the world that the row has changed */ iter.user_data = record; gtk_tree_model_row_changed(GTK_TREE_MODEL(custom_list), path, &iter); /* if the selection was a child, we stop now, only 1 line */ if (record -> mother_row) break; /* go to the next row of the transaction */ record = custom_list -> visibles_rows [record -> filtered_pos + 1]; gtk_tree_path_next (path); } /** update account and other stuff */ gsb_transactions_list_selection_changed (selected_transaction); return TRUE; }
/** * manual set of the color of the entry * used for example in reconciliation, if cancel it, to set back the good color * of the entry * * \param entry * \param normal_color TRUE if we want to set the normal color, FALSE to set to red * * \return FALSE * */ gboolean gsb_calendar_entry_set_color ( GtkWidget *entry, gboolean normal_color ) { if (!entry) return FALSE; if (normal_color) { gtk_widget_modify_base ( entry, GTK_STATE_NORMAL, NULL ); } else { gtk_widget_modify_base ( entry, GTK_STATE_NORMAL, gsb_color_get_couleur ( "entry_error_color" ) ); } return FALSE; }
/** * draw the background of all the rows of the transaction * * \param cr cairo context * \param record record to draw * \param color_bg TRUE to colorize, FALSE to let blank * \param line_position position where drawing the line * * \return * */ static void print_transactions_list_draw_background ( CustomRecord *record, gboolean color_bg, gint line_position ) { if (!gsb_data_print_config_get_draw_background ()) return; if (record -> what_is_line == IS_ARCHIVE) { GdkColor *color; color = gsb_color_get_couleur ( "archive_background_color" ); cairo_rectangle ( cr, 0, line_position, page_width, size_row + 2*gsb_data_print_config_get_draw_lines ( ) ); cairo_set_source_rgb ( cr, (gdouble) color -> red/65535, (gdouble) color -> green/65535, (gdouble) color -> blue/65535 ); } else { CustomList *custom_list = transaction_model_get_model ( ); GdkColor *color; if ( color_bg ) color = gsb_color_get_couleur_with_indice ( "couleur_fond", 0 ); else color = gsb_color_get_couleur_with_indice ( "couleur_fond", 1 ); cairo_rectangle (cr, 0, line_position, page_width, custom_list -> nb_rows_by_transaction * size_row + 2*gsb_data_print_config_get_draw_lines ( ) ); cairo_set_source_rgb (cr, (gdouble) color -> red/65535, (gdouble) color -> green/65535, (gdouble) color -> blue/65535 ); } cairo_fill ( cr ); cairo_set_source_rgb ( cr, 0.0, 0.0, 0.0 ); }
/** * update the labels according to the value in the account structure and the entries * so all the calculs must have been done before (for marked transactions) * * \param entry not used * \param null not used * * \return FALSE * */ gboolean gsb_reconcile_update_amounts ( GtkWidget *entry, gpointer null ) { gsb_real amount; gint account_number; gint currency_number; const gchar *initial_balance; const gchar *final_balance; gchar *tmp_string; gchar* tmpstr; gboolean valide = FALSE; /* first get the current account number */ account_number = gsb_gui_navigation_get_current_account (); /* fill the labels corresponding to the balances */ initial_balance = gtk_entry_get_text ( GTK_ENTRY (reconcile_initial_balance_entry) ); gtk_label_set_text ( GTK_LABEL ( reconcile_initial_balance_label ), initial_balance ); if ( entry ) { valide = gsb_form_widget_get_valide_amout_entry ( gtk_entry_get_text ( GTK_ENTRY ( entry ) ) ); if ( valide ) { /* the entry is valid, make it normal */ gtk_widget_modify_base ( entry, GTK_STATE_NORMAL, NULL ); } else { /* the entry is not valid, make it red */ gtk_widget_modify_base ( entry, GTK_STATE_NORMAL, gsb_color_get_couleur ( "entry_error_color" ) ); return FALSE; } } currency_number = gsb_data_account_get_currency ( account_number ); amount = utils_real_get_calculate_entry ( reconcile_final_balance_entry ); final_balance = utils_real_get_string_with_currency ( amount, currency_number, FALSE ); gtk_label_set_text ( GTK_LABEL ( reconcile_final_balance_label ), final_balance ); /* set the marked balance amount, * this is what we mark as P while reconciling, so it's the total marked balance * - the initial marked balance */ tmp_string = utils_real_get_string_with_currency ( gsb_data_account_calculate_waiting_marked_balance ( account_number ), currency_number, FALSE ); gtk_label_set_text ( GTK_LABEL ( reconcile_marked_balance_label ), tmp_string ); g_free (tmp_string); /* calculate the variation balance and show it */ amount = gsb_real_sub ( gsb_real_add ( utils_real_get_from_string ( initial_balance ), gsb_data_account_calculate_waiting_marked_balance ( account_number ) ), utils_real_get_from_string ( final_balance ) ); tmpstr = utils_real_get_string_with_currency ( amount, currency_number, FALSE ); gtk_label_set_text ( GTK_LABEL ( reconcile_variation_balance_label ), tmpstr); g_free ( tmpstr ); if ( amount.mantissa ) gtk_widget_set_sensitive ( GTK_WIDGET ( reconcile_ok_button ), FALSE ); else gtk_widget_set_sensitive ( GTK_WIDGET ( reconcile_ok_button ), TRUE ); return FALSE; }