You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kstars/kstars/tools/observinglist.h

177 lines
5.1 KiB

/***************************************************************************
observinglist.h - Trinity Desktop Planetarium
-------------------
begin : 29 Nov 2004
copyright : (C) 2004 by Jeff Woods, Jason Harris
email : jcwoods@bellsouth.net, jharris@30doradus.org
***************************************************************************/
/***************************************************************************
* *
* This program 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 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef OBSERVINGLIST_H
#define OBSERVINGLIST_H
#include <kdialogbase.h>
#include "skyobject.h"
class KStars;
class ObservingListUI;
class TQStringList;
/**@class ObservingList
*Tool window for managing a custom list of objects. The window
*displays the Name, RA, Dec, mag, and type of each object in the list.
*
*By selecting an object in the list, you can perform a number of functions
*on that object:
*+ Center it in the display (TBD)
*+ Examine its Details Window (TBD)
*+ Point the telescope at it (TBD)
*+ Attach a custom icon or name label (TBD)
*+ Attach a trail (solar system only) (TBD)
*+ Open the AltVsTime tool (TBD)
*
*The user can also save/load their observing lists, and can export
*list data (TBD: as HTML table? CSV format? plain text?)
*
*The observing notes associated with the selected object are displayed
*below the list. (TBD)
*
*TODO:
*+ Implement a "shaded" state, in which the UI is compressed to
* make it easier to float on the KStars window. Displays only
* object names, and single-letter action buttons, and no user log.
*+ Implement an InfoBox version (the ultimate shaded state)
*
*@short Tool for managing a custom list of objects
*@author Jeff Woods, Jason Harris
*@version 1.0
*/
class ObservingList : public KDialogBase
{
Q_OBJECT
public:
/**@short Cunstructor
*/
ObservingList( KStars *_ks, TQWidget* parent = 0 );
/**@short Destuctor (empty)
*/
~ObservingList() {}
/**@return true if the object is in the observing list
*@p o pointer to the object to test.
*/
bool contains( const SkyObject *o );
SkyObject* first() { return obsList.first(); }
SkyObject* next() { return obsList.next(); }
uint count() const { return obsList.count(); }
/**@return true if the window is in its default "large" state.
*/
bool isLarge() const { return bIsLarge; }
/**@short If the current list has unsaved changes, ask the user about saving it.
*@note also clears the list in preparation of opening a new one
*/
void saveCurrentList();
public slots:
/**@short about to switch the visible table in the widget stack
*@p tab pointer to the table which is about to be shown
*/
void slotPrepTable( TQWidget *tab );
/**@short add a new object to list
*@p o pointer to the object to add to the list
*/
void slotAddObject( SkyObject *o=NULL );
/**@short Remove skyobjects which are highlighted in the
*observing list tool from the observing list.
*/
void slotRemoveObjects();
/**@short Remove skyobject from the observing list.
*@p o pointer to the SkyObject to be removed.
*Use SkyMap::clickedObject() if o is NULL (default)
*/
void slotRemoveObject( SkyObject *o=NULL );
/**@short center the selected object in the display
*/
void slotCenterObject();
/**@short slew the telescope to the selected object
*/
void slotSlewToObject();
/**@short Show the details window for the selected object
*/
void slotDetails();
/**@short Show the details window for the selected object
*/
void slotAVT();
/**@short Tasks needed when changing the selected object
*Save the user log of the previous selected object,
*find the new selected object in the obsList, and
*show the notes associated with the new selected object
*/
void slotNewSelection();
/**@short load an observing list from disk.
*/
void slotOpenList();
/**@short save the current observing list to disk.
*/
void slotSaveList();
/**@short save the current observing list to disk, specify filename.
*/
void slotSaveListAs();
/**@short construct a new observing list using the wizard.
*/
void slotWizard();
/**@short toggle between the large and small window states
*/
void slotToggleSize();
/**@short Save the user log text to a file.
*@note the log is attached to the current object in obsList.
*/
void saveCurrentUserLog();
protected slots:
void slotClose();
private:
void syncTableSelection( bool syncFullTable=true );
KStars *ks;
ObservingListUI *ui;
TQPtrList<SkyObject> obsList;
TQPtrList<SkyObject> SelectedObjects;
SkyObject *LogObject, *oCurrent;
uint noNameStars;
bool isModified, bIsLarge;
TQString ListName, FileName;
};
#endif // OBSERVINGLIST_H