00001 #include <gtk/gtk.h> 00002 #include "vapiMacro.h" 00003 #include "vapiGtkMacro.h" 00004 #include "vapiGtkInterface.h" 00005 #include "vapiImagesAux.h" 00006 #include "vapiImages.h" 00007 #include "vapiGtkImages.h" 00008 #include "vapiMacroList.h" 00009 #include "vapiMacroXML.h" 00010 #ifndef VAPI_WITHOUT_INTERFACE 00011 #include "vapiGtkEventsMacros.h" 00012 #endif 00013 00014 void 00015 vapiGtkApplyMacroThread (vMacroThread * MacroThread) 00016 { 00017 vImages *tempImages = vImagesInit (); 00018 00019 tempImages = vapiImagesAuxCloneImages (MacroThread->Images); 00020 vapiApplyMacro (MacroThread->MacroHeader, tempImages, vTRUE, vFALSE); 00021 vapiGtkMacroRunningStop (); 00022 vapiImagesSetActual (MacroThread->Images, tempImages->Actual); 00023 vapiImagesSetOriginal (MacroThread->Images, tempImages->Original); 00024 free (tempImages); 00025 g_thread_exit (NULL); 00026 } 00027 00028 vMacroThread * 00029 vapiGtkMacroThreadNew (vMacroHeader * MacroHeader, vImages * Images) 00030 { 00031 vMacroThread *MacroThread = malloc (sizeof (vMacroThread)); 00032 MacroThread->Images = Images; 00033 MacroThread->MacroHeader = MacroHeader; 00034 return MacroThread; 00035 } 00036 00037 vBoolean 00038 vapiGtkMacroCheckSelected () 00039 { 00040 if (!(SelectedMacro >= 0)) 00041 { 00042 v_error_ui ("Não foi seleccionada nenhuma Macro"); 00043 return vTRUE; 00044 } 00045 return vFALSE; 00046 } 00047 00048 gboolean 00049 vapiGtkMacroTestXMLFileOpen (const GtkFileFilterInfo * filter_info, 00050 gpointer data) 00051 { 00052 if (g_strrstr (filter_info->filename, ".xml") == NULL) 00053 { 00054 return FALSE; 00055 } 00056 if (vapiMacroFromXMLSetName (filter_info->filename) == NULL) 00057 { 00058 return FALSE; 00059 } 00060 else 00061 { 00062 return TRUE; 00063 } 00064 } 00065 00066 gboolean 00067 vapiGtkMacroTestXMLFileSave (const GtkFileFilterInfo * filter_info, 00068 gpointer data) 00069 { 00070 if (g_strrstr (filter_info->filename, ".xml") == NULL) 00071 { 00072 return FALSE; 00073 } 00074 else 00075 { 00076 return TRUE; 00077 } 00078 } 00079 00080 00081 GtkFileFilter * 00082 vapiGtkMacroFileFilterOpen () 00083 { 00084 GtkFileFilter *MacroFileFilter = gtk_file_filter_new (); 00085 gtk_file_filter_add_pattern (MacroFileFilter, "*.xml"); 00086 00087 gtk_file_filter_set_name (MacroFileFilter, "Vapi Macro *.xml"); 00088 00089 00090 gtk_file_filter_add_custom (MacroFileFilter, 00091 GTK_FILE_FILTER_FILENAME, 00092 &vapiGtkMacroTestXMLFileOpen, NULL, NULL); 00093 00094 return MacroFileFilter; 00095 } 00096 00097 GtkFileFilter * 00098 vapiGtkMacroFileFilterSave () 00099 { 00100 GtkFileFilter *MacroFileFilter = gtk_file_filter_new (); 00101 gtk_file_filter_add_pattern (MacroFileFilter, "*.xml"); 00102 00103 gtk_file_filter_set_name (MacroFileFilter, "Vapi Macro *.xml"); 00104 gtk_file_filter_add_custom (MacroFileFilter, 00105 GTK_FILE_FILTER_FILENAME, 00106 &vapiGtkMacroTestXMLFileSave, NULL, NULL); 00107 00108 return MacroFileFilter; 00109 } 00110 00111 void 00112 vapiGtkApplyMacroUntilThread (vMacroThread * MacroThread) 00113 { 00114 vImages *tempImages = vImagesInit (); 00115 00116 tempImages = vapiImagesAuxCloneImages (MacroThread->Images); 00117 00118 vapiApplyMacroUntil (MacroThread->MacroHeader, tempImages, 00119 MacroThread->Until); 00120 vapiGtkMacroRunningStop (); 00121 free (tempImages); 00122 g_thread_exit (NULL); 00123 }