/* * * ProLinga-Run * * Copyright (C) 2002-2008 Xobas Software. * All rights reserved. * * This file is part of ProLinga-Run. * * ProLinga-Run is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ProLinga-Run 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ProLinga-Run. If not, see . * * More information is available at the following addresses: * * Website : http://www.prolinga.org * * Email : prolinga-list@prolinga.org * * */ #ifndef __CMD_LIST_HPP #define __CMD_LIST_HPP #define LIST_SORTING_NONE 0 #define LIST_SORTING_ASCENDING 1 #define LIST_SORTING_DESCENDING 2 #define LIST_NUMBER 0 #define LIST_TEXT 1 void ResetStores(void); extern "C" void tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data); class ListHeader { friend class ListStore; public: ListHeader(); ~ListHeader(); private: int position; char *label; int dataType; ListHeader *nextPtr; char *getValue(ListHeader *lheadPtr, const int colNo); void putValue(ListHeader **lheadPtr, const int colNo, const char *labelText); int getDataType(ListHeader *lheadPtr, const int colNo); void putDataType(ListHeader **lheadPtr, const int colNo, const int type); void deleteList(ListHeader **lheadPtr); void printList(ListHeader *lheadPtr) const; }; typedef ListHeader *ListHeaderPtr; class ListStore { public: ListStore(); ~ListStore(); GtkListStore *getValue(ListStore **listPtr, const char *name); GtkListStore *getStore(ListStore **listPtr, const char *name, const bool isMainThread); void loadStore(ListStore **listPtr, const char *name, xmlDocPtr doc, const bool isMainThread); char *getName(ListStore *listPtr, GtkListStore *store); int getNumberRows(ListStore *listPtr, const char *name, const bool isMainThread); int getNumberColumns(ListStore *listPtr, const char *name); void putNumberColumns(ListStore *listPtr, const char *name, const int cols); int getSortColumn(ListStore *listPtr, const char *name); void putSortColumn(ListStore *listPtr, const char *name, const int colNo); int getSortDirection(ListStore *listPtr, const char *name); void putSortDirection(ListStore *listPtr, const char *name, const int sorting); void addToList(ListStore **listPtr, const char *name, GtkListStore *storePtr); void updateStore(ListStore **listPtr, const char *name, GtkListStore *store, const bool isMainThread); void renameStore(ListStore **listPtr, const char *oldName, const char *newName); void deleteFromList(ListStore **listPtr, const char *name); void deleteList(ListStore **listPtr); void printList(ListStore *listPtr) const; char *getHeaderValue(ListStore *listPtr, const char *name, const int colNo); void putHeaderValue(ListStore **listPtr, const char *name, const int colNo, const char *labelText); int getColumnDataType(ListStore *listPtr, const char *name, const int colNo); void putColumnDataType(ListStore **listPtr, const char *name, const int colNo, const int type); GtkTreeSelection *getSelection(ListStore *listPtr, const char *name); void putSelection(ListStore **listPtr, const char *name, GtkTreeSelection *selection); void printHeaderList(ListStore *listPtr, const char *name) const; void printStoreList(ListStore *listPtr) const; private: char listName[32]; int numCols; int sortCol; int sortDirection; GtkListStore *storePtr; ListHeader *startPtr; GtkTreeSelection *cbSelection; ListStore *nextPtr; }; typedef ListStore *ListStorePtr; #endif /* CMD_LIST_HPP */