www.pudn.com > HC_v4.22_scn_20070821.zip > callbacks.c


#ifdef HAVE_CONFIG_H
#  include 
#endif

#include 

#include "callbacks.h"
#include "interface.h"
#include "support.h"
#include "playsdkpu.h"
#include 
#include 
#include  
#include 
int pic_index;
int replay=0;
int use_progress=0;
int progress_click=0;
int ok_begin=0;
GtkWidget* select_index_file;
int set_index_file=0;
int click2_low=0;
int click2_high=0;
char *indexfile;
int click_index=0;
int fileopencount=0;
GtkWidget *dialog2,*dialog,*cut_file;
int count=0;
int audio=0;
int play_audio=0;
int step=0;
int forword=0;
int capture_count=0;
char SDL_windowhack[32];
GtkWidget*w_drawingarea;
extern long current_time;
long total_time;
int port=0;
GtkWidget*file_select;
PLAYRECT rect;
INITINFO  info;
char *filename;
int fileopenok=0;
extern GtkWidget*window1;
int   process_time(gpointer data);
extern GtkWidget* range;
extern GtkAdjustment*adj;
extern int w,h;
extern long  total_frame;
extern int current_frame;
gboolean
my_exit                                (GtkWidget       *widget,
                                        GdkEvent        *event,
                                        gpointer         user_data)
{
	gtk_main_quit();
	return TRUE;
}


gboolean
expose_ev_full                         (GtkWidget       *widget,
                                        GdkEventExpose  *event,
                                        gpointer         user_data)
{	

	GdkColormap *colormap;
	GdkColor color;
	colormap=gdk_colormap_get_system();
	gdk_color_parse("black",&color);
	if(gdk_color_alloc(colormap,&color)<0)
		g_error("Alloc color failed!");
	gdk_window_set_background(widget->window,&color);
	gdk_window_clear(widget->window);
}

void
on_open_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	if(fileopencount)
	{
		if(Hik_PlayM4_StopSound(port)<0)
		{
			if(Hik_PlayM4_GetLastErrorCode()!=0)		
			fprintf(stderr,"\nHik_PlayM4_StopSound failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());	   
		}
	}
	progress_click=0;
	use_progress=0;	
	file_select=(gpointer)create_fileselection1();
        	gtk_widget_show(file_select);
}


void
on_close_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	if(fileopenok)
	{	
		if(Hik_PlayM4_Stop(port)<0)
			fprintf(stderr,"\nHik_pLAYM4_Stop failed!");	
		gdk_window_clear(lookup_widget(window1,"w_full_area")->window);
		if(fileopencount)
		{
			if(Hik_PlayM4_StopSound(port)<0)
			{
				if(Hik_PlayM4_GetLastErrorCode()!=0)
				fprintf(stderr,"\nHik_PlayM4_StopSound failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());	   
			}
		}
		progress_click=0;
		use_progress=0;

	}

	
}



void
on_quit_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	gtk_main_quit();
}


void
on_about_activate                     (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	dialog=(gpointer)create_dialog1();
	gtk_widget_show(dialog);
	
}

void  filerefcallback(int port)
{
       
 }
