Exemplo n.º 1
0
 inline const Modifier *getButton(unsigned int button) const {
     ButtonSet::const_iterator iter = buttonState.find(button);
     if (iter != buttonState.end()) {
         return &((*iter).second.mod);
     } else {
         return NULL;
     }
 }
Exemplo n.º 2
0
 inline bool getButton(unsigned int button, Modifier mod) const {
     ButtonSet::const_iterator iter = buttonState.find(button);
     if (iter != buttonState.end()) {
         return (*iter).second.mod == mod;
     } else {
         return false;
     }
 }
Exemplo n.º 3
0
void PaletteEntryEditor::selectColorType(app::Color::Type type)
{
    m_type = type;
    m_rgbSliders.setVisible(type == app::Color::RgbType);
    m_hsvSliders.setVisible(type == app::Color::HsvType);

    resetRelativeInfo();

    switch (type) {
    case app::Color::RgbType:
        m_colorType.setSelectedItem(RGB_MODE);
        break;
    case app::Color::HsvType:
        m_colorType.setSelectedItem(HSV_MODE);
        break;
    }

    m_vbox.layout();
    m_vbox.invalidate();
}
Exemplo n.º 4
0
void PaletteEntryEditor::onColorTypeClick()
{
    switch (m_colorType.selectedItem()) {
    case RGB_MODE:
        selectColorType(app::Color::RgbType);
        break;
    case HSV_MODE:
        selectColorType(app::Color::HsvType);
        break;
    }
}
Exemplo n.º 5
0
void PaletteEntryEditor::onChangeModeClick()
{
    switch (m_changeMode.selectedItem()) {
    case ABS_MODE:
        m_rgbSliders.setMode(ColorSliders::Absolute);
        m_hsvSliders.setMode(ColorSliders::Absolute);
        break;
    case REL_MODE:
        m_rgbSliders.setMode(ColorSliders::Relative);
        m_hsvSliders.setMode(ColorSliders::Relative);
        resetRelativeInfo();
        break;
    }
}
Exemplo n.º 6
0
void ConfigureTools::onBrushTypeChange()
{
  PenType type = (PenType)m_brushType->getSelectedItem();

  Tool* current_tool = UIContext::instance()
    ->getSettings()
    ->getCurrentTool();

  UIContext::instance()
    ->getSettings()
    ->getToolSettings(current_tool)
    ->getPen()
    ->setType(type);

  m_brushPreview->invalidate();

  StatusBar::instance()
    ->setStatusText(250,
                    "Pen shape: %s",
                    type == PEN_TYPE_CIRCLE ? "Circle":
                    type == PEN_TYPE_SQUARE ? "Square":
                    type == PEN_TYPE_LINE ? "Line": "Unknown");
}
Exemplo n.º 7
0
void ConfigureTools::onExecute(Context* context)
{
  Button* set_grid;
  Widget* brush_preview_box;
  Widget* brush_type_box;
  bool first_time = false;

  if (!window) {
    window = app::load_widget<Window>("tools_configuration.xml", "configure_tool");
    first_time = true;
  }
  /* if the window is opened, close it */
  else if (window->isVisible()) {
    window->closeWindow(NULL);
    return;
  }

  try {
    m_tiled = app::find_widget<CheckBox>(window, "tiled");
    m_tiledX = app::find_widget<CheckBox>(window, "tiled_x");
    m_tiledY = app::find_widget<CheckBox>(window, "tiled_y");
    m_snapToGrid = app::find_widget<CheckBox>(window, "snap_to_grid");
    m_viewGrid = app::find_widget<CheckBox>(window, "view_grid");
    m_pixelGrid = app::find_widget<CheckBox>(window, "pixel_grid");
    set_grid = app::find_widget<Button>(window, "set_grid");
    m_brushSize = app::find_widget<Slider>(window, "brush_size");
    m_brushAngle = app::find_widget<Slider>(window, "brush_angle");
    m_opacity = app::find_widget<Slider>(window, "opacity");
    m_tolerance = app::find_widget<Slider>(window, "tolerance");
    m_sprayWidth = app::find_widget<Slider>(window, "spray_width");
    m_airSpeed = app::find_widget<Slider>(window, "air_speed");
    brush_preview_box = app::find_widget<Widget>(window, "brush_preview_box");
    brush_type_box = app::find_widget<Widget>(window, "brush_type_box");
    m_onionSkin = app::find_widget<CheckBox>(window, "onionskin");
  }
  catch (...) {
    delete window;
    window = NULL;
    throw;
  }

  /* brush-preview */
  if (first_time) {
    m_brushPreview = new BrushPreview();
    m_brushPreview->min_w = 32 + 4;
    m_brushPreview->min_h = 32 + 4;
    m_brushPreview->setId("brush_preview");
  }
  else {
    m_brushPreview = window->findChild("brush_preview");
  }

  // Current settings
  ISettings* settings = UIContext::instance()->getSettings();
  Tool* current_tool = settings->getCurrentTool();
  IToolSettings* tool_settings = settings->getToolSettings(current_tool);

  /* brush-type */
  if (first_time) {
    PenType type = tool_settings->getPen()->getType();

    m_brushType = new ButtonSet(3, 1, type,
                                PART_BRUSH_CIRCLE,
                                PART_BRUSH_SQUARE,
                                PART_BRUSH_LINE);

    m_brushType->setId("brush_type");
  }
  else {
    m_brushType = window->findChildT<ButtonSet>("brush_type");
  }

  if (settings->getTiledMode() != TILED_NONE) {
    m_tiled->setSelected(true);
    if (settings->getTiledMode() & TILED_X_AXIS) m_tiledX->setSelected(true);
    if (settings->getTiledMode() & TILED_Y_AXIS) m_tiledY->setSelected(true);
  }

  if (settings->getSnapToGrid()) m_snapToGrid->setSelected(true);
  if (settings->getGridVisible()) m_viewGrid->setSelected(true);
  if (settings->getPixelGridVisible()) m_pixelGrid->setSelected(true);
  if (settings->getUseOnionskin()) m_onionSkin->setSelected(true);

  if (first_time) {
    // Append children
    brush_preview_box->addChild(m_brushPreview);
    brush_type_box->addChild(m_brushType);

    // Slots
    window->Close.connect(Bind<void>(&ConfigureTools::onWindowClose, this));
    m_tiled->Click.connect(Bind<void>(&ConfigureTools::onTiledClick, this));
    m_tiledX->Click.connect(Bind<void>(&ConfigureTools::onTiledXYClick, this, TILED_X_AXIS, m_tiledX));
    m_tiledY->Click.connect(Bind<void>(&ConfigureTools::onTiledXYClick, this, TILED_Y_AXIS, m_tiledY));
    m_viewGrid->Click.connect(Bind<void>(&ConfigureTools::onViewGridClick, this));
    m_pixelGrid->Click.connect(Bind<void>(&ConfigureTools::onPixelGridClick, this));
    set_grid->Click.connect(Bind<void>(&ConfigureTools::onSetGridClick, this));
    m_snapToGrid->Click.connect(Bind<void>(&ConfigureTools::onSnapToGridClick, this));
    m_onionSkin->Click.connect(Bind<void>(&ConfigureTools::onOnionSkinClick, this));

    App::instance()->Exit.connect(&on_exit_delete_this_widget);
    App::instance()->PenSizeAfterChange.connect(&on_pen_size_after_change);
    App::instance()->CurrentToolChange.connect(&on_current_tool_change);

    // Append hooks
    m_brushSize->Change.connect(Bind<void>(&ConfigureTools::onBrushSizeSliderChange, this));
    m_brushAngle->Change.connect(Bind<void>(&ConfigureTools::onBrushAngleSliderChange, this));
    m_opacity->Change.connect(&ConfigureTools::onOpacitySliderChange, this);
    m_tolerance->Change.connect(&ConfigureTools::onToleranceSliderChange, this);
    m_airSpeed->Change.connect(&ConfigureTools::onAirSpeedSliderChange, this);
    m_sprayWidth->Change.connect(&ConfigureTools::onSprayWidthSliderChange, this);
    m_brushType->ItemChange.connect(&ConfigureTools::onBrushTypeChange, this);
  }

  // Update current pen properties
  on_current_tool_change();

  // Default position
  window->remap_window();
  window->center_window();

  // Load window configuration
  load_window_pos(window, "ConfigureTool");

  window->openWindow();
}
Exemplo n.º 8
0
void Buttons::invoke(int key, int state, int mods, float force)
{
    ButtonSet* btns = getButtons(key);
    for (ButtonSet::iterator i = btns->begin(); i != btns->end(); ++i)
        (*i)->func(state,mods,force);
}