astepano / rpms / vim

Forked from rpms/vim 6 years ago
Clone
7f9fde1
To: vim_dev@googlegroups.com
7f9fde1
Subject: Patch 7.3.299
7f9fde1
Fcc: outbox
7f9fde1
From: Bram Moolenaar <Bram@moolenaar.net>
7f9fde1
Mime-Version: 1.0
7f9fde1
Content-Type: text/plain; charset=UTF-8
7f9fde1
Content-Transfer-Encoding: 8bit
7f9fde1
------------
7f9fde1
7f9fde1
Patch 7.3.299
7f9fde1
Problem:    Source code not in Vim style.
7f9fde1
Solution:   Adjust the style. (Elias Diem)
7f9fde1
Files:	    src/gui_photon.c
7f9fde1
7f9fde1
7f9fde1
*** ../vim-7.3.298/src/gui_photon.c	2011-09-07 18:58:24.000000000 +0200
7f9fde1
--- src/gui_photon.c	2011-09-07 19:02:59.000000000 +0200
7f9fde1
***************
7f9fde1
*** 535,547 ****
7f9fde1
  				&src_taken,
7f9fde1
  				buf,
7f9fde1
  				6,
7f9fde1
! 				&dst_made );
7f9fde1
  
7f9fde1
! 			add_to_input_buf( buf, dst_made );
7f9fde1
  		    }
7f9fde1
  		    else
7f9fde1
  		    {
7f9fde1
! 			add_to_input_buf( string, len );
7f9fde1
  		    }
7f9fde1
  
7f9fde1
  		    return Pt_CONSUME;
7f9fde1
--- 535,547 ----
7f9fde1
  				&src_taken,
7f9fde1
  				buf,
7f9fde1
  				6,
7f9fde1
! 				&dst_made);
7f9fde1
  
7f9fde1
! 			add_to_input_buf(buf, dst_made);
7f9fde1
  		    }
7f9fde1
  		    else
7f9fde1
  		    {
7f9fde1
! 			add_to_input_buf(string, len);
7f9fde1
  		    }
7f9fde1
  
7f9fde1
  		    return Pt_CONSUME;
7f9fde1
***************
7f9fde1
*** 549,579 ****
7f9fde1
  		len = 0;
7f9fde1
  #endif
7f9fde1
  		ch = key->key_cap;
7f9fde1
! 		if( ch < 0xff )
7f9fde1
  		{
7f9fde1
  		    /* FIXME: is this the right thing to do? */
7f9fde1
! 		    if( modifiers & MOD_MASK_CTRL )
7f9fde1
  		    {
7f9fde1
  			modifiers &= ~MOD_MASK_CTRL;
7f9fde1
  
7f9fde1
! 			if( ( ch >= 'a'  &&  ch <= 'z' ) ||
7f9fde1
  				ch == '[' ||
7f9fde1
  				ch == ']' ||
7f9fde1
! 				ch == '\\' )
7f9fde1
! 			    ch = Ctrl_chr( ch );
7f9fde1
! 			else if( ch == '2' )
7f9fde1
  			    ch = NUL;
7f9fde1
! 			else if( ch == '6' )
7f9fde1
  			    ch = 0x1e;
7f9fde1
! 			else if( ch == '-' )
7f9fde1
  			    ch = 0x1f;
7f9fde1
  			else
7f9fde1
  			    modifiers |= MOD_MASK_CTRL;
7f9fde1
  		    }
7f9fde1
  
7f9fde1
! 		    if( modifiers & MOD_MASK_ALT )
7f9fde1
  		    {
7f9fde1
! 			ch = Meta( ch );
7f9fde1
  			modifiers &= ~MOD_MASK_ALT;
7f9fde1
  		    }
7f9fde1
  		}
7f9fde1
--- 549,579 ----
7f9fde1
  		len = 0;
7f9fde1
  #endif
7f9fde1
  		ch = key->key_cap;
