Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/lib/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.9.2025 mit Größe 15 kB image not shown  

Quelle  PaperLayout.C   Sprache: unbekannt

 
#include <config.h>

#include <stdlib.h>

#include "definitions.h"
#include FORMS_H_LOCATION
#include "layout_forms.h"
#include "lyx_main.h"
#include "lyxrc.h"
#include "LString.h"
#include "filetools.h"
#include "buffer.h"
#include "minibuffer.h"
#include "vspace.h"
#include "lyx_gui_misc.h"
#include "BufferView.h"
#include "gettext.h"

//  $Id: PaperLayout.C,v 1.2 1998/09/20 15:34:40 arrae Exp $

#if !defined(lint) && !defined(WITH_WARNINGS)
static char vcid[] = "$Id: PaperLayout.C,v 1.2 1998/09/20 15:34:40 arrae Exp $";
#endif /* lint */

/* Prototypes */
extern FD_form_paper *fd_form_paper;
extern MiniBuffer *minibuffer;
extern BufferView *current_view;


inline void DeactivatePaperButtons ()
{
 fl_deactivate_object (fd_form_paper->button_ok);
 fl_deactivate_object (fd_form_paper->button_apply);
 fl_set_object_lcol (fd_form_paper->button_ok, FL_INACTIVE);
 fl_set_object_lcol (fd_form_paper->button_apply, FL_INACTIVE);
}


inline void ActivatePaperButtons ()
{
 fl_activate_object (fd_form_paper->button_ok);
 fl_activate_object (fd_form_paper->button_apply);
 fl_set_object_lcol (fd_form_paper->button_ok, FL_BLACK);
 fl_set_object_lcol (fd_form_paper->button_apply, FL_BLACK);
}


inline void DisablePaperLayout()
{
        DeactivatePaperButtons();
        fl_deactivate_object (fd_form_paper->choice_paperpackage);
 fl_deactivate_object (fd_form_paper->greoup_radio_orientation);
 fl_deactivate_object (fd_form_paper->radio_portrait);
 fl_deactivate_object (fd_form_paper->radio_landscape);
 fl_deactivate_object (fd_form_paper->choice_papersize2);
 fl_deactivate_object (fd_form_paper->push_use_geometry);
 fl_deactivate_object (fd_form_paper->input_custom_width);
 fl_deactivate_object (fd_form_paper->input_custom_height);
 fl_deactivate_object (fd_form_paper->input_top_margin);
 fl_deactivate_object (fd_form_paper->input_bottom_margin);
 fl_deactivate_object (fd_form_paper->input_left_margin);
 fl_deactivate_object (fd_form_paper->input_right_margin);
 fl_deactivate_object (fd_form_paper->input_head_height);
 fl_deactivate_object (fd_form_paper->input_head_sep);
 fl_deactivate_object (fd_form_paper->input_foot_skip);
 fl_deactivate_object (fd_form_paper->text_warning);
}


inline void EnablePaperLayout()
{
        ActivatePaperButtons();
        fl_activate_object (fd_form_paper->choice_paperpackage);
 fl_activate_object (fd_form_paper->greoup_radio_orientation);
 fl_activate_object (fd_form_paper->radio_portrait);
 fl_activate_object (fd_form_paper->radio_landscape);
 fl_activate_object (fd_form_paper->choice_papersize2);
 fl_activate_object (fd_form_paper->push_use_geometry);
 fl_activate_object (fd_form_paper->input_custom_width);
 fl_activate_object (fd_form_paper->input_custom_height);
 fl_activate_object (fd_form_paper->input_top_margin);
 fl_activate_object (fd_form_paper->input_bottom_margin);
 fl_activate_object (fd_form_paper->input_left_margin);
 fl_activate_object (fd_form_paper->input_right_margin);
 fl_activate_object (fd_form_paper->input_head_height);
 fl_activate_object (fd_form_paper->input_head_sep);
 fl_activate_object (fd_form_paper->input_foot_skip);
 fl_activate_object (fd_form_paper->text_warning);
}


