Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

[a2776f]: uget-gtk / UgCategory-gtk.h Maximize Restore History

Download this file

UgCategory-gtk.h    114 lines (91 with data), 4.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
*
* Copyright (C) 2005-2011 by C.H. Huang
* plushuang.tw@gmail.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* ---
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the
* OpenSSL library under certain conditions as described in each
* individual source file, and distribute linked combinations
* including the two.
* You must obey the GNU Lesser General Public License in all respects
* for all of the code used other than OpenSSL. If you modify
* file(s) with this exception, you may extend this exception to your
* version of the file(s), but you are not obligated to do so. If you
* do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source
* files in the program, then also delete it here.
*
*/
#ifndef UG_CATEGORY_GTK_H
#define UG_CATEGORY_GTK_H
#include <gtk/gtk.h>
#include <UgCategory.h>
#include <UgDownloadWidget.h>
#ifdef __cplusplus
extern "C" {
#endif
#define UG_CATEGORY_GTK(category) ((UgCategoryGtk*) (category)->user.category)
#define UG_RELATION_GTK_CATEGORY(relation) ((UgCategoryGtk*) (relation)->user.category)
#define UG_RELATION_GTK_LISTSTORE(relation) ((GtkListStore*) (relation)->user.storage)
#define UG_RELATION_GTK_TREEITER(relation) ((GtkTreeIter*) (relation)->user.position)
#define UG_RELATION_GTK_DLWIDGET(relation) ((UgDownloadWidget*) (relation)->user.data)
// ----------------------------------------------------------------------------
// UgCategoryGtk: additional data for UgCategory and GTK+
//
typedef struct UgCategoryGtk UgCategoryGtk;
struct UgCategoryGtk
{
UgCategoryGtk* primary; // if it is NULL, this category is primary.
GtkListStore* store; // Only primary category has this.
GtkTreeModel* filter; // model or filter for primary.store
UgDownloadWidget all; // GtkTreeModelSort
UgDownloadWidget active; // GtkTreeModelFilter
UgDownloadWidget queuing; // GtkTreeModelFilter
UgDownloadWidget finished; // GtkTreeModelFilter
UgDownloadWidget recycled; // GtkTreeModelFilter
// iterator for UgCategoryWidget.store
GtkTreeIter tree_iter;
};
// If primary == NULL, this category will be a primary category.
// One uget-gtk program has only one primary category.
// All dataset store in primary category.
// Other categories use filter to classify dataset in primary category.
UgCategory* ug_category_new_with_gtk (UgCategory* primary);
// set additional data and functions to UgCategory.
void ug_category_use_gtk (UgCategory* category, UgCategory* primary);
// functions will be used by UgCategoryFuncs (UgCategory::funcs)
void ug_category_gtk_add (UgCategory* category, UgDataset* dataset);
GList* ug_category_gtk_get_all (UgCategory* category);
GList* ug_category_gtk_get_jobs(UgCategory* category);
void ug_category_gtk_changed (UgCategory* category, UgDataset* dataset);
// other functions used by uget-gtk
void ug_category_gtk_remove (UgCategory* category, UgDataset* dataset);
void ug_category_gtk_clear (UgCategory* category, UgCategoryHints hint, guint from_nth);
void ug_category_gtk_move_to (UgCategory* category, UgDataset* dataset, UgCategory* cdest);
gboolean ug_category_gtk_move_selected_up (UgCategory* category, UgDownloadWidget* dlwidget);
gboolean ug_category_gtk_move_selected_down (UgCategory* category, UgDownloadWidget* dlwidget);
gboolean ug_category_gtk_move_selected_to_top (UgCategory* category, UgDownloadWidget* dlwidget);
gboolean ug_category_gtk_move_selected_to_bottom (UgCategory* category, UgDownloadWidget* dlwidget);
// If no data cleared, return FALSE.
gboolean ug_category_gtk_clear_excess (UgCategory* category);
#ifdef __cplusplus
}
#endif
#endif // UG_CATEGORY_GTK_H