finalcut/src/fmessagebox.h

184 lines
4.9 KiB
C
Raw Normal View History

// File: fmessagebox.h
// Provides: class FMessageBox
//
// Inheritance diagram
// ═══════════════════
//
// ▕▔▔▔▔▔▔▔▔▔▏ ▕▔▔▔▔▔▔▔▔▔▏
// ▕ FObject ▏ ▕ FTerm ▏
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▏
// ▲ ▲
// │ │
// └─────┬─────┘
// │
// ▕▔▔▔▔▔▔▔▔▏
// ▕ FVTerm ▏
// ▕▁▁▁▁▁▁▁▁▏
// ▲
// │
// ▕▔▔▔▔▔▔▔▔▔▏
// ▕ FWidget ▏
// ▕▁▁▁▁▁▁▁▁▁▏
// ▲
// │
// ▕▔▔▔▔▔▔▔▔▔▏
// ▕ FWindow ▏
// ▕▁▁▁▁▁▁▁▁▁▏
// ▲
// │
// ▕▔▔▔▔▔▔▔▔▔▏
// ▕ FDialog ▏
// ▕▁▁▁▁▁▁▁▁▁▏
// ▲
// │
// ▕▔▔▔▔▔▔▔▔▔▔▔▔▔▏
// ▕ FMessageBox ▏
// ▕▁▁▁▁▁▁▁▁▁▁▁▁▁▏
2015-05-23 13:35:12 +02:00
#ifndef _FMESSAGEBOX_H
#define _FMESSAGEBOX_H
#include <cstring>
#include "fbutton.h"
#include "fdialog.h"
#include "fterm.h"
//----------------------------------------------------------------------
// class FMessageBox
//----------------------------------------------------------------------
#pragma pack(push)
#pragma pack(1)
class FMessageBox : public FDialog
{
public:
enum
{
Reject = 0,
Ok = 1,
Cancel = 2,
Yes = 3,
No = 4,
Abort = 5,
Retry = 6,
Ignore = 7
};
private:
FString headline_text;
FString text;
2015-05-23 13:35:12 +02:00
FString* text_components;
std::vector<FString> text_split;
uInt max_line_width;
bool center_text;
short emphasis_color;
uInt num_buttons;
uInt text_num_lines;
int* button_digit[3];
2015-05-23 13:35:12 +02:00
FButton* button[3];
protected:
void adjustSize();
private:
void init(int, int, int);
void calculateDimensions();
2015-05-23 13:35:12 +02:00
virtual void draw();
void resizeButtons();
void adjustButtons();
// Callback method
2015-05-23 13:35:12 +02:00
void cb_processClick (FWidget*, void*);
public:
// Constructors
2015-09-27 16:45:28 +02:00
explicit FMessageBox (FWidget* = 0);
FMessageBox (const FMessageBox&); // copy constructor
2015-09-22 04:18:20 +02:00
FMessageBox ( const FString&, const FString&
, int, int, int
2015-09-27 16:45:28 +02:00
, FWidget* = 0 );
// Destructor
2015-05-23 13:35:12 +02:00
~FMessageBox();
// Assignment operator (=)
FMessageBox& operator = (const FMessageBox&);
const char* getClassName() const;
2015-09-22 04:18:20 +02:00
const FString getTitlebarText() const;
void setTitlebarText (const FString&);
2015-05-23 13:35:12 +02:00
const FString getHeadline() const;
void setHeadline (const FString&);
void setHeadline (const std::string&);
void setHeadline (const char*);
const FString getText() const;
void setText (const FString&);
void setText (const std::string&);
void setText (const char*);
bool setCenterText(bool);
bool setCenterText();
bool unsetCenterText();
2015-09-22 04:18:20 +02:00
static int info ( FWidget*
, const FString&
, const FString&
2015-09-27 16:45:28 +02:00
, int = FMessageBox::Ok
, int = 0
, int = 0 );
2015-09-22 04:18:20 +02:00
static int info ( FWidget*
, const FString&
, int
2015-09-27 16:45:28 +02:00
, int = FMessageBox::Ok
, int = 0
, int = 0 );
2015-09-22 04:18:20 +02:00
static int error ( FWidget*
, const FString&
2015-09-27 16:45:28 +02:00
, int = FMessageBox::Ok
, int = 0
, int = 0 );
2015-05-23 13:35:12 +02:00
};
#pragma pack(pop)
// FMessageBox inline functions
//----------------------------------------------------------------------
inline const char* FMessageBox::getClassName() const
{ return "FMessageBox"; }
2015-09-22 04:18:20 +02:00
//----------------------------------------------------------------------
inline const FString FMessageBox::getTitlebarText() const
{ return FDialog::getText(); }
//----------------------------------------------------------------------
inline void FMessageBox::setTitlebarText (const FString& txt)
{ return FDialog::setText(txt); }
2015-05-23 13:35:12 +02:00
//----------------------------------------------------------------------
inline const FString FMessageBox::getHeadline() const
{ return headline_text; }
//----------------------------------------------------------------------
inline const FString FMessageBox::getText() const
{ return text; }
//----------------------------------------------------------------------
inline bool FMessageBox::setCenterText(bool on)
2015-09-22 04:18:20 +02:00
{ return center_text = on; }
2015-05-23 13:35:12 +02:00
//----------------------------------------------------------------------
inline bool FMessageBox::setCenterText()
{ return setCenterText(true); }
//----------------------------------------------------------------------
inline bool FMessageBox::unsetCenterText()
{ return setCenterText(false); }
#endif // _FMESSAGEBOX_H