Changeset 59

Show
Ignore:
Timestamp:
10/08/2007 03:20:10 PM (15 months ago)
Author:
cmccurdy
Message:

* src/widgets.c:

fixed a few bugs regarding the handling of the values nl_langinfo returns
incorporated ticket #6 re: changing transaction selection behavior

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/autom4te.cache/requests

    r56 r59  
    5656                        'AM_PROG_INSTALL_STRIP' => 1, 
    5757                        '_m4_warn' => 1, 
     58                        'LF_CHECK_CC_FLAG' => 1, 
    5859                        'AM_SANITY_CHECK' => 1, 
    59                         'LF_CHECK_CC_FLAG' => 1, 
    6060                        'LF_SET_WARNINGS' => 1, 
    6161                        'include' => 1, 
     
    7070                        '_AM_SUBST_NOTMAKE' => 1, 
    7171                        'LF_CHECK_CXX_FLAG' => 1, 
    72                         'AM_PROG_CC_C_O' => 1, 
     72                        'm4_pattern_allow' => 1, 
    7373                        '_AM_AUTOCONF_VERSION' => 1, 
    74                         'm4_pattern_allow' => 1, 
     74                        'AM_PROG_CC_C_O' => 1, 
    7575                        '_AM_MANGLE_OPTION' => 1, 
    76                         'AM_CONDITIONAL' => 1, 
    7776                        'AM_SET_LEADING_DOT' => 1, 
     77                        'AM_CONDITIONAL' => 1, 
    7878                        'AM_SET_DEPDIR' => 1, 
    7979                        '_AM_DEPENDENCIES' => 1, 
     80                        'm4_include' => 1, 
     81                        'LF_CHECK_F77_FLAG' => 1, 
    8082                        'AM_PROG_INSTALL_SH' => 1, 
    81                         'LF_CHECK_F77_FLAG' => 1, 
    82                         'm4_include' => 1, 
    8383                        '_AC_AM_CONFIG_HEADER_HOOK' => 1, 
    8484                        'AU_DEFUN' => 1, 
     
    9898                      ], 
    9999                      { 
     100                        'AM_PROG_F77_C_O' => 1, 
    100101                        '_LT_AC_TAGCONFIG' => 1, 
    101                         'AM_PROG_F77_C_O' => 1, 
     102                        'm4_pattern_forbid' => 1, 
    102103                        'AC_INIT' => 1, 
    103                         'm4_pattern_forbid' => 1, 
    104104                        'AC_CANONICAL_TARGET' => 1, 
     105                        'AC_CONFIG_LIBOBJ_DIR' => 1, 
    105106                        'AC_SUBST' => 1, 
    106                         'AC_CONFIG_LIBOBJ_DIR' => 1, 
     107                        'AC_CANONICAL_HOST' => 1, 
    107108                        'AC_FC_SRCEXT' => 1, 
    108                         'AC_CANONICAL_HOST' => 1, 
    109109                        'AC_PROG_LIBTOOL' => 1, 
    110110                        'AM_INIT_AUTOMAKE' => 1, 
     
    114114                        'AC_REQUIRE_AUX_FILE' => 1, 
    115115                        'AC_CONFIG_LINKS' => 1, 
     116                        'LT_SUPPORTED_TAG' => 1, 
    116117                        'm4_sinclude' => 1, 
    117                         'LT_SUPPORTED_TAG' => 1, 
    118118                        'AM_MAINTAINER_MODE' => 1, 
    119119                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 
     
    132132                        '_AM_SUBST_NOTMAKE' => 1, 
    133133                        'AC_CONFIG_AUX_DIR' => 1, 
     134                        'AM_PROG_CC_C_O' => 1, 
     135                        'm4_pattern_allow' => 1, 
    134136                        'sinclude' => 1, 
    135                         'm4_pattern_allow' => 1, 
    136                         'AM_PROG_CC_C_O' => 1, 
     137                        'AM_CONDITIONAL' => 1, 
    137138                        'AC_CANONICAL_SYSTEM' => 1, 
    138                         'AM_CONDITIONAL' => 1, 
    139139                        'AC_CONFIG_HEADERS' => 1, 
    140140                        'AC_DEFINE_TRACE_LITERAL' => 1, 
     
    209209                        'AM_PROG_CC_C_O' => 1, 
    210210                        '_AM_MANGLE_OPTION' => 1, 
    211                         'AM_CONDITIONAL' => 1, 
    212211                        'AM_SET_LEADING_DOT' => 1, 
     212                        'AM_CONDITIONAL' => 1, 
    213213                        'AM_SET_DEPDIR' => 1, 
    214214                        '_AM_DEPENDENCIES' => 1, 
     215                        'm4_include' => 1, 
     216                        'LF_CHECK_F77_FLAG' => 1, 
    215217                        'AM_PROG_INSTALL_SH' => 1, 
    216                         'LF_CHECK_F77_FLAG' => 1, 
    217                         'm4_include' => 1, 
    218218                        '_AC_AM_CONFIG_HEADER_HOOK' => 1, 
    219219                        'AU_DEFUN' => 1, 
     
    285285                        'AM_SET_DEPDIR' => 1, 
    286286                        '_AM_DEPENDENCIES' => 1, 
    287                         'm4_include' => 1, 
    288287                        'AM_PROG_INSTALL_SH' => 1, 
     288                        'm4_include' => 1, 
    289289                        '_AC_AM_CONFIG_HEADER_HOOK' => 1, 
    290290                        'AU_DEFUN' => 1, 
     
    354354                        'AM_SET_DEPDIR' => 1, 
    355355                        '_AM_DEPENDENCIES' => 1, 
     356                        'm4_include' => 1, 
    356357                        'AM_PROG_INSTALL_SH' => 1, 
    357                         'm4_include' => 1, 
    358358                        '_AC_AM_CONFIG_HEADER_HOOK' => 1, 
    359359                        'AU_DEFUN' => 1, 
  • trunk/src/Makefile.in

    r56 r59  
    163163#db_test_SOURCES = db_test.c transaction.c database.c 
    164164mokash_SOURCES = main.c \ 
     165               bool.h \ 
    165166               widgets.c \ 
     167               widgets.h \ 
    166168               account_dialog.c \ 
     169               account_dialog.h \ 
    167170               database.c \ 
     171               database.h \ 
    168172               transaction.c \ 
    169                transaction_dialog.c 
     173               transaction.h \ 
     174               transaction_dialog.c \ 
     175               transaction_dialog.h 
    170176 
    171177mokash_CFLAGS = @GTK_CFLAGS@ 
  • trunk/src/widgets.c

    r52 r59  
    372372    if ( strcmp( "Amt", gtk_tree_view_column_get_title(col) ) == 0 ) 
    373373        data = fabs(data); 
    374     char *frac_digits = nl_langinfo(FRAC_DIGITS); 
     374    char *tmp = nl_langinfo(FRAC_DIGITS); 
     375    char *frac_digits = (char*)malloc(sizeof(char) * (strlen(tmp) + 1)); 
     376    strcpy( frac_digits, tmp ); 
    375377    if ( frac_digits[0] == CHAR_MAX ) 
    376         frac_digits[0] = 0; 
     378        frac_digits[0] = 2; 
    377379    gchar frmt[20]; 
    378380    g_snprintf( frmt, sizeof(frmt), "%%.%dlf", frac_digits[0] ); 
     
    437439void button_press_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) 
    438440{ 
    439     if ( event->type != GDK_BUTTON_PRESS || event->button != 1 ) 
     441    if ( ( event->type != GDK_BUTTON_PRESS &&  
     442        event->type != GDK_BUTTON_RELEASE ) || event->button != 1 ) 
    440443        return; 
    441444 
     
    447450        return; 
    448451 
     452    static GtkTreePath *down_path; 
     453     
     454    if ( event->type == GDK_BUTTON_PRESS ) 
     455    { 
     456        down_path = path; 
     457        return; 
     458    } 
     459 
     460    if ( down_path == NULL ) 
     461        return; 
     462 
     463    gchar *down_str, *up_str; 
     464    down_str = gtk_tree_path_to_string(down_path); 
     465    up_str = gtk_tree_path_to_string(path); 
     466    if ( g_utf8_collate( down_str, up_str ) != 0 ) 
     467    { 
     468        g_free(down_str); 
     469        g_free(up_str); 
     470        gtk_tree_path_free(path); 
     471        gtk_tree_path_free(down_path); 
     472        return; 
     473    } 
     474 
    449475    if ( strcmp( gtk_tree_view_column_get_title(column), "" ) == 0 ) 
    450476    { 
    451477        // handle the checkbox click 
    452         toggle_checkbox( gtk_tree_path_to_string(path), 
    453                 GTK_LIST_STORE(gtk_tree_model_filter_get_model( 
     478        toggle_checkbox( up_str, GTK_LIST_STORE(gtk_tree_model_filter_get_model( 
    454479                        GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model( 
    455480                                GTK_TREE_VIEW(tree))))) ); 
     
    474499        } 
    475500    } 
     501    g_free(down_str); 
     502    g_free(up_str); 
     503    gtk_tree_path_free(path); 
     504    gtk_tree_path_free(down_path); 
    476505} 
    477506 
     
    552581    g_signal_connect( G_OBJECT(tree), "button-press-event", 
    553582            G_CALLBACK(button_press_cb), NULL ); 
     583    g_signal_connect( G_OBJECT(tree), "button-release-event", 
     584            G_CALLBACK(button_press_cb), NULL ); 
    554585 
    555586    GtkCellRenderer *renderer; 
     
    675706{ 
    676707    int i, j, radix_loc; 
    677     char *radix_str = nl_langinfo(RADIXCHAR); 
    678     char *frac_digits = nl_langinfo(FRAC_DIGITS); 
     708    char *tmp = nl_langinfo(RADIXCHAR); 
     709    char *radix_str = (char*)malloc(sizeof(char) * (strlen(tmp) + 1)); 
     710    strcpy( radix_str, tmp ); 
     711    tmp = nl_langinfo(FRAC_DIGITS); 
     712    char *frac_digits = (char*)malloc(sizeof(char) * (strlen(tmp) + 1)); 
     713    strcpy( frac_digits, tmp ); 
    679714    char radix = ( radix_str != NULL ? radix_str[0] : '.' ); 
    680715    if ( frac_digits[0] == CHAR_MAX ) 
    681         frac_digits[0] = 0; 
     716        frac_digits[0] = 2; 
    682717    gchar *result = g_new( gchar, new_text_length + 1 ); 
    683718    gchar *cur_text = gtk_editable_get_chars( editable, 0, -1 ); 
     
    730765    gtk_signal_emit_stop_by_name( GTK_OBJECT(editable), "insert-text" ); 
    731766 
     767    free(radix_str); 
     768    free(frac_digits); 
    732769    g_free(cur_text); 
    733770    g_free(result); 
     
    10901127void update_balance(GtkLabel *label, double balance, const char *prefix) 
    10911128{ 
    1092     char *cur_symbols = nl_langinfo(CRNCYSTR); 
    1093     char *frac_digits = nl_langinfo(FRAC_DIGITS); 
     1129    char *tmp = nl_langinfo(CRNCYSTR); 
     1130    char *cur_symbols = (char*)malloc(sizeof(char) * (strlen(tmp) + 1)); 
     1131    strcpy( cur_symbols, tmp ); 
     1132    tmp = nl_langinfo(FRAC_DIGITS); 
     1133    char *frac_digits = (char*)malloc(sizeof(char) * (strlen(tmp) + 1)); 
     1134    strcpy( frac_digits, tmp ); 
     1135 
    10941136    if ( frac_digits[0] == CHAR_MAX ) 
    1095         return; 
    1096     if ( cur_symbols == NULL || strlen(cur_symbols) < 2 ) 
    1097         return; 
     1137        frac_digits[0] = 2; 
     1138    if ( cur_symbols == NULL ) 
     1139    { 
     1140        cur_symbols = (char*)malloc(sizeof(char) * 3); 
     1141        strcpy( cur_symbols, "-$" ); 
     1142    } 
     1143    if ( strlen(cur_symbols) < 2 ) 
     1144    { 
     1145        free(cur_symbols); 
     1146        cur_symbols = (char*)malloc(sizeof(char) * 3); 
     1147        strcpy( cur_symbols, "-$" ); 
     1148    } 
    10981149 
    10991150    int i = strlen(prefix);