7f9fde1
! 		if (ch < 0xff)
7f9fde1
  		{
7f9fde1
  		    /* FIXME: is this the right thing to do? */
7f9fde1
! 		    if (modifiers & MOD_MASK_CTRL)
7f9fde1
  		    {
7f9fde1
  			modifiers &= ~MOD_MASK_CTRL;
7f9fde1
  
7f9fde1
! 			if ((ch >= 'a' && ch <= 'z') ||
7f9fde1
  				ch == '[' ||
7f9fde1
  				ch == ']' ||
7f9fde1
! 				ch == '\\')
7f9fde1
! 			    ch = Ctrl_chr(ch);
7f9fde1
! 			else if (ch == '2')
7f9fde1
  			    ch = NUL;
7f9fde1
! 			else if (ch == '6')
7f9fde1
  			    ch = 0x1e;
7f9fde1
! 			else if (ch == '-')
7f9fde1
  			    ch = 0x1f;
7f9fde1
  			else
7f9fde1
  			    modifiers |= MOD_MASK_CTRL;
7f9fde1
  		    }
7f9fde1
  
7f9fde1
! 		    if (modifiers & MOD_MASK_ALT)
7f9fde1
  		    {
7f9fde1
! 			ch = Meta(ch);
7f9fde1
  			modifiers &= ~MOD_MASK_ALT;
7f9fde1
  		    }
7f9fde1
  		}
7f9fde1
***************
7f9fde1
*** 586,604 ****
7f9fde1
  		modifiers &= ~MOD_MASK_SHIFT;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	ch = simplify_key( ch, &modifiers );
7f9fde1
! 	if( modifiers )
7f9fde1
  	{
7f9fde1
  	    string[ len++ ] = CSI;
7f9fde1
  	    string[ len++ ] = KS_MODIFIER;
7f9fde1
  	    string[ len++ ] = modifiers;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	if( IS_SPECIAL( ch ) )
7f9fde1
  	{
7f9fde1
  	    string[ len++ ] = CSI;
7f9fde1
! 	    string[ len++ ] = K_SECOND( ch );
7f9fde1
! 	    string[ len++ ] = K_THIRD( ch );
7f9fde1
  	}
7f9fde1
  	else
7f9fde1
  	{
7f9fde1
--- 586,604 ----
7f9fde1
  		modifiers &= ~MOD_MASK_SHIFT;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	ch = simplify_key(ch, &modifiers);
7f9fde1
! 	if (modifiers)
7f9fde1
  	{
7f9fde1
  	    string[ len++ ] = CSI;
7f9fde1
  	    string[ len++ ] = KS_MODIFIER;
7f9fde1
  	    string[ len++ ] = modifiers;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	if (IS_SPECIAL(ch))
7f9fde1
  	{
7f9fde1
  	    string[ len++ ] = CSI;
7f9fde1
! 	    string[ len++ ] = K_SECOND(ch);
7f9fde1
! 	    string[ len++ ] = K_THIRD(ch);
7f9fde1
  	}
7f9fde1
  	else
7f9fde1
  	{
7f9fde1
***************
7f9fde1
*** 619,627 ****
7f9fde1
  	    string[ len++ ] = KE_CSI;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	if( len > 0 )
7f9fde1
  	{
7f9fde1
! 	    add_to_input_buf( string, len );
7f9fde1
  	    return Pt_CONSUME;
7f9fde1
  	}
7f9fde1
      }
7f9fde1
--- 619,627 ----
7f9fde1
  	    string[ len++ ] = KE_CSI;
7f9fde1
  	}
7f9fde1
  
7f9fde1
! 	if (len > 0)
7f9fde1
  	{
7f9fde1
! 	    add_to_input_buf(string, len);
7f9fde1
  	    return Pt_CONSUME;
7f9fde1
  	}
7f9fde1
      }
7f9fde1
***************
7f9fde1
*** 630,646 ****
7f9fde1
  }
7f9fde1
  
7f9fde1
      static int