static void checkMarginValues()
{
 int allEmpty;
    
 fl_hide_object(fd_form_paper->text_warning);
 ActivatePaperButtons();
#if 0
 val = fl_get_choice(fd_form_paper->choice_papersize2)-1;
 if (val == VM_PAPER_DEFAULT)
  return;
#endif
 allEmpty = (!strlen(fl_get_input(fd_form_paper->input_top_margin)) &&
      !strlen(fl_get_input(fd_form_paper->input_bottom_margin)) &&
      !strlen(fl_get_input(fd_form_paper->input_left_margin)) &&
      !strlen(fl_get_input(fd_form_paper->input_right_margin)) &&
      !strlen(fl_get_input(fd_form_paper->input_head_height)) &&
      !strlen(fl_get_input(fd_form_paper->input_head_sep)) &&
      !strlen(fl_get_input(fd_form_paper->input_foot_skip)) &&
      !strlen(fl_get_input(fd_form_paper->input_custom_width)) &&
      !strlen(fl_get_input(fd_form_paper->input_custom_height)));
 if (!allEmpty) {
  fl_set_button(fd_form_paper->push_use_geometry, 1);
 }
}


bool UpdateLayoutPaper()
{
 bool update = true;
 if (!current_view->available())
  update = false;

 if (update) {
  BufferParams * params = ¤t_view->currentBuffer()->params;

  fl_set_choice(fd_form_paper->choice_papersize2,
         params->papersize2 + 1);
  fl_set_choice(fd_form_paper->choice_paperpackage,
         params->paperpackage + 1);
  fl_set_button(fd_form_paper->push_use_geometry,
         params->use_geometry);
  fl_set_button(fd_form_paper->radio_portrait, 0);
  fl_set_button(fd_form_paper->radio_landscape, 0);
  if (params->orientation == ORIENTATION_LANDSCAPE)
   fl_set_button(fd_form_paper->radio_landscape, 1);
  else
   fl_set_button(fd_form_paper->radio_portrait, 1);
   
  fl_set_input(fd_form_paper->input_custom_width,
        params->paperwidth.c_str());
  fl_set_input(fd_form_paper->input_custom_height,
        params->paperheight.c_str());
  fl_set_input(fd_form_paper->input_left_margin,
        params->leftmargin.c_str());
  fl_set_input(fd_form_paper->input_top_margin,
        params->topmargin.c_str());
  fl_set_input(fd_form_paper->input_right_margin,
        params->rightmargin.c_str());
  fl_set_input(fd_form_paper->input_bottom_margin,
        params->bottommargin.c_str());
  fl_set_input(fd_form_paper->input_head_height,
        params->headheight.c_str());
  fl_set_input(fd_form_paper->input_head_sep,
        params->headsep.c_str());
  fl_set_input(fd_form_paper->input_foot_skip,
        params->footskip.c_str());
  fl_set_focus_object(fd_form_paper->form_paper,
        fd_form_paper->choice_papersize2);
  fl_hide_object(fd_form_paper->text_warning);
  if (current_view->currentBuffer()->isReadonly()) {
   DisablePaperLayout();
   fl_set_object_label(fd_form_paper->text_warning,
         _("Document is read-only."
           " No changes to layout"
           " permitted."));
   fl_show_object(fd_form_paper->text_warning);
  } else {
   EnablePaperLayout();
  }
 } else if (fd_form_paper->form_paper->visible) {
  fl_hide_form(fd_form_paper->form_paper);
 }
 return update;
}


void MenuLayoutPaper()
{
 if (UpdateLayoutPaper()) {
  if (fd_form_paper->form_paper->visible) {
   fl_raise_form(fd_form_paper->form_paper);
  } else {
   fl_show_form(fd_form_paper->form_paper,
         FL_PLACE_MOUSE
         | FL_FREE_SIZE,FL_FULLBORDER,
         _("Paper Layout"));
  }
 }
}


