• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

ap_Dialog_FormatFrame.h

Go to the documentation of this file.
00001 /* -*- mode: C++; tab-width: 4; c-basic-offset: 4; -*- */
00002 
00003 /* AbiWord
00004  * Copyright (C) 1998 AbiSource, Inc.
00005  * Copyright (C) 2003 Marc Maurer
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License
00008  * as published by the Free Software Foundation; either version 2
00009  * of the License, or (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software
00018  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00019  * 02111-1307, USA.
00020  */
00021 
00022 #ifndef AP_DIALOG_FORMATFRAME_H
00023 #define AP_DIALOG_FORMATFRAME_H
00024 
00025 #include <string>
00026 
00027 #include "ut_types.h"
00028 #include "ut_misc.h"
00029 #include "ut_PropVector.h"
00030 #include "xap_Frame.h"
00031 #include "xap_Dialog.h"
00032 #include "xav_View.h"
00033 #include "pt_Types.h"
00034 #include "xap_Preview.h"
00035 #include "fv_View.h"
00036 #include "ie_imp.h"
00037 #include "ie_impGraphic.h"
00038 #include "ie_exp.h"
00039 #include "ie_types.h"
00040 #include "fg_Graphic.h"
00041 #include "xap_Dlg_FileOpenSaveAs.h"
00042 #define FORMAT_FRAME_NUMTHICKNESS 9
00043 
00044 class UT_Timer;
00045 class XAP_Frame;
00046 class fp_TableContainer;
00047 class AP_Dialog_FormatFrame;
00048 
00049 class ABI_EXPORT AP_FormatFrame_preview_drawer
00050 {
00051 public:
00052 
00053     void            draw(GR_Graphics *gc, UT_Rect &rect);
00054 };
00055 
00056 class ABI_EXPORT AP_FormatFrame_preview : public XAP_Preview
00057 {
00058 public:
00059 
00060     AP_FormatFrame_preview(GR_Graphics * gc, AP_Dialog_FormatFrame * pFormatFrame);
00061     virtual ~AP_FormatFrame_preview(void);
00062 
00063     // data twiddlers
00064     void            draw(const UT_Rect *clip=NULL);
00065     GR_Graphics *   getGraphics(void) const { return m_gc;}
00066     /*void          set(UT_uint32 iColumns, bool bLines)
00067                     {
00068                         m_iColumns = iColumns;
00069                         m_bLineBetween = bLines;
00070                         draw();
00071                     }*/
00072 private:
00073     AP_FormatFrame_preview_drawer   m_previewDrawer;
00074     AP_Dialog_FormatFrame *  m_pFormatFrame;
00075 protected:
00076 
00077 };
00078 
00079 class ABI_EXPORT AP_Dialog_FormatFrame : public XAP_Dialog_Modeless
00080 {
00081 public:
00082     AP_Dialog_FormatFrame(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id);
00083     virtual ~AP_Dialog_FormatFrame(void);
00084 
00085     virtual void                    runModeless(XAP_Frame * pFrame) = 0;
00086 
00087     typedef enum { a_OK, a_CLOSE } tAnswer;
00088     typedef enum { toggle_left, toggle_right, toggle_top, toggle_bottom } toggle_button;
00089 
00090     AP_Dialog_FormatFrame::tAnswer      getAnswer(void) const;
00091     virtual void                        startUpdater(void);
00092     virtual void                        stopUpdater(void);
00093     static void                         autoUpdateMC(UT_Worker * pTimer);
00094 
00095     virtual void                        setSensitivity(bool bSens) = 0;
00096     virtual void                        setActiveFrame(XAP_Frame *pFrame);
00097     void                                ConstructWindowName(void);
00098     void                                event_update(void);
00099     void                                finalize(void);
00100 
00101     void                                setWrapping(bool bWrap);
00102     bool                                getWrapping(void) const { return m_bSetWrapping; }
00103 
00104     void                                setAllSensitivities(void);
00105     void                                setCurFrameProps(void);
00106     void                                applyChanges(void);
00107     void                                toggleLineType(toggle_button btn, bool enabled);
00108     void                                clearImage(void);
00109     void                                askForGraphicPathName(void);
00110     void                                ShowErrorBox(const std::string & sFile,
00111                                                      UT_Error errorCode);
00112     void                                _createPreviewFromGC(GR_Graphics * gc,
00113                                                              UT_uint32 width,
00114                                                              UT_uint32 height);
00115     UT_PropVector &                     getPropVector() { return m_vecProps; }
00116 
00117     GR_Image *                          getImage(void) { return m_pImage;}
00118     FG_Graphic *                        getGraphic(void) { return m_pGraphic;}
00119 
00120     UT_RGBColor                         m_borderColor;
00121     UT_sint32                           m_lineStyle;
00122 
00123     UT_PropVector                           m_vecProps;
00124 
00125     void                    setBGColor (UT_RGBColor clr);
00126 
00127     const UT_RGBColor &     backgroundColor () const { return m_backgroundColor; }
00128 
00129     void                    setBorderColor (UT_RGBColor clr);
00130 
00131     void                    setBorderColorAll (UT_RGBColor clr);
00132 
00133     void                    setBorderColorRight  (const UT_RGBColor & rgb);
00134     void                    setBorderColorLeft   (const UT_RGBColor & rgb);
00135     void                    setBorderColorTop    (const UT_RGBColor & rgb);
00136     void                    setBorderColorBottom (const UT_RGBColor & rgb);
00137 
00138     const UT_RGBColor &     borderColorRight ()  const { return m_borderColorRight;  }
00139     const UT_RGBColor &     borderColorLeft ()   const { return m_borderColorLeft;   }
00140     const UT_RGBColor &     borderColorTop ()    const { return m_borderColorTop;    }
00141     const UT_RGBColor &     borderColorBottom () const { return m_borderColorBottom; }
00142 
00143     void                    setBorderLineStyleRight  (UT_sint32 linestyle);
00144     void                    setBorderLineStyleLeft   (UT_sint32 linestyle);
00145     void                    setBorderLineStyleTop    (UT_sint32 linestyle);
00146     void                    setBorderLineStyleBottom (UT_sint32 linestyle);
00147 
00148     UT_sint32               borderLineStyleRight ()  const { return m_borderLineStyleRight;  }
00149     UT_sint32               borderLineStyleLeft ()   const { return m_borderLineStyleLeft;   }
00150     UT_sint32               borderLineStyleTop ()    const { return m_borderLineStyleTop;    }
00151     UT_sint32               borderLineStyleBottom () const { return m_borderLineStyleBottom; }
00152 
00153     bool                    getRightToggled ()  const { return (m_borderLineStyleRight  ? true : false); }
00154     bool                    getLeftToggled ()   const { return (m_borderLineStyleLeft   ? true : false); }
00155     bool                    getTopToggled ()    const { return (m_borderLineStyleTop    ? true : false); }
00156     bool                    getBottomToggled () const { return (m_borderLineStyleBottom ? true : false); }
00157 
00158     virtual void            setBorderThicknessInGUI (UT_UTF8String & sThick) = 0;
00159 
00160     void                    setBorderThickness (const UT_UTF8String & sThick);
00161 
00162     void                    setBorderThicknessAll (const UT_UTF8String & sThick);
00163 
00164     void                    setBorderThicknessRight  (const UT_UTF8String & sThick);
00165     void                    setBorderThicknessLeft   (const UT_UTF8String & sThick);
00166     void                    setBorderThicknessTop    (const UT_UTF8String & sThick);
00167     void                    setBorderThicknessBottom (const UT_UTF8String & sThick);
00168 
00169     const UT_UTF8String &   getBorderThicknessRight ()  const { return m_sBorderThicknessRight;  }
00170     const UT_UTF8String &   getBorderThicknessLeft ()   const { return m_sBorderThicknessLeft;   }
00171     const UT_UTF8String &   getBorderThicknessTop ()    const { return m_sBorderThicknessTop;    }
00172     const UT_UTF8String &   getBorderThicknessBottom () const { return m_sBorderThicknessBottom; }
00173 
00174     void                    setBorderThicknessAll (float thickness); // border line thickness in pt [0.01pt .. 99.99pt]
00175 
00176     void                    setBorderThicknessRight  (float thickness);
00177     void                    setBorderThicknessLeft   (float thickness);
00178     void                    setBorderThicknessTop    (float thickness);
00179     void                    setBorderThicknessBottom (float thickness);
00180 
00181     float                   borderThicknessRight ()  const { return m_borderThicknessRight;  }
00182     float                   borderThicknessLeft ()   const { return m_borderThicknessLeft;   }
00183     float                   borderThicknessTop ()    const { return m_borderThicknessTop;    }
00184     float                   borderThicknessBottom () const { return m_borderThicknessBottom; }
00185 
00186     void                    setPositionMode (FL_FrameFormatMode mode);
00187 
00188     FL_FrameFormatMode      positionMode () const { return m_iFramePositionTo; }
00189 
00190 protected:
00191     AP_Dialog_FormatFrame::tAnswer      m_answer;
00192     char                                m_WindowName[100];
00193     AP_FormatFrame_preview              *m_pFormatFramePreview;
00194     AP_FormatFrame_preview_drawer       m_previewDrawer;
00195 private:
00196     GR_Image * _makeImageForRaster(const std::string & name,
00197                                    GR_Graphics * pGraphics,
00198                                    const FG_Graphic * pG);
00199     bool                    _getToggleButtonStatus(const char * lineStyle);
00200 
00201     bool                    m_bSettingsChanged;
00202 
00203     UT_RGBColor             m_backgroundColor;
00204 
00205     UT_RGBColor             m_borderColorRight;
00206     UT_RGBColor             m_borderColorLeft;
00207     UT_RGBColor             m_borderColorTop;
00208     UT_RGBColor             m_borderColorBottom;
00209 
00210     UT_sint32               m_borderLineStyleRight;
00211     UT_sint32               m_borderLineStyleLeft;
00212     UT_sint32               m_borderLineStyleTop;
00213     UT_sint32               m_borderLineStyleBottom;
00214 
00215     float                   m_borderThicknessRight;
00216     float                   m_borderThicknessLeft;
00217     float                   m_borderThicknessTop;
00218     float                   m_borderThicknessBottom;
00219 
00220     UT_UTF8String           m_sBorderThickness;
00221 
00222     UT_UTF8String           m_sBorderThicknessRight;
00223     UT_UTF8String           m_sBorderThicknessLeft;
00224     UT_UTF8String           m_sBorderThicknessTop;
00225     UT_UTF8String           m_sBorderThicknessBottom;
00226 
00227     UT_Timer *                          m_pAutoUpdaterMC;
00228 
00229     // Handshake variables
00230     bool m_bDestroy_says_stopupdating;
00231     bool m_bAutoUpdate_happening_now;
00232 
00233     PT_DocPosition                      m_iOldPos;
00234     std::string                         m_sImagePath;
00235     IEGraphicFileType                   m_iGraphicType;
00236     GR_Image *                          m_pImage;
00237     FG_Graphic *                        m_pGraphic;
00238 
00239     bool                    m_bSensitive;
00240     bool                    m_bSetWrapping;
00241     bool                    m_bLineToggled;
00242 
00243     FL_FrameFormatMode      m_iFramePositionTo;
00244 };
00245 
00246 #endif /* AP_DIALOG_FORMATFRAME_H */

Generated on Sun May 27 2012 for AbiWord by  doxygen 1.7.1