7f9fde1
! gui_ph_handle_mouse( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
7f9fde1
  {
7f9fde1
      PhPointerEvent_t *pointer;
7f9fde1
      PhRect_t	     *pos;
7f9fde1
      int		     button = 0, repeated_click, modifiers = 0x0;
7f9fde1
      short	     mouse_x, mouse_y;
7f9fde1
  
7f9fde1
!     pointer = PhGetData( info->event );
7f9fde1
!     pos = PhGetRects( info->event );
7f9fde1
  
7f9fde1
!     gui_mch_mousehide( MOUSE_SHOW );
7f9fde1
  
7f9fde1
      /*
7f9fde1
       * Coordinates need to be relative to the base window,
7f9fde1
--- 630,646 ----
7f9fde1
  }
7f9fde1
  
7f9fde1
      static int
7f9fde1
! gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7f9fde1
  {
7f9fde1
      PhPointerEvent_t *pointer;
7f9fde1
      PhRect_t	     *pos;
7f9fde1
      int		     button = 0, repeated_click, modifiers = 0x0;
7f9fde1
      short	     mouse_x, mouse_y;
7f9fde1
  
7f9fde1
!     pointer = PhGetData(info->event);
7f9fde1
!     pos = PhGetRects(info->event);
7f9fde1
  
7f9fde1
!     gui_mch_mousehide(MOUSE_SHOW);
7f9fde1
  
7f9fde1
      /*
7f9fde1
       * Coordinates need to be relative to the base window,
7f9fde1
***************
7f9fde1
*** 649,675 ****
7f9fde1
      mouse_x = pos->ul.x + gui.border_width;
7f9fde1
      mouse_y = pos->ul.y + gui.border_width;
7f9fde1
  
7f9fde1
!     if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
7f9fde1
      {
7f9fde1
! 	gui_mouse_moved( mouse_x, mouse_y );
7f9fde1
  	return Pt_CONTINUE;
7f9fde1
      }
7f9fde1
  
7f9fde1
!     if( pointer->key_mods & Pk_KM_Shift )
7f9fde1
  	modifiers |= MOUSE_SHIFT;
7f9fde1
!     if( pointer->key_mods & Pk_KM_Ctrl )
7f9fde1
  	modifiers |= MOUSE_CTRL;
7f9fde1
!     if( pointer->key_mods & Pk_KM_Alt )
7f9fde1
  	modifiers |= MOUSE_ALT;
7f9fde1
  
7f9fde1
      /*
7f9fde1
       * FIXME More than one button may be involved, but for
7f9fde1
       * now just deal with one
7f9fde1
       */
7f9fde1
!     if( pointer->buttons & Ph_BUTTON_SELECT )
7f9fde1
  	button = MOUSE_LEFT;
7f9fde1
  
7f9fde1
!     if( pointer->buttons & Ph_BUTTON_MENU )
7f9fde1
      {
7f9fde1
  	button = MOUSE_RIGHT;
7f9fde1
  	/* Need the absolute coordinates for the popup menu */
7f9fde1
--- 649,675 ----
7f9fde1
      mouse_x = pos->ul.x + gui.border_width;
7f9fde1
      mouse_y = pos->ul.y + gui.border_width;
7f9fde1
  
7f9fde1
!     if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON)
7f9fde1
      {
7f9fde1
! 	gui_mouse_moved(mouse_x, mouse_y);
7f9fde1
  	return Pt_CONTINUE;
7f9fde1
      }
7f9fde1
  
7f9fde1
!     if (pointer->key_mods & Pk_KM_Shift)
7f9fde1
  	modifiers |= MOUSE_SHIFT;
7f9fde1
!     if (pointer->key_mods & Pk_KM_Ctrl)
7f9fde1
  	modifiers |= MOUSE_CTRL;
7f9fde1
!     if (pointer->key_mods & Pk_KM_Alt)
7f9fde1
  	modifiers |= MOUSE_ALT;
7f9fde1
  
7f9fde1
      /*
7f9fde1
       * FIXME More than one button may be involved, but for
7f9fde1
       * now just deal with one
7f9fde1
       */
7f9fde1
!     if (pointer->buttons & Ph_BUTTON_SELECT)
7f9fde1
  	button = MOUSE_LEFT;
7f9fde1
  
7f9fde1
!     if (pointer->buttons & Ph_BUTTON_MENU)
7f9fde1
      {
7f9fde1
  	button = MOUSE_RIGHT;
7f9fde1
  	/* Need the absolute coordinates for the popup menu */
7f9fde1
***************
7f9fde1
*** 677,705 ****
7f9fde1
  	abs_mouse.y = pointer->pos.y;
7f9fde1
      }
7f9fde1
  
7f9fde1
!     if( pointer->buttons & Ph_BUTTON_ADJUST )
7f9fde1
  	button = MOUSE_MIDDLE;
7f9fde1
  
7f9fde1
      /* Catch a real release (not phantom or other releases */
7f9fde1
!     if( info->event->type == Ph_EV_BUT_RELEASE )
7f9fde1
  	button = MOUSE_RELEASE;
7f9fde1
  
7f9fde1
!     if( info->event->type & Ph_EV_PTR_MOTION_BUTTON )
7f9fde1
  	button = MOUSE_DRAG;
7f9fde1
  
7f9fde1
  #if 0
7f9fde1
      /* Vim doesn't use button repeats */
7f9fde1
!     if( info->event->type & Ph_EV_BUT_REPEAT )
7f9fde1
  	button = MOUSE_DRAG;
7f9fde1
  #endif
7f9fde1
  
7f9fde1
      /* Don't do anything if it is one of the phantom mouse release events */
7f9fde1
!     if( ( button != MOUSE_RELEASE ) ||
7f9fde1
! 	    ( info->event->subtype == Ph_EV_RELEASE_REAL ) )
7f9fde1
      {
7f9fde1
  	repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
7f9fde1
  
7f9fde1
! 	gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
7f9fde1
      }
7f9fde1
  
7f9fde1
      return Pt_CONTINUE;
7f9fde1
--- 677,705 ----
7f9fde1
  	abs_mouse.y = pointer->pos.y;
7f9fde1
      }
7f9fde1
  
7f9fde1
!     if (pointer->buttons & Ph_BUTTON_ADJUST)
7f9fde1
  	button = MOUSE_MIDDLE;
7f9fde1
  
7f9fde1
      /* Catch a real release (not phantom or other releases */
7f9fde1
!     if (info->event->type == Ph_EV_BUT_RELEASE)
7f9fde1
  	button = MOUSE_RELEASE;
7f9fde1
  
7f9fde1
!     if (info->event->type & Ph_EV_PTR_MOTION_BUTTON)
7f9fde1
  	button = MOUSE_DRAG;
7f9fde1
  
7f9fde1
  #if 0
7f9fde1
      /* Vim doesn't use button repeats */
7f9fde1
!     if (info->event->type & Ph_EV_BUT_REPEAT)
7f9fde1
  	button = MOUSE_DRAG;
7f9fde1
  #endif
7f9fde1
  
7f9fde1
      /* Don't do anything if it is one of the phantom mouse release events */
7f9fde1
!     if ((button != MOUSE_RELEASE) ||
7f9fde1
! 	    (info->event->subtype == Ph_EV_RELEASE_REAL))
7f9fde1
      {
7f9fde1
  	repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
7f9fde1
  
7f9fde1
! 	gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers);
7f9fde1
      }
