void StatsTreeDialog::on_actionCopyToClipboard_triggered()
{
    GString* s= stats_tree_format_as_str(st_ ,ST_FORMAT_PLAIN, ui->statsTreeWidget->sortColumn(),
                ui->statsTreeWidget->header()->sortIndicatorOrder()==Qt::DescendingOrder);
    wsApp->clipboard()->setText(s->str);
    g_string_free(s,TRUE);
}
QByteArray StatsTreeDialog::getTreeAsString(st_format_type format)
{
    GString *str_tree;

    // produce output in selected format using current sort information
    str_tree = stats_tree_format_as_str(st_, format, statsTreeWidget()->sortColumn(),
                statsTreeWidget()->header()->sortIndicatorOrder()==Qt::DescendingOrder);

    return gstring_free_to_qbytearray(str_tree);
}
Exemple #3
0
static void
draw_stats_tree(void *psp)
{
	stats_tree *st = (stats_tree *)psp;
	GString *s;

	s= stats_tree_format_as_str(st, ST_FORMAT_PLAIN, stats_tree_get_default_sort_col(st),
				    stats_tree_is_default_sort_DESC(st));

	printf("%s", s->str);
	g_string_free(s, TRUE);
}
	/* Only call this once the entire list is drawn - else Gtk seems */
	/* to get sorting order wrong (sorting broken when new nodes are */
	/* added after setting sort column.) Also for performance.	   */
	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (st->pr->store), sort_column, order);
}

static gboolean
copy_tree_to_clipboard
(GtkWidget *win _U_, stats_tree *st)
{
	gint	     sort_column = N_RESERVED_COL; /* default */
	GtkSortType  order	 = GTK_SORT_DESCENDING;
	GString	    *s;

	gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (st->pr->store), &sort_column, &order);
	s= stats_tree_format_as_str(st,ST_FORMAT_PLAIN,sort_column-N_RESERVED_COL,order==GTK_SORT_DESCENDING);
	copy_to_clipboard(s);
	g_string_free (s,TRUE);

	return TRUE;
}


#ifndef USE_WIN32_FILE_DIALOGS
static gboolean
gtk_save_as_statstree(GtkWidget *win, GString *file_name, int *file_type)
{
	GtkWidget *saveas_w;
	GtkWidget *main_vb;
	GtkWidget *ft_hb, *ft_lb, *ft_combo_box;
	char	  *st_name;
void StatsTreeDialog::on_actionSaveAs_triggered()
{
    QString selectedFilter;
    st_format_type file_type;
    const char *file_ext;
    FILE *f;
    GString *str_tree;
    bool success= false;
    int last_errno;

    QFileDialog SaveAsDialog(this, tr("Wireshark: Save stats tree as ..."), get_last_open_dir());
    SaveAsDialog.setNameFilter(tr("Plain text file (*.txt);;"
                                    "Comma separated values (*.csv);;"
                                    "XML document (*.xml);;"
                                    "YAML document (*.yaml)"));
    SaveAsDialog.selectNameFilter(tr("Plain text file (*.txt)"));
    SaveAsDialog.setAcceptMode(QFileDialog::AcceptSave);
    if (!SaveAsDialog.exec()) {
        return;
    }
    selectedFilter= SaveAsDialog.selectedNameFilter();
    if (selectedFilter.contains("*.yaml", Qt::CaseInsensitive)) {
        file_type= ST_FORMAT_YAML;
        file_ext = ".yaml";
    }
    else if (selectedFilter.contains("*.xml", Qt::CaseInsensitive)) {
        file_type= ST_FORMAT_XML;
        file_ext = ".xml";
    }
    else if (selectedFilter.contains("*.csv", Qt::CaseInsensitive)) {
        file_type= ST_FORMAT_CSV;
        file_ext = ".csv";
    }
    else {
        file_type= ST_FORMAT_PLAIN;
        file_ext = ".txt";
    }

    // Get selected filename and add extension of necessary
    QString file_name = SaveAsDialog.selectedFiles()[0];
    if (!file_name.endsWith(file_ext, Qt::CaseInsensitive)) {
        file_name.append(file_ext);
    }

    // produce output in selected format using current sort information
    str_tree=stats_tree_format_as_str(st_ ,file_type, ui->statsTreeWidget->sortColumn(),
                ui->statsTreeWidget->header()->sortIndicatorOrder()==Qt::DescendingOrder);

    // actually save the file
    f= ws_fopen (file_name.toUtf8().constData(),"w");
    last_errno= errno;
    if (f) {
        if (fputs(str_tree->str, f)!=EOF) {
            success= true;
        }
        last_errno= errno;
        fclose(f);
    }
    if (!success) {
        QMessageBox::warning(this, tr("Error saving file %1").arg(file_name),
                             g_strerror (last_errno));
    }

    g_string_free(str_tree, TRUE);
}