// This file is part of fityk program. Copyright (C) Marcin Wojdyr
// Licence: GNU General Public License version 2
// $Id: pane.h 288 2007-04-22 02:14:02Z wojdyr $
#ifndef FITYK__WX_PANE__H__
#define FITYK__WX_PANE__H__
#include <wx/config.h>
#include <wx/spinctrl.h>
#include <list>
#include <vector>
#include <assert.h>
#include "cmn.h" //for MouseModeEnum, ProportionalSplitter
#include "../common.h" // OutputStyle
class PlotPane;
class IOPane;
class MainPlot;
class AuxPlot;
class FPlot;
class BgManager;
class InputLine;
class OutputWin : public wxTextCtrl
{
public:
OutputWin (wxWindow *parent, wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize);
void append_text (OutputStyle style, const wxString& str);
void OnRightDown (wxMouseEvent& event);
void OnPopupColor (wxCommandEvent& event);
void OnPopupFont (wxCommandEvent& event);
void OnPopupClear (wxCommandEvent& event);
void OnKeyDown (wxKeyEvent& event);
void save_settings(wxConfigBase *cf) const;
void read_settings(wxConfigBase *cf);
void show_fancy_dashes();
private:
wxColour text_color[4];
wxColour bg_color;
DECLARE_EVENT_TABLE()
};
class IOPane : public wxPanel
{
public:
IOPane(wxWindow *parent, wxWindowID id=-1);
void edit_in_input(std::string const& s);
void OnInputLine(wxString const& s);
OutputWin *output_win;
InputLine *input_field;
};
class PlotPane : public ProportionalSplitter
{
friend class FPrintout;
public:
PlotPane(wxWindow *parent, wxWindowID id=-1);
void zoom_forward();
std::string zoom_backward(int n=1);
void save_settings(wxConfigBase *cf) const;
void read_settings(wxConfigBase *cf);
void refresh_plots(bool update, bool only_main=false);
void set_mouse_mode(MouseModeEnum m);
void update_mouse_hints();
bool is_background_white();
std::vector<std::string> const& get_zoom_hist() const { return zoom_hist; }
MainPlot const* get_plot() const { return plot; }
MainPlot* get_plot() { return plot; }
BgManager* get_bg_manager();
std::vector<FPlot*> const get_visible_plots() const;
AuxPlot* get_aux_plot(int n) const
{ assert(n>=0 && n<2); return aux_plot[n]; }
void show_aux(int n, bool show);
bool aux_visible(int n) const;
void draw_crosshair(int X, int Y);
bool crosshair_cursor;
private:
MainPlot *plot;
ProportionalSplitter *aux_split;
AuxPlot *aux_plot[2];
std::vector<std::string> zoom_hist;
void do_draw_crosshair(int X, int Y);
DECLARE_EVENT_TABLE()
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1