Es++ Class: OpenCVMainView
/******************************************************************************
 *
 * Copyright (c) 2017 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer.
 *  
 * 2. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *  OpenCVMainView.h
 *
 *****************************************************************************/

#pragma once

#include <es++/opencv-4.0/OpenCVObject.h>
#include <es++/gtkmm-3.0/Application.h>
#include <es++/gtkmm-3.0/ApplicationView.h>

using namespace Gtk;

namespace Es {

class OpenCVMainView :public Es::ApplicationView {

public:
  //////////////////////////////////////////////
  //Constructor
  //
  OpenCVMainView(
          Es::Application& applet, 
          std::string&     name,
          Es::Args&        args)

  :ApplicationView(applet, name, 
                     //We don't use the defaultHelpPulldown menu.
                     args.set(XmNuseDefaultHelpPulldown, false) )
  {
    //Define Help pulldown menu items. 
    static Es::SigcMenuCallback help_menu_callbacks[] = {
        {"Help Info",      sigc::mem_fun(*this, &OpenCVMainView::help_info)},
        {"Version",        sigc::mem_fun(*this, &OpenCVMainView::help_version)},
        {"OpenCV Version", sigc::mem_fun(*this, &OpenCVMainView::help_opencv_version)},
    };
    help_pulldown_append(help_menu_callbacks, CountOf(help_menu_callbacks));
  }

  virtual void help_opencv_version()
  {
    Gtk::MessageDialog dialog(*this, "OpenCV Version");
    char message[1024];
    sprintf(message,  "Major Version: %d  Minor Version: %d SubMinor_Version: %d",
           CV_MAJOR_VERSION,
           CV_MINOR_VERSION,
           CV_SUBMINOR_VERSION);
    dialog.set_secondary_text(message);

    dialog.set_title("OpenCV Version");
    dialog.run();
  }

  virtual bool render()
  {
    return true;
  }
};

}