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 / toolbarbackend.C < prev    next >
C/C++ Source or Header  |  1998-04-23  |  5KB  |  233 lines

  1. /* This file is part of
  2. * ======================================================
  3. *           LyX, The Document Processor
  4. *
  5. *        Copyright (C) 1995 Matthias Ettrich
  6. *           Copyright (C) 1995-1998 The LyX Team.
  7. *
  8. *           This file is Copyright 1996-1998
  9. *           Lars Gullik Bj°nnes
  10. *
  11. *======================================================*/
  12.  
  13. //  Added pseudo-action handling, asierra 180296
  14.  
  15. #include <config.h>
  16.  
  17. #ifdef __GNUG__
  18. #pragma implementation
  19. #endif
  20.  
  21. #include "toolbarbackend.h"
  22. #include "error.h"
  23.  
  24. //     $Id: toolbarbackend.C,v 1.1.1.1 1998/04/23 16:02:59 larsbj Exp $    
  25.  
  26. #if !defined(lint) && !defined(WITH_WARNINGS)
  27. static char vcid[] = "$Id: toolbarbackend.C,v 1.1.1.1 1998/04/23 16:02:59 larsbj Exp $";
  28. #endif /* lint */
  29.  
  30. extern LyXAction lyxaction;
  31.  
  32. // enum tooltags_ {
  33. //     TO_ADD = 1,
  34. //     TO_ENDTOOLBAR,
  35. //         TO_SEPARATOR,
  36. //         TO_LAYOUTS,
  37. //         TO_NEWLINE,
  38. //     TO_LAST
  39. // };
  40.  
  41.  
  42. // struct keyword_item toolTags[TO_LAST-1] = {
  43. //     { "\\add", TO_ADD },
  44. //     { "\\end_toolbar", TO_ENDTOOLBAR },
  45. //         { "\\layouts", TO_LAYOUTS },
  46. //         { "\\newline", TO_NEWLINE },
  47. //        { "\\separator", TO_SEPARATOR }
  48. // };
  49.  
  50.  
  51. void ToolbarBackend::init()
  52. {
  53.     add(TOOL_LAYOUTS);
  54.     add(LFUN_MENUOPEN);
  55.     //add(LFUN_CLOSEBUFFER);
  56.     add(LFUN_MENUWRITE);
  57.     add(LFUN_MENUPRINT);
  58.     add(TOOL_SEPARATOR);
  59.  
  60.     add(LFUN_CUT);
  61.     add(LFUN_COPY);
  62.     add(LFUN_PASTE);
  63.     add(TOOL_SEPARATOR);
  64.     
  65.     add(LFUN_EMPH);
  66.     add(LFUN_NOUN);
  67.     add(LFUN_FREE);
  68.     add(TOOL_SEPARATOR);
  69.     
  70.     add(LFUN_FOOTMELT);
  71.     add(LFUN_MARGINMELT);
  72.     add(LFUN_DEPTH);
  73.     add(TOOL_SEPARATOR);
  74.  
  75.     add(LFUN_TEX);
  76.         add(LFUN_MATH_MODE);
  77.     add(TOOL_SEPARATOR);
  78.  
  79.     add(LFUN_FIGURE);
  80.     add(LFUN_TABLE);
  81.     //add(LFUN_MELT);
  82. }
  83.  
  84.  
  85. #if 0
  86. // should this be in backend or not?
  87. char **Toolbar::getPixmap(kb_action action, LString const & arg)
  88. {
  89.     char **pixmap = unknown_xpm;
  90.     switch(action){
  91.     case LFUN_MENUOPEN:    pixmap = open_xpm; break;
  92.     case LFUN_CLOSEBUFFER: pixmap = close_xpm; break;
  93.     case LFUN_MENUPRINT:   pixmap = print1_xpm; break;
  94.     case LFUN_MENUWRITE:   pixmap = save_xpm; break;
  95.     case LFUN_EMPH:     pixmap = emph_xpm; break;
  96.     case LFUN_NOUN:        pixmap = noun_xpm; break;
  97.     case LFUN_FREE:        pixmap = free_xpm; break;
  98.     case LFUN_FOOTMELT:    pixmap = foot_xpm; break;
  99.     case LFUN_DEPTH:       pixmap = depth_xpm; break;
  100.     case LFUN_COPY:        pixmap = copy_xpm; break;
  101.     case LFUN_CUT:         pixmap = cut_xpm; break;
  102.     case LFUN_PASTE:       pixmap = paste_xpm; break;
  103.     case LFUN_TEX:         pixmap = tex_xpm; break;
  104.     case LFUN_MATH_MODE:   pixmap = math_xpm; break;
  105.     case LFUN_MARGINMELT:  pixmap = margin_xpm; break;
  106.     case LFUN_FIGURE:      pixmap = fig_xpm; break;
  107.     case LFUN_TABLE:       pixmap = tab_xpm; break;
  108.     case LFUN_MELT:        pixmap = melt_xpm; break;
  109.     case LFUN_QUIT:        pixmap = quit_xpm; break;
  110.     case LFUN_EXPORT:
  111.     {
  112.         if (arg == "ascii")
  113.             pixmap = make_ascii_xpm;
  114.         else if (arg == "latex")
  115.             pixmap = make_latex_xpm;
  116.     }
  117.     break; 
  118.     case LFUN_BOLD : pixmap = bold_xpm; break; 
  119.     case LFUN_SANS: pixmap = sans_xpm; break; 
  120.     case LFUN_RUNLATEX: pixmap = run_latex_xpm; break; 
  121.     case LFUN_PREVIEWPS: pixmap = view_ps_xpm; break; 
  122.     case LFUN_PREVIEW: pixmap = view_dvi_xpm; break; 
  123.     case LFUN_INSERT_MATH:
  124.     {
  125.         if (!arg.empty())
  126.             pixmap = get_pixmap_from_symbol(arg.c_str(),
  127.                             buttonwidth,
  128.                             height);
  129.     }
  130.     break;
  131.     default:
  132.         //pixmap = unknown_xpm;
  133.         break;
  134.     }
  135.     return pixmap;
  136. }
  137. #endif
  138.  
  139. void ToolbarBackend::add(int action, bool /*doclean*/)
  140. {
  141.     // adds an item to the list
  142.     toolbarFunc *newItem = 0;
  143.     toolbarFunc *tmp = 0;
  144.     if (action == TOOL_SEPARATOR
  145.         || action == TOOL_LAYOUTS) {
  146.         newItem = new toolbarFunc;
  147.         newItem->action = action;
  148.         //newItem->help = help;
  149.         // the new item is placed at the end of the list
  150.         tmp = toollist;
  151.         if (tmp != NULL){
  152.             while(tmp->next != NULL)
  153.                 tmp = tmp->next;
  154.             // here is tmp->next == NULL
  155.             tmp->next = newItem;
  156.         } else
  157.             toollist = newItem;
  158.     }
  159. }
  160.  
  161.  
  162. void ToolbarBackend::clean()
  163. {
  164.  
  165. }
  166.  
  167.  
  168. void ToolbarBackend::read(LyXLex &lex)
  169. {
  170.     //consistency check
  171.     if (lex.GetString() != "\\begin_toolbar")
  172.         lyxerr.print("Toolbar::read: ERROR wrong token:`"
  173.                 +lex.GetString()+'\''); 
  174.  
  175.     struct keyword_item toolTags[TO_LAST-1] = {
  176.         { "\\add", TO_ADD },
  177.         { "\\end_toolbar", TO_ENDTOOLBAR },
  178.         { "\\layouts", TO_LAYOUTS },
  179.         { "\\newline", TO_NEWLINE },
  180.         { "\\separator", TO_SEPARATOR }
  181.     };
  182.  
  183.     clean();
  184.     LString func;
  185.     bool quit = false;
  186.     
  187.     lex.pushTable(toolTags, TO_LAST - 1);
  188.  
  189.     if (lyxerr.debugging(Error::PARSER))
  190.         lex.printTable();
  191.     
  192.     while (lex.IsOK() && !quit) {
  193.         
  194.         lyxerr.debug("Toolbar::read: current lex text: `"
  195.                 +lex.GetString()+'\'',Error::TOOLBAR);
  196.  
  197.         switch(lex.lex()) {
  198.           case TO_ADD:
  199.               if (lex.EatLine()) {
  200.                   func = lex.GetString();
  201.                   lyxerr.debug("Toolbar::read TO_ADD func: `"
  202.                            + func + "'", Error::TOOLBAR);
  203.                   add(lyxaction.LookupFunc(func));
  204.               }
  205.               break;
  206.            
  207.           case TO_SEPARATOR:
  208.               add(TOOL_SEPARATOR);
  209.               break;
  210.            
  211.           case TO_LAYOUTS:
  212.               add(TOOL_LAYOUTS);
  213.               break;
  214.            
  215.           case TO_NEWLINE:
  216.               add(TOOL_NEWLINE);
  217.               break;
  218.             
  219.           case TO_ENDTOOLBAR:
  220.               // should not set automatically
  221.               //set();
  222.               quit = true;
  223.               break;
  224.           default:
  225.               lex.printError("Toolbar::read: "
  226.                       "Unknown toolbar tag: `$$Token'");
  227.               break;
  228.         }
  229.     }
  230.     lex.popTable();
  231. }
  232.