static void editlist_gui_sort (GtkWidget * igad) { int row; row = gtkutil_clist_selection (editlist_gui_list); if (row != -1) gtk_clist_unselect_row (GTK_CLIST (editlist_gui_list), row, 0); gtk_clist_sort (GTK_CLIST (editlist_gui_list)); }
void upload_stats_gui_thaw(void) { GtkCList *clist = clist_ul_stats(); g_return_if_fail(clist); gtk_clist_thaw(clist); if (0 == clist->freeze_count) { gtk_clist_sort(clist); clist_sync_rows(clist, on_clist_ul_stats_row_moved); } }
void on_mailbox_click_column (GtkCList * clist, gint column, gpointer UNUSED(user_data)) { if ((sort & (~SORT_DIRECTION)) == column) sort ^= SORT_DIRECTION; else sort = column | (sort & SORT_DIRECTION); gtk_clist_set_sort_column (clist, column); gtk_clist_set_sort_type (clist, (sort & SORT_DIRECTION) ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); gtk_clist_sort (clist); }
static void click_column(GtkCList *clist, int column) { if (column != clist->sort_column) { gtk_clist_set_sort_type(clist, GTK_SORT_ASCENDING); gtk_clist_set_sort_column(clist, column); } else { if (clist->sort_type == GTK_SORT_ASCENDING) gtk_clist_set_sort_type(clist, GTK_SORT_DESCENDING); else gtk_clist_set_sort_type(clist, GTK_SORT_ASCENDING); } gtk_clist_sort(clist); }
gboolean widget_table_click_column_callback(GtkWidget *widget, gint column, variable *var) { gint last_column = -1; gint sort_type; #ifdef DEBUG_TRANSITS fprintf(stderr, "%s(): Entering.\n", __func__); #endif #if !GTK_CHECK_VERSION(3,0,0) /* gtk3: Deprecated in gtk2 and now gone */ /* Set sort column to the clicked column */ gtk_clist_set_sort_column(GTK_CLIST(widget), column); /* Get last recorded column if it exists */ if (g_object_get_data(G_OBJECT(widget), "_last-column") != NULL) { last_column = (gint)g_object_get_data(G_OBJECT(widget), "_last-column"); last_column--; } #ifdef DEBUG_CONTENT fprintf(stderr, "%s(): column=%i last-column=%i\n", __func__, column, last_column); #endif /* If last recorded column matches column then flip sort direction */ if (last_column == column) { /* Get sort-type (direction) and flip it */ g_object_get(G_OBJECT(widget), "sort-type", &sort_type, NULL); sort_type = 1 - sort_type; gtk_clist_set_sort_type(GTK_CLIST(widget), sort_type); } /* Store "last-column" as a piece of widget data (recreated if exists) */ /* Warning: Storing zero kills the piece of data so we have to * maintain it with +1 on set, -1 on get */ column++; g_object_set_data(G_OBJECT(widget), "_last-column", (gpointer)column); /* Sit back and be amazed */ gtk_clist_sort(GTK_CLIST(widget)); #endif #ifdef DEBUG_TRANSITS fprintf(stderr, "%s(): Exiting.\n", __func__); #endif return TRUE; }
/** * Called when a row of the upload stats should be updated */ void upload_stats_gui_update_model(struct ul_stats *us) { GtkCList *clist = clist_ul_stats(); enum c_us i; int row; row = ul_stats_get_row(us); g_return_if_fail(row >= 0); for (i = 0; i < c_us_num; i++) { const char *text = NULL; char tmpstr[16]; switch (i) { case c_us_filename: case c_us_size: /* Never updated, only initialized */ continue; case c_us_attempts: text = uint64_to_string(us->attempts); break; case c_us_complete: text = uint64_to_string(us->complete); break; case c_us_norm: gm_snprintf(tmpstr, sizeof tmpstr, "%.3f", us->norm); text = tmpstr; break; case c_us_rtime: text = us->rtime ? timestamp_to_string(us->rtime) : ""; break; case c_us_dtime: text = us->dtime ? timestamp_to_string(us->dtime) : ""; break; case c_us_num: text = NULL; g_assert_not_reached(); } gtk_clist_set_text(clist, row, i, text); } /* FIXME: use auto-sort? */ if (0 == clist->freeze_count) { gtk_clist_sort(clist); clist_sync_rows(clist, on_clist_ul_stats_row_moved); } }
/** * Called when the filename of a row of the upload stats should be updated */ void upload_stats_gui_update_name(struct ul_stats *us) { GtkCList *clist = clist_ul_stats(); int row; /* find this file in the clist_ul_stats */ row = ul_stats_get_row(us); g_return_if_fail(row >= 0); gtk_clist_set_text(clist, row, c_us_filename, lazy_utf8_to_ui_string(us->filename)); /* FIXME: use auto-sort? */ if (0 == clist->freeze_count) { gtk_clist_sort(clist); clist_sync_rows(clist, on_clist_ul_stats_row_moved); } }
static void gensetup_add_clicked(GtkWidget* widget, TGENSETUP *gensetup_t) { char *szKey; char *data[2]; int i = 0; if (gensetup_t) { data[0] = gtk_entry_get_text (GTK_ENTRY (gensetup_t->key_entry)); if (STRLEN (data[0])) { data[1] = gtk_entry_get_text (GTK_ENTRY (gensetup_t->value_entry)); /* Try to see if the keyword already exists */ for (i = 0; i < GTK_CLIST (gensetup_t->key_list)->rows; i++) { gtk_clist_get_text (GTK_CLIST (gensetup_t->key_list), i, 0, &szKey); if (STREQ (data[0], szKey)) goto done; } /* An update operation */ if (i < GTK_CLIST (gensetup_t->key_list)->rows) { gtk_clist_set_text (GTK_CLIST (gensetup_t->key_list), i, 1, data[1]); } else if (STRLEN (data[1])) { gtk_clist_append (GTK_CLIST (gensetup_t->key_list), data); } } gtk_clist_sort (GTK_CLIST (gensetup_t->key_list)); done: gtk_entry_set_text (GTK_ENTRY (gensetup_t->key_entry), ""); gtk_entry_set_text (GTK_ENTRY (gensetup_t->value_entry), ""); } }
static void clist_click_column(GtkCList *clist, gint column, gpointer data) { if (ui_layout.sortcol == column) { ui_layout.sortdir = -(ui_layout.sortdir); } else { ui_layout.sortcol = column; ui_layout.sortdir = 1; } gtk_clist_set_sort_column(clist, ui_layout.sortcol); gtk_clist_set_sort_type(clist, ui_layout.sortdir == 1 ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); if (column == 1) { gtk_clist_set_compare_func(clist, statuscmp); } else { /* Just use the default compare function for the rest of the * columns */ gtk_clist_set_compare_func(clist, NULL); } gtk_clist_sort(clist); }
static void dbg_property_show_list(const GSList *props) { GtkCList *clist; const GSList *sl; clist = GTK_CLIST(gui_dlg_prefs_lookup("clist_dbg_property")); gtk_clist_freeze(clist); gtk_clist_clear(clist); for (sl = props; NULL != sl; sl = g_slist_next(sl)) { static const gchar * const titles[num_dbg_cols] = { "", "", "", "", }; property_t prop = GPOINTER_TO_UINT(sl->data); gint row; row = gtk_clist_append(clist, deconstify_gpointer(titles)); dbg_property_set_row(clist, row, prop); } gtk_clist_sort(clist); gtk_clist_columns_autosize(clist); gtk_clist_thaw(clist); }
void on_clist_dbg_property_click_column(GtkCList *clist, gint column, gpointer unused_udata) { gboolean do_sort = FALSE; (void) unused_udata; g_assert(column >= 0 && column < num_dbg_cols); switch ((enum dbg_cols) column) { case dbg_col_saved: gtk_clist_set_compare_func(clist, dbg_property_cmp_saved); dbg_property_cmp_saved_inverted = !dbg_property_cmp_saved_inverted; do_sort = TRUE; break; case dbg_col_type: gtk_clist_set_compare_func(clist, dbg_property_cmp_type); dbg_property_cmp_type_inverted = !dbg_property_cmp_type_inverted; do_sort = TRUE; break; case dbg_col_name: gtk_clist_set_compare_func(clist, dbg_property_cmp_name); dbg_property_cmp_name_inverted = !dbg_property_cmp_name_inverted; do_sort = TRUE; break; case dbg_col_value: /* Don't sort by values */ break; case num_dbg_cols: g_assert_not_reached(); } if (do_sort) gtk_clist_sort(clist); }
/* Update the keylist, if it's visible */ static void otrg_gtk_ui_update_keylist(void) { gchar *titles[5]; char hash[OTRL_PRIVKEY_FPRINT_HUMAN_LEN]; ConnContext * context; Fingerprint * fingerprint; int selected_row = -1; GtkWidget *keylist = ui_layout.keylist; if (keylist == NULL) return; gtk_clist_freeze(GTK_CLIST(keylist)); gtk_clist_clear(GTK_CLIST(keylist)); for (context = otrg_plugin_userstate->context_root; context != NULL; context = context->next) { int i; PurplePlugin *p; const char *proto_name; if (context->m_context != context) continue; fingerprint = context->fingerprint_root.next; /* If there's no fingerprint, don't add it to the known * fingerprints list */ while(fingerprint) { ConnContext *context_iter; TrustLevel best_level = TRUST_NOT_PRIVATE; int used = 0; titles[0] = context->username; titles[1] = _("Unused"); for (context_iter = context->m_context; context_iter && context_iter->m_context == context->m_context; context_iter = context_iter->next) { TrustLevel this_level = TRUST_NOT_PRIVATE; if (context_iter->active_fingerprint == fingerprint) { this_level = otrg_plugin_context_to_trust(context_iter); used = 1; if (this_level == TRUST_PRIVATE) { best_level = TRUST_PRIVATE; } else if (this_level == TRUST_UNVERIFIED && best_level != TRUST_PRIVATE) { best_level = TRUST_UNVERIFIED; } else if (this_level == TRUST_FINISHED && best_level == TRUST_NOT_PRIVATE) { best_level = TRUST_FINISHED; } } } if (used) { titles[1] = (gchar *) _(trust_states[best_level]); } titles[2] = otrg_fingerprint_is_trusted(fingerprint) ? _("Yes") : _("No"); otrl_privkey_hash_to_human(hash, fingerprint->fingerprint); titles[3] = hash; p = purple_find_prpl(context->protocol); proto_name = (p && p->info->name) ? p->info->name : _("Unknown"); titles[4] = g_strdup_printf("%s (%s)", context->accountname, proto_name); i = gtk_clist_append(GTK_CLIST(keylist), titles); g_free(titles[4]); gtk_clist_set_row_data(GTK_CLIST(keylist), i, fingerprint); if (ui_layout.selected_fprint == fingerprint) { selected_row = i; } fingerprint = fingerprint->next; } } if (selected_row >= 0) { gtk_clist_select_row(GTK_CLIST(keylist), selected_row, 0); } else { clist_all_unselected(); } gtk_clist_sort(GTK_CLIST(keylist)); gtk_clist_thaw(GTK_CLIST(keylist)); }
static void ReadSpeedDial(void) { PhonebookEntry *pbEntry; D_SpeedDial *d; PhoneEvent *e; gchar *row[3]; gchar buf[2] = " "; gint location; register gint i, row_i = 0; if (!GUI_ContactsIsIntialized()) GUI_ReadContacts(); gtk_label_set_text(GTK_LABEL(infoDialog.text), _("Reading data ...")); gtk_widget_show_now(infoDialog.dialog); GUI_Refresh(); gtk_clist_freeze(GTK_CLIST(clist)); gtk_clist_clear(GTK_CLIST(clist)); for (i = 2; i < 10; i++) { if ((d = (D_SpeedDial *) g_malloc(sizeof(D_SpeedDial))) == NULL) { g_print(_("Error: %s: line %d: Can't allocate memory!\n"), __FILE__, __LINE__); return; } memset(d, 0, sizeof(D_SpeedDial)); d->entry.number = i; if ((e = (PhoneEvent *) g_malloc(sizeof(PhoneEvent))) == NULL) { g_print(_("Error: %s: line %d: Can't allocate memory!\n"), __FILE__, __LINE__); g_free(d); return; } e->event = Event_GetSpeedDial; e->data = d; GUI_InsertEvent(e); pthread_mutex_lock(&speedDialMutex); pthread_cond_wait(&speedDialCond, &speedDialMutex); pthread_mutex_unlock(&speedDialMutex); if (d->status != GN_ERR_NONE) { g_print(_("Cannot read speed dial key %d!\n"), i); *buf = i + '0'; row[0] = buf; row[1] = '\0'; row[2] = '\0'; } else { if (d->entry.location == 0) location = i; else location = d->entry.location; if ((pbEntry = GUI_GetEntry(d->entry.memory_type, location)) == NULL) { g_free(d); continue; } *buf = i + '0'; row[0] = buf; row[1] = pbEntry->entry.name; row[2] = pbEntry->entry.number; } gtk_clist_append(GTK_CLIST(clist), row); gtk_clist_set_row_data_full(GTK_CLIST(clist), row_i++, (gpointer) d, DestroyCListData); /* GUI_Refresh (); */ } gtk_widget_hide(infoDialog.dialog); gtk_clist_sort(GTK_CLIST(clist)); gtk_clist_thaw(GTK_CLIST(clist)); speedDialInitialized = TRUE; }
static void OkImportDialog(GtkWidget * w, GtkFileSelection * fs) { FILE *f; D_SpeedDial *d; PhonebookEntry *pbEntry; gchar buf[IO_BUF_LEN]; gchar *row[3]; gchar *fileName; gint location; register gint i, row_i = 0; fileName = (gchar *) gtk_file_selection_get_filename(GTK_FILE_SELECTION(fs)); gtk_widget_hide(GTK_WIDGET(fs)); if ((f = fopen(fileName, "r")) == NULL) { g_snprintf(buf, IO_BUF_LEN, _("Can't open file %s for reading!\n"), fileName); gtk_label_set_text(GTK_LABEL(errorDialog.text), buf); gtk_widget_show(errorDialog.dialog); return; } if (!GUI_ContactsIsIntialized()) GUI_ReadContacts(); gtk_clist_freeze(GTK_CLIST(clist)); gtk_clist_clear(GTK_CLIST(clist)); speedDialInitialized = FALSE; i = 0; while (fgets(buf, IO_BUF_LEN, f) && i++ < 9) { if ((d = (D_SpeedDial *) g_malloc(sizeof(D_SpeedDial))) == NULL) { g_print(_("Error: %s: line %d: Can't allocate memory!\n"), __FILE__, __LINE__); gtk_clist_clear(GTK_CLIST(clist)); gtk_clist_sort(GTK_CLIST(clist)); gtk_clist_thaw(GTK_CLIST(clist)); return; } if (ParseLine(d, buf)) { if (d->entry.number != i) { g_free(d); gtk_clist_clear(GTK_CLIST(clist)); gtk_label_set_text(GTK_LABEL(errorDialog.text), _("Error reading file!")); gtk_widget_show(errorDialog.dialog); gtk_clist_sort(GTK_CLIST(clist)); gtk_clist_thaw(GTK_CLIST(clist)); return; } if (d->entry.location == 0) location = i; else location = d->entry.location; if ((pbEntry = GUI_GetEntry(d->entry.memory_type - 2, location)) == NULL) { g_free(d); continue; } *buf = i + '0'; *(buf + 1) = '\0'; row[0] = buf; row[1] = pbEntry->entry.name; row[2] = pbEntry->entry.number; gtk_clist_append(GTK_CLIST(clist), row); gtk_clist_set_row_data_full(GTK_CLIST(clist), row_i++, (gpointer) d, DestroyCListData); } else { g_free(d); gtk_clist_clear(GTK_CLIST(clist)); gtk_label_set_text(GTK_LABEL(errorDialog.text), _("Error reading file!")); gtk_widget_show(errorDialog.dialog); gtk_clist_sort(GTK_CLIST(clist)); gtk_clist_thaw(GTK_CLIST(clist)); return; } } gtk_clist_sort(GTK_CLIST(clist)); gtk_clist_thaw(GTK_CLIST(clist)); speedDialInitialized = TRUE; }
inline void SetSortColumn(GtkWidget * widget, SortColumn * data) { gtk_clist_set_sort_column(GTK_CLIST(data->clist), data->column); gtk_clist_sort(GTK_CLIST(data->clist)); }
void adddrivers_to_list (GtkWidget *widget, GtkWidget *dlg) { SQLCHAR drvdesc[1024], drvattrs[1024], driver[1024], size[64]; SQLCHAR *data[4]; void *handle; struct stat _stat; SQLSMALLINT len, len1; SQLRETURN ret; HENV henv, drv_henv; HDBC drv_hdbc; pSQLGetInfoFunc funcHdl; pSQLAllocHandle allocHdl; pSQLAllocEnv allocEnvHdl = NULL; pSQLAllocConnect allocConnectHdl = NULL; pSQLFreeHandle freeHdl; pSQLFreeEnv freeEnvHdl; pSQLFreeConnect freeConnectHdl; if (!GTK_IS_CLIST (widget)) return; gtk_clist_clear (GTK_CLIST (widget)); /* Create a HENV to get the list of drivers then */ ret = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { _iodbcdm_nativeerrorbox (dlg, henv, SQL_NULL_HANDLE, SQL_NULL_HANDLE); goto end; } /* Set the version ODBC API to use */ SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER); /* Get the list of drivers */ ret = SQLDrivers (henv, SQL_FETCH_FIRST, drvdesc, sizeof (drvdesc) / sizeof (SQLTCHAR), &len, drvattrs, sizeof (drvattrs) / sizeof (SQLTCHAR), &len1); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO && ret != SQL_NO_DATA) { _iodbcdm_nativeerrorbox (dlg, henv, SQL_NULL_HANDLE, SQL_NULL_HANDLE); goto error; } while (ret != SQL_NO_DATA) { data[0] = drvdesc; /* Get the driver library name */ SQLSetConfigMode (ODBC_BOTH_DSN); SQLGetPrivateProfileString (drvdesc, "Driver", "", driver, sizeof (driver) / sizeof (SQLTCHAR), "odbcinst.ini"); if (driver[0] == '\0') SQLGetPrivateProfileString ("Default", "Driver", "", driver, sizeof (driver) / sizeof (SQLTCHAR), "odbcinst.ini"); if (driver[0] == '\0') { data[0] = NULL; goto skip; } data[1] = driver; drv_hdbc = NULL; drv_henv = NULL; if ((handle = (void *) DLL_OPEN (driver)) != NULL) { if ((allocHdl = (pSQLAllocHandle) DLL_PROC (handle, "SQLAllocHandle")) != NULL) { ret = allocHdl (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &drv_henv); if (ret == SQL_ERROR) goto nodriverver; ret = allocHdl (SQL_HANDLE_DBC, drv_henv, &drv_hdbc); if (ret == SQL_ERROR) goto nodriverver; } else { if ((allocEnvHdl = (pSQLAllocEnv) DLL_PROC (handle, "SQLAllocEnv")) != NULL) { ret = allocEnvHdl (&drv_henv); if (ret == SQL_ERROR) goto nodriverver; } else goto nodriverver; if ((allocConnectHdl = (pSQLAllocConnect) DLL_PROC (handle, "SQLAllocConnect")) != NULL) { ret = allocConnectHdl (drv_henv, &drv_hdbc); if (ret == SQL_ERROR) goto nodriverver; } else goto nodriverver; } if ((funcHdl = (pSQLGetInfoFunc) DLL_PROC (handle, "SQLGetInfo")) != NULL) { /* Retrieve some information */ ret = funcHdl (drv_hdbc, SQL_DRIVER_VER, drvattrs, sizeof (drvattrs), &len); if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) { unsigned int z; /* Drop the description if one provided */ for (z = 0; ((char *) drvattrs)[z]; z++) if (((char *) drvattrs)[z] == ' ') ((char *) drvattrs)[z] = '\0'; data[2] = drvattrs; } else goto nodriverver; } else goto nodriverver; } else { nodriverver: data[2] = "##.##"; } if (drv_hdbc || drv_henv) { if (allocConnectHdl && (freeConnectHdl = (pSQLFreeConnect) DLL_PROC (handle, "SQLFreeConnect")) != NULL) { freeConnectHdl (drv_hdbc); drv_hdbc = NULL; } if (allocEnvHdl && (freeEnvHdl = (pSQLFreeEnv) DLL_PROC (handle, "SQLFreeEnv")) != NULL) { freeEnvHdl (drv_henv); drv_henv = NULL; } } if ((drv_hdbc || drv_henv) && (freeHdl = (pSQLFreeHandle) DLL_PROC (handle, "SQLFreeHandle")) != NULL) { if (drv_hdbc) freeHdl (SQL_HANDLE_DBC, drv_hdbc); if (drv_henv) freeHdl (SQL_HANDLE_ENV, drv_henv); } if (handle) DLL_CLOSE (handle); /* Get the size of the driver */ if (!stat (driver, &_stat)) { sprintf (size, "%d Kb", (int) (_stat.st_size / 1024)); data[3] = size; } else data[3] = "-"; gtk_clist_append (GTK_CLIST (widget), data); skip: ret = SQLDrivers (henv, SQL_FETCH_NEXT, drvdesc, sizeof (drvdesc) / sizeof (SQLTCHAR), &len, drvattrs, sizeof (drvattrs) / sizeof (SQLTCHAR), &len1); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO && ret != SQL_NO_DATA) { _iodbcdm_nativeerrorbox (dlg, henv, SQL_NULL_HANDLE, SQL_NULL_HANDLE); goto error; } } error: /* Clean all that */ SQLFreeHandle (SQL_HANDLE_ENV, henv); end: if (GTK_CLIST (widget)->rows > 0) { gtk_clist_columns_autosize (GTK_CLIST (widget)); gtk_clist_sort (GTK_CLIST (widget)); } }
/* a mailbox was clicked * TODO: this is called twice on keypress... up and down? */ void on_mailboxlist_tree_select_row (GtkCTree * ctree, GList * UNUSED(node), gint UNUSED(column), gpointer UNUSED(user_data)) { GtkWidget *mailbox, *stat; GtkCTreeNode *n; GtkCList *clist; GtkWidget *appbar; gchar *text[3]; synopsis **syn; int x = 0, mboxcount; mboxview *m; n = gtk_ctree_node_nth (ctree, (&(ctree->clist))->focus_row); m = (mboxview *) gtk_ctree_node_get_row_data (ctree, n); if (m == NULL) { printf (_("Bad mbox (null)\n")); exit (-1); } stat = lookup_widget (gems, "appbar1"); mailbox = lookup_widget (gems, "mailbox"); appbar = lookup_widget (gems, "appbar1"); /*** TODO *** clear the mail things */ putmail (NULL); gnome_appbar_push (GNOME_APPBAR (stat), _("Reading synopsis")); while (gtk_events_pending ()) gtk_main_iteration (); syn = (synopsis **) db_read_synopsis (m->mailbox->id, m->status); gnome_appbar_pop (GNOME_APPBAR (stat)); gnome_appbar_push (GNOME_APPBAR (stat), _("Displaying mailbox")); while (gtk_events_pending ()) gtk_main_iteration (); clist = >K_CTREE (mailbox)->clist; gtk_clist_clear (clist); while (gtk_events_pending ()) gtk_main_iteration (); gtk_clist_freeze (clist); if(syn) { mboxcount = 0; while (syn[mboxcount] != NULL) mboxcount++; while (syn[x] != NULL) { GtkCTreeNode *n; text[0] = syn[x]->sender; text[1] = syn[x]->date; text[2] = syn[x]->subject; n = gtk_ctree_insert_node (GTK_CTREE (mailbox), NULL, NULL, text, 5, NULL, NULL, NULL, NULL, TRUE, TRUE); gtk_ctree_node_set_row_data (GTK_CTREE (mailbox), n, syn[x]); gnome_appbar_set_progress (GNOME_APPBAR (appbar), (float)x / (float)mboxcount); /* * pump the status bar */ if (gtk_events_pending ()) gtk_main_iteration (); x++; } free (syn); } gtk_clist_set_sort_column (clist, 1); gtk_clist_set_sort_type (clist, GTK_SORT_ASCENDING); gtk_clist_sort (clist); gtk_clist_thaw (clist); update_mboxlist (NULL); gnome_appbar_set_progress (GNOME_APPBAR (appbar), 0.0); gnome_appbar_pop (GNOME_APPBAR (stat)); /* * gtk_signal_handler_unblock(GTK_OBJECT(ctree), select_row); */ }
void addtranslators_to_list (GtkWidget *widget, GtkWidget *dlg) { char *curr, *buffer = (char *) malloc (sizeof (char) * 65536), *szDriver; char driver[1024], _date[1024], _size[1024]; char *data[4]; int len, i; BOOL careabout; UWORD confMode = ODBC_USER_DSN; struct stat _stat; if (!buffer || !GTK_IS_CLIST (widget)) return; gtk_clist_clear (GTK_CLIST (widget)); /* Get the current config mode */ while (confMode != ODBC_SYSTEM_DSN + 1) { /* Get the list of drivers in the user context */ SQLSetConfigMode (confMode); #ifdef WIN32 len = SQLGetPrivateProfileString ("ODBC 32 bit Translators", NULL, "", buffer, 65535, "odbcinst.ini"); #else len = SQLGetPrivateProfileString ("ODBC Translators", NULL, "", buffer, 65535, "odbcinst.ini"); #endif if (len) goto process; goto end; process: for (curr = buffer; *curr; curr += (STRLEN (curr) + 1)) { /* Shadowing system odbcinst.ini */ for (i = 0, careabout = TRUE; i < GTK_CLIST (widget)->rows; i++) { gtk_clist_get_text (GTK_CLIST (widget), i, 0, &szDriver); if (!strcmp (szDriver, curr)) { careabout = FALSE; break; } } if (!careabout) continue; SQLSetConfigMode (confMode); #ifdef WIN32 SQLGetPrivateProfileString ("ODBC 32 bit Translators", curr, "", driver, sizeof (driver), "odbcinst.ini"); #else SQLGetPrivateProfileString ("ODBC Translators", curr, "", driver, sizeof (driver), "odbcinst.ini"); #endif /* Check if the driver is installed */ if (strcasecmp (driver, "Installed")) goto end; /* Get the driver library name */ SQLSetConfigMode (confMode); if (!SQLGetPrivateProfileString (curr, "Translator", "", driver, sizeof (driver), "odbcinst.ini")) { SQLSetConfigMode (confMode); SQLGetPrivateProfileString ("Default", "Translator", "", driver, sizeof (driver), "odbcinst.ini"); } if (STRLEN (curr) && STRLEN (driver)) { data[0] = curr; data[1] = driver; /* Get some information about the driver */ if (!stat (driver, &_stat)) { sprintf (_size, "%lu Kb", (unsigned long) _stat.st_size / 1024L); sprintf (_date, "%s", ctime (&_stat.st_mtime)); data[2] = _date; data[3] = _size; gtk_clist_append (GTK_CLIST (widget), data); } } } end: if (confMode == ODBC_USER_DSN) confMode = ODBC_SYSTEM_DSN; else confMode = ODBC_SYSTEM_DSN + 1; } if (GTK_CLIST (widget)->rows > 0) { gtk_clist_columns_autosize (GTK_CLIST (widget)); gtk_clist_sort (GTK_CLIST (widget)); } /* Make the clean up */ free (buffer); }
void gtkShow(int type, char *param) { switch (type) { case evEqualizer: ShowEqualizer(); gtkSetLayer(Equalizer); break; case evSkinBrowser: ShowSkinBrowser(); // gtk_clist_clear(GTK_CLIST(SkinList)); if (FillSkinList(sbSkinDirInHome) && FillSkinList(sbSkinDirInData)) { gtkSelectInCList(SkinList, param); gtk_clist_sort(GTK_CLIST(SkinList)); gtk_widget_show(SkinBrowser); gtkSetLayer(SkinBrowser); } else { gtk_widget_destroy(SkinBrowser); gtkMessageBox(MSGBOX_ERROR, "Skin dirs not found ... Please install skins."); } break; case evPreferences: ShowPreferences(); break; case evPlaylist: ShowPlaylist(); gtkSetLayer(Playlist); break; case evLoad: ShowFileSelector(FILESELECT_VIDEO_AUDIO); gtkSetLayer(FileSelector); break; case evLoadSubtitle: ShowFileSelector(FILESELECT_SUBTITLE); gtkSetLayer(FileSelector); break; case evLoadAudioFile: ShowFileSelector(FILESELECT_AUDIO); gtkSetLayer(FileSelector); break; case evPlayImage: ShowFileSelector(FILESELECT_IMAGE); gtkSetLayer(FileSelector); break; case evAbout: ShowAbout(); gtkSetLayer(About); break; case ivShowPopUpMenu: gtkPopupMenu = evNone; gtkPopupMenuParam = 0; if (PopUpMenu) { gtk_widget_hide(PopUpMenu); gtk_widget_destroy(PopUpMenu); } PopUpMenu = CreatePopUpMenu(); gtk_menu_popup(GTK_MENU(PopUpMenu), NULL, NULL, NULL, NULL, 0, 0); break; case ivHidePopUpMenu: if (PopUpMenu) { gtk_widget_hide(PopUpMenu); gtk_widget_destroy(PopUpMenu); PopUpMenu = NULL; } break; case evLoadURL: ShowURLDialog(); gtkSetLayer(URLDialog); break; } }