void PaperApplyCB(FL_OBJECT *, long)
{
 if (! current_view->available()) 
  return;
 
 BufferParams *params = ¤t_view->currentBuffer()->params;
 
 const FD_form_paper* fd = fd_form_paper;
    
 params->papersize2 = fl_get_choice(fd->choice_papersize2)-1;
 params->paperpackage = fl_get_choice(fd->choice_paperpackage)-1;
 params->use_geometry = fl_get_button(fd_form_paper->push_use_geometry);
 if (fl_get_button(fd_form_paper->radio_landscape))
  params->orientation = ORIENTATION_LANDSCAPE;
 else
  params->orientation = ORIENTATION_PORTRAIT;
 params->paperwidth = fl_get_input(fd->input_custom_width);
 params->paperheight = fl_get_input(fd->input_custom_height);
 params->leftmargin = fl_get_input(fd->input_left_margin);
 params->topmargin = fl_get_input(fd->input_top_margin);
 params->rightmargin = fl_get_input(fd->input_right_margin);
 params->bottommargin = fl_get_input(fd->input_bottom_margin);
 params->headheight = fl_get_input(fd->input_head_height);
 params->headsep = fl_get_input(fd->input_head_sep);
 params->footskip = fl_get_input(fd->input_foot_skip);
 current_view->currentBuffer()->setPaperStuff();
 minibuffer->Set(_("Paper layout set"));
 current_view->currentBuffer()->markDirty();
 
 return;
}


void PaperCancelCB(FL_OBJECT *, long)
{
 fl_hide_form(fd_form_paper->form_paper);
}


void PaperOKCB(FL_OBJECT *ob, long data)
{
 PaperCancelCB(ob,data);
 PaperApplyCB(ob,data);
}


void PaperMarginsCB(FL_OBJECT *ob, long)
{
 const FD_form_paper
  *fd = fd_form_paper;
 LString
  str;
 char
  val;
    
 checkMarginValues();
 if (ob == fd->choice_papersize2) {
  val = fl_get_choice(fd->choice_papersize2)-1;
  if (val == VM_PAPER_DEFAULT) {
   fl_set_button(fd->push_use_geometry, 0);
   checkMarginValues();
  } else {
   if ((val != VM_PAPER_USLETTER) && (val != VM_PAPER_USLEGAL) &&
       (val != VM_PAPER_USEXECUTIVE) && (val != VM_PAPER_A4) &&
       (val != VM_PAPER_A5) && (val != VM_PAPER_B5)) {
    fl_set_button(fd->push_use_geometry, 1);
   }
   fl_set_choice(fd->choice_paperpackage, PACKAGE_NONE + 1);
  }
 } else if (ob == fd->choice_paperpackage) {
  val = fl_get_choice(fd->choice_paperpackage)-1;
  if (val != PACKAGE_NONE) {
   fl_set_choice(fd->choice_papersize2, VM_PAPER_DEFAULT + 1);
   fl_set_button(fd->push_use_geometry, 0);
  }
 } else if ((ob==fd->input_custom_width) || (ob==fd->input_custom_height) ||
     (ob==fd->input_left_margin) || (ob==fd->input_right_margin) ||
     (ob==fd->input_top_margin) || (ob==fd->input_bottom_margin) ||
     (ob==fd->input_head_height) || (ob==fd->input_head_sep) ||
     (ob==fd->input_foot_skip)) {
  str = fl_get_input(ob);
  if (!str.empty() && !isValidLength(str)) {
   fl_set_object_label(fd_form_paper->text_warning,
         _("Warning: Invalid Length"
           " (valid example: 10mm)"));
   fl_show_object(fd_form_paper->text_warning);
   DeactivatePaperButtons();
  } else if (!str.empty())
   fl_set_button(fd->push_use_geometry, 1);
 }
 return;
}

100%


[ Dauer der Verarbeitung: 0.5 Sekunden  (vorverarbeitet)  ]