home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / toolbar.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  166 lines

  1. // -*- C++ -*-
  2. /* This file is part of
  3.  * ======================================================
  4. *           LyX, The Document Processor
  5. *        Copyright (C) 1995 Matthias Ettrich
  6. *
  7. *           This file is Copyright (C) 1996-1998
  8. *           Lars Gullik Bj°nnes
  9. *
  10. *======================================================*/
  11.  
  12. #ifndef _TOOLBAR_H_
  13. #define _TOOLBAR_H_
  14.  
  15. #ifdef __GNUG__
  16. #pragma interface
  17. #endif
  18.  
  19. #include FORMS_H_LOCATION
  20. #include "toolbarbackend.h"
  21. #include "lyxfunc.h"
  22. #include "combox.h"
  23.  
  24. /** The LyX toolbar class
  25.   This class {\em is} the LyX toolbar, and is not likely to be enhanced
  26.   further until we begin the move to Qt. We will probably have to make our
  27.   own QToolBar, at least until Troll Tech makes theirs.
  28.   */
  29. class Toolbar {
  30. public:
  31.     ///
  32.     Toolbar(ToolbarBackend const &, LyXView *o, int x, int y);
  33.  
  34.     ///
  35.     Toolbar()
  36.     {
  37.         owner = NULL;
  38.         sxpos = 0;
  39.         sypos = 0;
  40.         bubble_timer = NULL;
  41.         toolobj = new FL_OBJECT;
  42.         combox = NULL;
  43.         reset();
  44.     }
  45.  
  46.     ///
  47.     ~Toolbar() {
  48.         clean();
  49.         delete toolobj;
  50.     }
  51.     
  52.     ///
  53.     int get_toolbar_func(LString const & func);
  54.     
  55.     ///
  56.     FL_OBJECT *toolobj;
  57.     ///
  58.     Combox *combox;
  59.  
  60.     /// (re)sets the toolbar
  61.     void set(bool doingmain=false);
  62.  
  63.     /** this is to be the entry point to the toolbar
  64.       frame, where you can change the toolbar realtime. */
  65.     void edit();
  66.     /// add a new button to the toolbar.
  67.         void add(int ,bool doclean=true);
  68.     /// name of func instead of kb_action
  69.     //void add(LString const & , bool doclean=true);
  70.     /// invokes the n'th icon in the toolbar
  71.     void push(int);
  72.     /// activates the toolbar
  73.         void activate();
  74.     /// deactivates the toolbar
  75.         void deactivate();
  76.  
  77. private:
  78.     ///
  79.     struct toolbarItem
  80.     {
  81.         ///
  82.         toolbarItem *next;
  83.         ///
  84.         int action;
  85.         ///
  86.         FL_OBJECT *icon;
  87.         ///
  88.         bool IsBitmap;
  89.         ///
  90.         char **pixmap;
  91.         ///
  92.         toolbarItem(){
  93.             next = NULL;
  94.             action = LFUN_NOACTION;
  95.             icon = NULL;
  96.             pixmap = NULL;
  97.             IsBitmap = false;
  98.         }
  99.         ///
  100.         ~toolbarItem(){
  101.             if (icon){
  102.                 fl_delete_object(icon);
  103.                 fl_free_object(icon);
  104.             }
  105.         }
  106.             
  107.     };
  108.  
  109.     /// a list containing all the buttons
  110.     toolbarItem *toollist;
  111.     ///
  112.     LyXView *owner;
  113.     ///
  114.     FL_OBJECT *bubble_timer;
  115.     /// Starting position
  116.     int sxpos, sypos;
  117.     ///
  118.     int xpos;
  119.     ///
  120.     int ypos;
  121.     ///
  122.     int buttonwidth;
  123.     ///
  124.     int height;
  125.     ///
  126.     int standardspacing;
  127.     ///
  128.     int sepspace;
  129.     ///
  130.     bool cleaned;
  131.  
  132.     ///
  133.     char **getPixmap(kb_action, LString const & arg=LString());
  134.     /// removes all toolbar buttons from the toolbar.
  135.     void clean();
  136.     ///
  137.     static void ToolbarCB(FL_OBJECT*, long);
  138.     ///
  139.     static void BubbleTimerCB(FL_OBJECT *, long);
  140.     ///
  141.     static int BubblePost(FL_OBJECT *ob, int event,
  142.                   FL_Coord mx, FL_Coord my, int key, void *xev);
  143.  
  144.     /** more...
  145.      */
  146.     void reset(){
  147.         toollist = NULL;
  148.         cleaned = false;
  149.         
  150.         lightReset();
  151.     }
  152.  
  153.     /** more...
  154.      */
  155.     void lightReset(){
  156.         standardspacing = 2; // the usual space between items
  157.         sepspace = 6; // extra space
  158.         xpos = sxpos - standardspacing;
  159.         ypos = sypos;
  160.         buttonwidth = 30; // the standard button width
  161.         height = 30; // the height of all items in the toolbar
  162.     }
  163. };
  164. #endif
  165.