7f9fde1
  
7f9fde1
      return Pt_CONTINUE;
7f9fde1
***************
7f9fde1
*** 707,741 ****
7f9fde1
  
7f9fde1
  /* Handle a focus change of the PtRaw widget */
7f9fde1
      static int
7f9fde1
! gui_ph_handle_focus( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
7f9fde1
  {
7f9fde1
!     if( info->reason == Pt_CB_LOST_FOCUS )
7f9fde1
      {
7f9fde1
! 	PtRemoveEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
7f9fde1
! 		gui_ph_handle_mouse, NULL );
7f9fde1
  
7f9fde1
! 	gui_mch_mousehide( MOUSE_SHOW );
7f9fde1
      }
7f9fde1
      else
7f9fde1
      {
7f9fde1
! 	PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
7f9fde1
! 		gui_ph_handle_mouse, NULL );
7f9fde1
      }
7f9fde1
      return Pt_CONTINUE;
7f9fde1
  }
7f9fde1
  
7f9fde1
      static void
7f9fde1
! gui_ph_handle_raw_draw( PtWidget_t *widget, PhTile_t *damage )
7f9fde1
  {
7f9fde1
      PhRect_t	*r;
7f9fde1
      PhPoint_t	offset;
7f9fde1
      PhPoint_t	translation;
7f9fde1
  
7f9fde1
!     if( is_ignore_draw == TRUE )
7f9fde1
  	return;
7f9fde1
  
7f9fde1
!     PtSuperClassDraw( PtBasic, widget, damage );
7f9fde1
!     PgGetTranslation( &translation );
7f9fde1
      PgClearTranslation();
7f9fde1
  
7f9fde1
  #if 0
7f9fde1
--- 707,741 ----
7f9fde1
  
7f9fde1
  /* Handle a focus change of the PtRaw widget */
7f9fde1
      static int
7f9fde1
! gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7f9fde1
  {
7f9fde1
!     if (info->reason == Pt_CB_LOST_FOCUS)
7f9fde1
      {
7f9fde1
! 	PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
7f9fde1
! 		gui_ph_handle_mouse, NULL);
7f9fde1
  
7f9fde1
! 	gui_mch_mousehide(MOUSE_SHOW);
7f9fde1
      }
7f9fde1
      else
7f9fde1
      {
7f9fde1
! 	PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
7f9fde1
! 		gui_ph_handle_mouse, NULL);
7f9fde1
      }