void
file_open_ok                           (GtkButton       *button,
                                        gpointer         user_data)
{

	if(fileopenok)
	{
		if(Hik_PlayM4_CloseFile(port)<0)
			fprintf(stderr,"\nHik_PlayM4_Closeile failed!,Error  0x%x",(unsigned long)Hik_PlayM4_GetLastErrorCode());		
		fileopenok=0;
	}
		
	
	long totalframes=-1;
	long total_frame;
	char buf[30];
	
	GtkWidget*temp_total_frame;
	
	rect.x=0;
	rect.y=0;
	w_drawingarea=lookup_widget(window1,"w_full_area");
	filename=(char *)(gtk_file_selection_get_filename(GTK_FILE_SELECTION(file_select)));
	
	{
		

#if 1
		sprintf(SDL_windowhack, "SDL_WINDOWID=%ld",
				GDK_WINDOW_XWINDOW(w_drawingarea->window));
		putenv(SDL_windowhack);
#endif
		
	}
	info.uWidth=1280;
  	info.uHeight=1024;
  	rect.uWidth=352;
	rect.uHeight=288;
	
	if(Hik_PlayM4_Init(info,1)<0)
  		fprintf(stderr,"\nHik_PlayM4_Init  failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
  	
  	if(Hik_PlayM4_SetDisplay(info.uWidth,info.uHeight)<0)
  		fprintf(stderr,"\nHik_PlayM4_SetDisplay failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
  	if(Hik_PlayM4_SetFileRefCallBack(port,filerefcallback)<0)
  		fprintf(stderr,"\nHik_PlayM4_SetFileRefCallBack  failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());  
 	if(set_index_file)
 	{  		
		if(Hik_PlayM4_SetIndexFile(port,indexfile)<0)
				fprintf(stderr,"\nHIk_PlayM4_SetIndexFile failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
		set_index_file=0;
		fprintf(stderr,"\nSet index file OK!\n");  
	}
				     
	if(Hik_PlayM4_OpenFile(port,filename)<0)
	{
		fprintf(stderr,"\nHik_PlayM4_Openfile failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		return ;
	}
	
	if(Hik_PlayM4_Play(port,rect)<0)
		fprintf(stderr,"\nHik_PlayM4_Playfailed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
	fileopencount++;
	if(Hik_PlayM4_PlaySound(port)<0)
		fprintf(stderr,"\nHik_PlayM4_PlaySound failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());	   
	gtk_timeout_add(1000/10,(GtkFunction)process_time,NULL);
	temp_total_frame=lookup_widget(window1,"w_total_frame");
	total_frame=Hik_PlayM4_GetFileFrames(port);
	sprintf(buf,"%3ld",total_frame);
	gtk_entry_set_text(GTK_ENTRY(temp_total_frame),buf);	
	total_time=Hik_PlayM4_GetFileTime(port);
	sprintf(buf,"%02d:%02d:%02d",total_time/3600,total_time%3600/60,total_time%3600%60);
	gtk_entry_set_text(GTK_ENTRY(lookup_widget(window1,"w_end_time")),buf);
	gtk_widget_hide(file_select);
	fileopenok++;
	
			
	
	
}


void
file_cancel_ok                         (GtkButton       *button,
                                        gpointer         user_data)
{
	gtk_widget_hide(file_select);
	
}


void
play_callback                          (GtkButton       *button,
                                        gpointer         user_data)
{
	if(fileopenok)
	{
	
		if(Hik_PlayM4_Play(port,rect)<0)
			fprintf(stderr,"\nHik_PlayM4_Play failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		if(audio)
		{
		        if(Hik_PlayM4_PlaySound(port)<0)
		     {
		             if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0)
		             fprintf(stderr,"\nHik_PlayM4_PlaySouind failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); 
		     }
		 }  
	}
                if((current_time-1==total_time)||(current_time==total_time))
         {
                        if(Hik_PlayM4_SetCurrentFrameNum(port,0)<0)
        		fprintf(stderr,"\nHik_PlayM4_SetCurrentFrameNum failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());  		
                        if (Hik_PlayM4_SetPlayPos(port,0)<0)
        		fprintf(stderr,"\nHik_PlayM4_SetPlayPosfailed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
         } 	
	
}


void
pause_callback                         (GtkButton       *button,
                                        gpointer         user_data)
{
	if(fileopenok)
	{
		if(GTK_TOGGLE_BUTTON(button)->active)
		{
			if(Hik_PlayM4_Pause(port,1)<0)
				fprintf(stderr,"\nHik_PlayM4_Pause  failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		}
		else
		{
			if(Hik_PlayM4_Pause(port,0)<0)
				fprintf(stderr,"\nHik_PlayM4_Pause  failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
			if(Hik_PlayM4_PlaySound(port)<0)
		        {
		                       if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0)
		                       fprintf(stderr,"\nHik_PlayM4_PlaySouind failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); 
		         }
		     	
				
		}
		
	}
	
}


void
stop_callback                          (GtkButton       *button,
                                        gpointer         user_data)
{
	if(fileopenok)
	{
		if(GTK_TOGGLE_BUTTON(button)->active)
		{
			if(Hik_PlayM4_Stop(port)<0)
					fprintf(stderr,"\nHik_PlayM4_Stop failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		}
		
		audio++;
	}
	
			
}


void
goto_start_callback                    (GtkButton       *button,
                                        gpointer         user_data)
{
	if(fileopenok)
	{
	      if(Hik_PlayM4_SetCurrentFrameNum(port,0)<0)
  		fprintf(stderr,"\nHik_PlayM4_SetCurrentFrameNum failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());  		
  	      if (Hik_PlayM4_SetPlayPos(port,0)<0)
  		fprintf(stderr,"\nHik_PlayM4_SetPlayPosfailed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); 
  	
  	   
  	     		
		
	}
}


void
forward_callback                       (GtkButton       *button,
                                        gpointer         user_data)
{

        if(fileopenok)
    {
	    step++;
	    if(step%3==2)
	   {
	       
	                Hik_PlayM4_ThrowBFrameNum(port, 2);
		if(Hik_PlayM4_Fast(port)<0)
			fprintf(stderr,"\nHik_PlayM4_Fast failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
            }
                 else if(step%3==1)
            {
		Hik_PlayM4_ThrowBFrameNum(port, 1);
		if(Hik_PlayM4_Fast(port)<0)
			fprintf(stderr,"\nHik_PlayM4_Fast failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());	
	    }
             else if(step%3==0)
	    {
			
                             Hik_PlayM4_ThrowBFrameNum(port, 0);
                            if(Hik_PlayM4_Play(port,rect)<0)
		fprintf(stderr,"\nHik_PlayM4_Play  failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
	    }
      
            
      }           
		
	
}


void
back_callback                          (GtkButton       *button,
                                        gpointer         user_data)
{
      
	if(fileopenok)
	{
                   if(GTK_TOGGLE_BUTTON(button)->active)
           {
		if(Hik_PlayM4_Slow(port)<0)
			fprintf(stderr,"\nHik_PlayM4_Slow  failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
           }					
	   else
	   {
	       
	               Hik_PlayM4_ThrowBFrameNum(port, 0);
                            if(Hik_PlayM4_Play(port,rect)<0)
		fprintf(stderr,"\nHik_PlayM4_Play  failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
	    }
	}
	
}


void
goto_end_callback                      (GtkButton       *button,
                                        gpointer         user_data)
{
	if(fileopenok)
	{
	
		Hik_PlayM4_SetCurrentFrameNum(port, total_frame - 1);
	}
	Hik_PlayM4_SetPlayPos(port, 1);
}


void
step_frame_callback                    (GtkButton       *button,
                                        gpointer         user_data)
{
             int  i;
              i=GPOINTER_TO_INT(user_data);
              if(i==1)
       {
                        
                        if(fileopenok)
              {
                                         if(Hik_PlayM4_OneByOne(port)<0)
                       {
                                                if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0)
                                                  fprintf(stderr,"\nHik_Play_OneByOne failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
                        }
               }
       }
          else
          
      {   
                     if(fileopenok)
            {
                                if(Hik_PlayM4_OneByOneBack(port)<0)
                                          fprintf(stderr,"\nHik_Play_OneByOne failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
           }
       }   
      
             
}
void  DisplayCallBack(int port, char *pBuf, long size, long width, long height, long stamp, long type,long reserved)
{
	static int num = 0;	
	char bmp_filename[100],jpg_filename[100];
	struct tm *tm;
	char time_buf[100];	
	time_t now;
	
	capture_count++;
	if(capture_count==1)
	{
		now=time(NULL);
		tm=localtime(&now);
		strftime(time_buf,sizeof(time_buf),"%Y-%m-%d",tm);

		if(pic_index==0)
		{
			sprintf(bmp_filename,"%s_%d.bmp",time_buf, num);
			num++;
			if(Hik_PlayM4_ConvertToBmpFile(pBuf,size,width,height,type,bmp_filename)<0)
				fprintf(stderr,"\nHik_PlayM4_COvertToBmpFile  failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode());
		}
		else 
		{
			sprintf(jpg_filename,"%s_%d.jpg",time_buf,num);
			num++;
			Hik_PlayM4_SetJpegQuality(50);
			if(Hik_PlayM4_ConvertToJpegFile(pBuf,size,width,height,type,jpg_filename)<0)
				fprintf(stderr,"\nHik_PlayM4_Playm4_CovertToBmpFile  failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode());
		}
					
	}		
	
}
void
capture_picture_callback               (GtkButton       *button,
                                        gpointer         user_data)
{
	pic_index=GPOINTER_TO_INT(user_data);
	if(Hik_PlayM4_SetDisplayCallBack(port,DisplayCallBack)<0)
		fprintf(stderr,"\nHik_PlayM4_DisplayCallBack failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode());
	capture_count=0;
}



void
play_audio_callback                    (GtkButton       *button,
                                        gpointer         user_data)
{
	if(GTK_TOGGLE_BUTTON(button)->active)
	{

		if(Hik_PlayM4_PlaySound(port)<0)
		{
                	       if(Hik_PlayM4_GetLastErrorCode()!=0)
			fprintf(stderr,"\nHik_PlaytM4_PlaySound failed!.Error  0x%x",Hik_PlayM4_GetLastErrorCode());
	       }
	}
	else
	{

		if(Hik_PlayM4_StopSound()<0)
		{
		    if(Hik_PlayM4_GetLastErrorCode()!=0)
			fprintf(stderr,"\nHik_PlaytM4_StopSound failed!.Error  0x%x",Hik_PlayM4_GetLastErrorCode());
                }
	}
	
}

int j=0;
void
process_range_callback                 (GtkRange        *range,
                                        gpointer         user_data)
{
	int i;
	int value;
	GtkAdjustment *adju;
	i=GPOINTER_TO_INT(user_data);
	if(fileopenok)
	{
		if(i!=2)
		{
			adju=gtk_range_get_adjustment(range);
			value=(gint)adju->value;
			if(Hik_PlayM4_SetVolume(port,value)<0)
				fprintf(stderr,"\nHik_PlayM4_SetVolume failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode());
			
		}
		else 
		{
			j++;
			use_progress++;
			gtk_window_set_resizable (GTK_WINDOW (window1), FALSE);
			if(Hik_PlayM4_SetPlayPos(port,(float )(adj->value/100))<0)
			{
			    
			    if(adj->value>0&&adj->value<100)
				fprintf(stderr,"\nHik_PlayM4_SetPlayPos  failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode());
		          
		        }	
			gtk_range_set_adjustment(range,adj);
			
		}
	}
	
	
}


 int click2_flag=0;
 int i=0;
gboolean
click2                                 (GtkWidget       *widget,
                                        GdkEventButton  *event,
                                        gpointer         user_data)
{
	static int click=0;
	if(event->type!=GDK_2BUTTON_PRESS)
		return 0;
	click2_flag++;
	if(click2_flag%2==1)
	{
		gtk_widget_hide(lookup_widget(window1,"hbox1"));
		gtk_widget_hide(lookup_widget(window1,"hbox5"));
		gtk_widget_hide(lookup_widget(window1,"hbox6"));
		gtk_widget_hide(lookup_widget(window1,"menubar1"));	
		
		w=1024;
		h=768;
		rect.x=0;
		rect.y=0;
		info.uWidth=w;
	  	info.uHeight=h;
	  	rect.uWidth=w;
		rect.uHeight=h;
		if(Hik_PlayM4_SetDisplay(info.uWidth,info.uHeight)<0)
	  		fprintf(stderr,"\nHik_PlayM4_SetDisplay failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		if(Hik_PlayM4_SetPlayRect(port,rect)<0)
			fprintf(stderr,"\nHik_PlayM4_SetPlayRect failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		gtk_window_set_resizable (GTK_WINDOW (window1), TRUE);	
		gtk_window_fullscreen(GTK_WINDOW(window1));
		i++;
		
		
		
		
	}
	else 
	{
		
		int w,h;
		if(Hik_PlayM4_GetPictureSize(port,&w,&h)<0)
	  		fprintf(stderr,"\nHik_PlayM4_GetPictureSize failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());	  	
		rect.x=0;
		rect.y=0;
		info.uWidth=w;
	  	info.uHeight=h;
	  	rect.uWidth=w;
		rect.uHeight=h;
		if(Hik_PlayM4_SetDisplay(info.uWidth,info.uHeight)<0)
	  		fprintf(stderr,"\nHik_PlayM4_SetDisplay failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		if(Hik_PlayM4_SetPlayRect(port,rect)<0)
			fprintf(stderr,"\nHik_PlayM4_SetPlayRect failed!,Error  0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode());
		gtk_widget_set_size_request (lookup_widget(window1,"vbox3"), w, h);
		gtk_widget_set_size_request (lookup_widget(window1,"w_full_area"), w, h);
		gtk_widget_set_size_request (window1, w, h+80);	
		gtk_widget_show(lookup_widget(window1,"hbox1"));
		gtk_widget_show(lookup_widget(window1,"hbox5"));
		gtk_widget_show(lookup_widget(window1,"hbox6"));
		gtk_widget_show(lookup_widget(window1,"menubar1"));		
		gtk_window_unfullscreen(GTK_WINDOW(window1));
		gtk_widget_set_size_request (lookup_widget(window1,"vbox3"), w, h);
		gtk_widget_set_size_request (lookup_widget(window1,"w_full_area"), w, h);
		gtk_widget_set_size_request (window1, w, h+80);
		
		 	
	}
	gtk_window_set_resizable (GTK_WINDOW (window1), FALSE);
	click++;
	
 	 return TRUE;
}

gboolean
move_callback                                (GtkWidget       *widget,
                                        GdkEventButton  *event,
                                        gpointer         user_data)
{
  
       if(fileopenok)
    { 
               int  width,height;       
              gdk_window_get_size(GDK_WINDOW(lookup_widget(window1,"w_full_area")->window),&width,&height);     
               info.uWidth=width;
               info.uHeight=height;
               rect.x=0;
	rect.y=0;
  	rect.uWidth=width;
	rect.uHeight=height;
	if(Hik_PlayM4_SetDisplay(info.uWidth,info.uHeight)<0)
  		fprintf(stderr,"\nHik_PlayM4_SetDisplay failed! Error  0x%lx",(unsigned long )Hik_PlayM4_GetLastErrorCode());
	if(Hik_PlayM4_SetPlayRect(port,rect)<0)
		fprintf(stderr,"\nHik_PlayM4_SetPlayRect failed!,Error  0x%x",(unsigned long)Hik_PlayM4_GetLastErrorCode());	
    }

  
            return  TRUE;
}
void
set_picture_quality_callback                    (GtkButton       *button,
                                        gpointer         user_data)
{
        int i;
        i=GPOINTER_TO_INT(user_data);
       if(i==1)
    {
                if(GTK_TOGGLE_BUTTON(button)->active)
         {
         
                	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog2,"w_low")),FALSE);
                	if(Hik_PlayM4_SetPicQuality(port,1)<0)
                {
	                	fprintf(stderr,"\nHik_PlayM4_SetPicQuality failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
	        }
		 click2_high++;
		 
	  }
	  else
	  {
	  	
                	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog2,"w_low")),TRUE);
                	if(Hik_PlayM4_SetPicQuality(port,0)<0)
                {
	                	fprintf(stderr,"\nHik_PlayM4_SetPicQuality failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
	        }
		 click2_low++;
	   }
      }
      else
    {
      	 if(GTK_TOGGLE_BUTTON(button)->active)
         {
         
                	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog2,"w_high")),FALSE);
                	if(Hik_PlayM4_SetPicQuality(port,0)<0)
                {
	                	fprintf(stderr,"\nHik_PlayM4_SetPicQuality failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
	        }
		 click2_low++;	        
	  }
	  else
	  {
	  	
                	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog2,"w_high")),TRUE);
                	if(Hik_PlayM4_SetPicQuality(port,1)<0)
                {
	                	fprintf(stderr,"\nHik_PlayM4_SetPicQuality failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
	        }
		 click2_high++;	        
	   }
      }
}
                                     

void
on_closebutton1_clicked                (GtkButton       *button,
                                        gpointer         user_data)
{
	gtk_widget_hide(dialog);
}

void
on_file_info_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	   
	 dialog2=(gpointer)create_dialog2();
	 gtk_widget_show(dialog2);
	 count++;
  	 char   buf[100];
  	 sprintf(buf,"%3d",Hik_PlayM4_GetFileHeadLength());
    	 gtk_entry_set_text(GTK_ENTRY(lookup_widget(dialog2,"entry13")),buf);
} 
                                            
void
on_closebutton2_clicked                (GtkButton       *button,
                                        gpointer         user_data)
{
	gtk_widget_hide(dialog2);
}                                        
void
on_w_set_index_file_clicked              (GtkButton       *button,
                                        gpointer         user_data)
{
	
	
	
}
                                      
void
on_cut_file_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	
	
	cut_file=(gpointer)create_dialog3();
	gtk_widget_show(cut_file);
	
	if(fileopenok)
	{
		char buf[100];
		sprintf(buf,"0~%ld",Hik_PlayM4_GetFileFrames(port));
		gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_frame_num")),buf);
		sprintf(buf,"0~%ld",Hik_PlayM4_GetFileTime(port));
		gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_frame_time")),buf);
	}
		
	
}                                        
void
on_cancelbutton1_clicked               (GtkButton       *button,
                                        gpointer         user_data)
{
	gtk_widget_hide(cut_file);
}
void
on_okbutton1_clicked                (GtkButton       *button,
                                        gpointer         user_data)
{
#if 1	
	unsigned int begin_pos;
	unsigned int end_pos;
	FRAME_POS pos_begin;
	FRAME_POS  pos_end;
	long newfilelen;
	char *savefilename;
	char buf[2048];
	long  size=2048;
	long block;
	long  count;
	long remain;
	int save_fd;
	FILE *org_fd;
	begin_pos=atoi(gtk_entry_get_text(GTK_ENTRY(lookup_widget(cut_file,"w_begin"))));
	end_pos=atoi(gtk_entry_get_text(GTK_ENTRY(lookup_widget(cut_file,"w_end"))));

	if(fileopenok)
	{	
		if(GTK_TOGGLE_BUTTON(lookup_widget(cut_file,"w_by_num"))->active)
		{
			if((begin_pos>Hik_PlayM4_GetFileFrames(port))||(end_pos>Hik_PlayM4_GetFileFrames(port))||(begin_pos>end_pos)||(end_pos==0))
			{
				fprintf(stderr,"\nInput value of pos error !\n");
				return ;
			}
			else
			{
				if(Hik_PlayM4_GetKeyFramePos(port,begin_pos,BY_FRAMENUM,&pos_begin)<0)
				fprintf(stderr,"\nHIk_PlayM4_GetKeyFramePos  failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
				 if(Hik_PlayM4_GetNextKeyFramePos(port,end_pos,BY_FRAMENUM,&pos_end)<0)
				fprintf(stderr,"\nHIk_PlayM4_GetNextKeyFramePos  failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());			 
				newfilelen=pos_end.nFilePos-pos_begin.nFilePos;	
				savefilename=(char*)gtk_entry_get_text(GTK_ENTRY(lookup_widget(cut_file,"w_save_file")));
				save_fd=open(savefilename,O_WRONLY|O_CREAT,0777);
				if(save_fd<0)
				{

					perror(">>>open");
				}
				else
				{
					ftruncate(save_fd,0);
					org_fd=fopen(filename,"rb");		
					if(org_fd==0)
					
						fprintf(stderr,"\nRead file %s failed!",filename);
					else
					{
						fseek(org_fd,0,SEEK_SET);
						if(fread(buf,Hik_PlayM4_GetFileHeadLength(),1,org_fd)==0)
							fprintf(stderr,"\nRead filehead failed!");
						else
						{					
							fprintf(stderr,"\nRead  file head from org_file ok!");
							if(write(save_fd,buf,Hik_PlayM4_GetFileHeadLength())<0)
							fprintf(stderr,"\nWrite file head failed!");
							else
							fprintf(stderr,"\nWrite file head to save_file ok!\n   fileheadlen=%d\n",Hik_PlayM4_GetFileHeadLength());										
						}						
						
						fseek(org_fd,pos_begin.nFilePos,SEEK_SET);
						block=newfilelen/size;
						remain=newfilelen%size;
						for(count=0;countactive)
		{
		
			if((begin_pos>Hik_PlayM4_GetFileFrames(port))||(end_pos>Hik_PlayM4_GetFileFrames(port))||(begin_pos>end_pos)||(end_pos==0))
			{
				fprintf(stderr,"\nInput value of pos error !");
				return ;
			}
			else
			{
				if(Hik_PlayM4_GetKeyFramePos(port,begin_pos*1000,BY_FRAMETIME,&pos_begin)<0)
				fprintf(stderr,"\nHIk_PlayM4_GetKeyFramePos  failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());
				 if(Hik_PlayM4_GetNextKeyFramePos(port,end_pos*1000,BY_FRAMETIME,&pos_end)<0)
				fprintf(stderr,"\nHIk_PlayM4_GetNextKeyFramePos  failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode());			 
				newfilelen=pos_end.nFilePos-pos_begin.nFilePos;	
				savefilename=(char*)gtk_entry_get_text(GTK_ENTRY(lookup_widget(cut_file,"w_save_file")));
				save_fd=open(savefilename,O_WRONLY|O_CREAT,0777);
				if(save_fd<0)
				{

					perror(">>>open");
				}
				else
				{
					ftruncate(save_fd,0);
					org_fd=fopen(filename,"rb");		
					if(org_fd==0)
						fprintf(stderr,"\nRead file %s failed!",filename);
					else
					{

						fseek(org_fd,0,SEEK_SET);
						if(fread(buf,Hik_PlayM4_GetFileHeadLength(),1,org_fd)==0)
							fprintf(stderr,"\nRead filehead failed!");
						else
						{					
							fprintf(stderr,"\nRead  file head from org_file ok!");
							if(write(save_fd,buf,Hik_PlayM4_GetFileHeadLength())<0)
							fprintf(stderr,"\nWrite file head failed!");
							else
							fprintf(stderr,"\nWrite file head to save_file ok!\n  fileheadlen=%d\n",Hik_PlayM4_GetFileHeadLength());										
						}						
						
						fseek(org_fd,pos_begin.nFilePos,SEEK_SET);
						block=newfilelen/size;
						remain=newfilelen%size;
						for(count=0;countactive)
	{
		select_index_file=(gpointer)create_fileselection2();
	        	gtk_widget_show(select_index_file);

	}
	
	
	
}                                        

void
on_button1_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{
	gtk_widget_hide(select_index_file);	

}


void
on_button2_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{
	indexfile=(char *)(gtk_file_selection_get_filename(GTK_FILE_SELECTION(select_index_file)));
	set_index_file++;
	gtk_widget_hide(select_index_file);		
	
	
}


void
on_w_use_progress_clicked              (GtkButton       *button,
                                        gpointer         user_data)
{
	if(GTK_TOGGLE_BUTTON(button)->active)
	{
		
		progress_click++;
	}
			
		
		
}


void
on_w_ok_begin_clicked                  (GtkButton       *button,
                                        gpointer         user_data)
{
	progress_click=0;
	static int start_pos;
	char buf[100];
	if(GTK_TOGGLE_BUTTON(lookup_widget(cut_file,"w_ok_begin"))->active)
	{
		
		if(!(GTK_TOGGLE_BUTTON(lookup_widget(cut_file,"w_by_time"))->active))	
		{	
			
			start_pos=atoi(gtk_entry_get_text(GTK_ENTRY(lookup_widget(window1,"w_current_frame"))));
			sprintf(buf,"%3d",start_pos);
			gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_begin")),buf);			
			
		}
		else
		{
		
			start_pos=Hik_PlayM4_GetPlayedTime(port);
			sprintf(buf,"%3d",start_pos);
			gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_begin")),buf);
		}
		ok_begin++;			
				
	}
}


void
on_w_ok_end_clicked                    (GtkButton       *button,
                                        gpointer         user_data)
{
	int end_pos;
	char buf[100];
	if(ok_begin)
	{
		
		if(GTK_TOGGLE_BUTTON(button)->active)
		{
			if(!(GTK_TOGGLE_BUTTON(lookup_widget(cut_file,"w_by_time"))->active))		

			{
				end_pos=atoi(gtk_entry_get_text(GTK_ENTRY(lookup_widget(window1,"w_current_frame"))));
				sprintf(buf,"%3d",end_pos);
				gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_end")),buf);
			}
			else
			{
				end_pos=Hik_PlayM4_GetPlayedTime(port);
				sprintf(buf,"%3d",end_pos);
				gtk_entry_set_text(GTK_ENTRY(lookup_widget(cut_file,"w_end")),buf);
			}
				
	
		}
		ok_begin=0;
	}
				

}


void
on_replay_activate                     (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	if(GTK_CHECK_MENU_ITEM(menuitem)->active)
	{
		replay++;
	}
	else
	{
		replay=0;
	}
 	

}