#include <stdio.h>
#include <Menu.h>

#include "DrawView.h"
#include "dynload.h"

const int	no_zoom_id= 10001;

#if 0
class MyDrawView: public DrawView {
public:
  Command *DoMiddleButtonDownCommand(Point, Token, int);
};

Command *MyDrawView::DoMiddleButtonDownCommand(Point, Token, int) {
    SetMessage("Sorry, you disabled zooming...");
    return gNoChanges;
}
#endif

static Command *dummy_f(DrawView *dv)
{
  dv->SetMessage("Sorry, you disabled zooming...");
  return gNoChanges;
}


extern "C" void make_nozoom_menu();

void make_nozoom_menu(DrawView *dv, Menu *m, int i)
{
  switch (i) {
  case 0:
    fprintf(stderr, "Creating make_nozoom_menu\n");
    m->AppendItems("-", "Disable Zoom", no_zoom_id, 0);
    break;

  case no_zoom_id:

    bool copy_vtab= FALSE;
    if (dv->user_ptr == 0) {
      dv->user_ptr= dv->DoMiddleButtonDownCommand;
      copy_vtab= TRUE;
    }

    if (dv->DoMiddleButtonDownCommand == dv->user_ptr) {
      patch_vtable(dv, dv->DoMiddleButtonDownCommand,
	// MyDrawView::DoMiddleButtonDownCommand, dv->user_ptr == 0);
	dummy_f, copy_vtab);
      dv->SetMessage("Zooming is now disabled");
      m->ReplaceItem(no_zoom_id, "Enable Zooming");
    } else {
      patch_vtable(dv, dv->DoMiddleButtonDownCommand,
	dv->user_ptr, copy_vtab);
      dv->SetMessage("Zooming is now enabled!");
      m->ReplaceItem(no_zoom_id, "Disable Zooming");
    }
    break;

  case -1:
    m->EnableItem(no_zoom_id);
    break;
  }
}