7f9fde1
      return Pt_CONTINUE;
7f9fde1
  }
7f9fde1
  
7f9fde1
      static void
7f9fde1
! gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage)
7f9fde1
  {
7f9fde1
      PhRect_t	*r;
7f9fde1
      PhPoint_t	offset;
7f9fde1
      PhPoint_t	translation;
7f9fde1
  
7f9fde1
!     if (is_ignore_draw == TRUE)
7f9fde1
  	return;
7f9fde1
  
7f9fde1
!     PtSuperClassDraw(PtBasic, widget, damage);
7f9fde1
!     PgGetTranslation(&translation);
7f9fde1
      PgClearTranslation();
7f9fde1
  
7f9fde1
  #if 0
7f9fde1
***************
7f9fde1
*** 750,770 ****
7f9fde1
      out_flush();
7f9fde1
  #endif
7f9fde1
  
7f9fde1
!     PtWidgetOffset( widget, &offset );
7f9fde1
!     PhTranslatePoint( &offset, PtWidgetPos( gui.vimTextArea, NULL ) );
7f9fde1
  
7f9fde1
  #if 1
7f9fde1
      /* Redraw individual damage regions */
7f9fde1
!     if( damage->next != NULL )
7f9fde1
  	damage = damage->next;
7f9fde1
  
7f9fde1
!     while( damage != NULL )
7f9fde1
      {
7f9fde1
  	r = &damage->rect;
7f9fde1
  	gui_redraw(
7f9fde1
  		r->ul.x - offset.x, r->ul.y - offset.y,
7f9fde1
  		r->lr.x - r->ul.x + 1,
7f9fde1
! 		r->lr.y - r->ul.y + 1 );
7f9fde1
  	damage = damage->next;
7f9fde1
      }
7f9fde1
  #else
7f9fde1
--- 750,770 ----
7f9fde1
      out_flush();
7f9fde1
  #endif
7f9fde1
  
7f9fde1
!     PtWidgetOffset(widget, &offset);
7f9fde1
!     PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL));
7f9fde1
  
7f9fde1
  #if 1
7f9fde1
      /* Redraw individual damage regions */
7f9fde1
!     if (damage->next != NULL)
7f9fde1
  	damage = damage->next;
7f9fde1
  
7f9fde1
!     while(damage != NULL)
7f9fde1
      {
7f9fde1
  	r = &damage->rect;
7f9fde1
  	gui_redraw(
7f9fde1
  		r->ul.x - offset.x, r->ul.y - offset.y,
7f9fde1
  		r->lr.x - r->ul.x + 1,
7f9fde1
! 		r->lr.y - r->ul.y + 1);
7f9fde1
  	damage = damage->next;
7f9fde1
      }
7f9fde1
  #else
7f9fde1
***************
7f9fde1
*** 773,796 ****
7f9fde1
      gui_redraw(
7f9fde1
  	    r->ul.x - offset.x, r->ul.y - offset.y,
7f9fde1
  	    r->lr.x - r->ul.x + 1,
7f9fde1
! 	    r->lr.y - r->ul.y + 1 );
7f9fde1
  #endif
7f9fde1
  
7f9fde1
!     PgSetTranslation( &translation, 0 );
7f9fde1
  }
7f9fde1
  
7f9fde1
      static int
7f9fde1
  gui_ph_handle_pulldown_menu(
7f9fde1
  	PtWidget_t *widget,
7f9fde1
  	void *data,
7f9fde1
! 	PtCallbackInfo_t *info )
7f9fde1
  {
7f9fde1
!     if( data != NULL )
7f9fde1
      {
7f9fde1
  	vimmenu_T *menu = (vimmenu_T *) data;
7f9fde1
  
7f9fde1
! 	PtPositionMenu( menu->submenu_id, NULL );
7f9fde1
! 	PtRealizeWidget( menu->submenu_id );
7f9fde1
      }
7f9fde1
  
7f9fde1
      return Pt_CONTINUE;
7f9fde1
--- 773,796 ----
7f9fde1
      gui_redraw(
7f9fde1
  	    r->ul.x - offset.x, r->ul.y - offset.y,
7f9fde1
  	    r->lr.x - r->ul.x + 1,
7f9fde1
! 	    r->lr.y - r->ul.y + 1);
7f9fde1
  #endif
7f9fde1
  
7f9fde1
!     PgSetTranslation(&translation, 0);
7f9fde1
  }
7f9fde1
  
7f9fde1
      static int
7f9fde1
  gui_ph_handle_pulldown_menu(
7f9fde1
  	PtWidget_t *widget,
7f9fde1
  	void *data,
7f9fde1
! 	PtCallbackInfo_t *info)
7f9fde1
  {
7f9fde1
!     if (data != NULL)
7f9fde1
      {
7f9fde1
  	vimmenu_T *menu = (vimmenu_T *) data;
7f9fde1
  
7f9fde1
! 	PtPositionMenu(menu->submenu_id, NULL);
7f9fde1
! 	PtRealizeWidget(menu->submenu_id);
7f9fde1
      }
7f9fde1
  
7f9fde1
      return Pt_CONTINUE;
7f9fde1
*** ../vim-7.3.298/src/version.c	2011-09-07 18:58:24.000000000 +0200
7f9fde1
--- src/version.c	2011-09-07 19:01:17.000000000 +0200
7f9fde1
***************
7f9fde1
*** 711,712 ****
7f9fde1
--- 711,714 ----
7f9fde1
  {   /* Add new patch number below this line */
7f9fde1
+ /**/
7f9fde1
+     299,
7f9fde1
  /**/
7f9fde1
7f9fde1
-- 
7f9fde1
The only way the average employee can speak to an executive is by taking a
7f9fde1
second job as a golf caddie.
7f9fde1
				(Scott Adams - The Dilbert principle)
7f9fde1
7f9fde1
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
7f9fde1
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
7f9fde1
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
7f9fde1
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///