kopia lustrzana https://github.com/jamescoxon/dl-fldigi
				
				
				
			Upstream version 3.04AN
							rodzic
							
								
									4709ddb4c3
								
							
						
					
					
						commit
						096e1eb1b5
					
				|  | @ -60,6 +60,9 @@ Change Log: | |||
|           <RX><TIMER>20 | ||||
|            | ||||
|           will generate 5 seconds of idle, the text, and repeat after 20 sec's. | ||||
|       23) Added new configuration options to set the waterfall width and height | ||||
|           These and the docked digiscope configuration option require a program | ||||
|           restart to take effect. | ||||
| 
 | ||||
| 3.03 | ||||
|       1) Changes to socket server to correct shutdown process | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ dnl major and minor must be integers; patch may | |||
| dnl contain other characters or be empty | ||||
| m4_define(FLDIGI_MAJOR, [3]) | ||||
| m4_define(FLDIGI_MINOR, [0]) | ||||
| m4_define(FLDIGI_PATCH, [4AM]) | ||||
| m4_define(FLDIGI_PATCH, [4AN]) | ||||
| 
 | ||||
| AC_INIT([fldigi], FLDIGI_MAJOR.FLDIGI_MINOR[FLDIGI_PATCH], [w1hkj AT w1hkj DOT com]) | ||||
| 
 | ||||
|  |  | |||
|  | @ -889,6 +889,29 @@ static void cb_btnDisplayMacroFilename(Fl_Check_Button* o, void*) { | |||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Group *tabMainWindow=(Fl_Group *)0; | ||||
| 
 | ||||
| Fl_Counter *cntrWfwidth=(Fl_Counter *)0; | ||||
| 
 | ||||
| static void cb_cntrWfwidth(Fl_Counter* o, void*) { | ||||
|   progdefaults.wfwidth = (int)(o->value()); | ||||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Counter *cntrWfheight=(Fl_Counter *)0; | ||||
| 
 | ||||
| static void cb_cntrWfheight(Fl_Counter* o, void*) { | ||||
|   progdefaults.wfheight = (int)o->value(); | ||||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Check_Button *btnDockedScope=(Fl_Check_Button *)0; | ||||
| 
 | ||||
| static void cb_btnDockedScope(Fl_Check_Button* o, void*) { | ||||
|   progdefaults.docked_scope = o->value(); | ||||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Group *tabRSid=(Fl_Group *)0; | ||||
| 
 | ||||
| Fl_Check_Button *chkTransmitRSid=(Fl_Check_Button *)0; | ||||
|  | @ -935,15 +958,6 @@ static void cb_btnStartAtSweetSpot(Fl_Check_Button* o, void*) { | |||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Group *tabMainWindow=(Fl_Group *)0; | ||||
| 
 | ||||
| Fl_Check_Button *btnDockedScope=(Fl_Check_Button *)0; | ||||
| 
 | ||||
| static void cb_btnDockedScope(Fl_Check_Button* o, void*) { | ||||
|   progdefaults.docked_scope = o->value(); | ||||
| progdefaults.changed = true; | ||||
| } | ||||
| 
 | ||||
| Fl_Group *tabModems=(Fl_Group *)0; | ||||
| 
 | ||||
| Fl_Tabs *tabsModems=(Fl_Tabs *)0; | ||||
|  | @ -2213,6 +2227,43 @@ l with your sound hardware."); | |||
|             } // Fl_Group* o
 | ||||
|             tabMacros->end(); | ||||
|           } // Fl_Group* tabMacros
 | ||||
|           { tabMainWindow = new Fl_Group(0, 50, 400, 170, "Main window"); | ||||
|             tabMainWindow->hide(); | ||||
|             { Fl_Group* o = new Fl_Group(5, 60, 390, 125, "Changes take effect on startup"); | ||||
|               o->box(FL_ENGRAVED_FRAME); | ||||
|               o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE); | ||||
|               { Fl_Counter* o = cntrWfwidth = new Fl_Counter(30, 92, 95, 21, "Waterfall width in Hz"); | ||||
|                 cntrWfwidth->tooltip("Wider ==> higher cpu usage"); | ||||
|                 cntrWfwidth->type(1); | ||||
|                 cntrWfwidth->minimum(2400); | ||||
|                 cntrWfwidth->maximum(4000); | ||||
|                 cntrWfwidth->step(100); | ||||
|                 cntrWfwidth->value(3000); | ||||
|                 cntrWfwidth->callback((Fl_Callback*)cb_cntrWfwidth); | ||||
|                 cntrWfwidth->align(FL_ALIGN_RIGHT); | ||||
|                 o->value(progdefaults.wfwidth); | ||||
|               } // Fl_Counter* cntrWfwidth
 | ||||
|               { Fl_Counter* o = cntrWfheight = new Fl_Counter(30, 121, 95, 21, "Waterfall height in pixels"); | ||||
|                 cntrWfheight->tooltip("Taller ==> higher cpu usage"); | ||||
|                 cntrWfheight->type(1); | ||||
|                 cntrWfheight->minimum(100); | ||||
|                 cntrWfheight->maximum(160); | ||||
|                 cntrWfheight->step(5); | ||||
|                 cntrWfheight->value(120); | ||||
|                 cntrWfheight->callback((Fl_Callback*)cb_cntrWfheight); | ||||
|                 cntrWfheight->align(FL_ALIGN_RIGHT); | ||||
|                 o->value(progdefaults.wfheight); | ||||
|               } // Fl_Counter* cntrWfheight
 | ||||
|               { btnDockedScope = new Fl_Check_Button(30, 150, 125, 20, "Docked scope"); | ||||
|                 btnDockedScope->tooltip("Restart fldigi for this option to take effect"); | ||||
|                 btnDockedScope->down_box(FL_DOWN_BOX); | ||||
|                 btnDockedScope->callback((Fl_Callback*)cb_btnDockedScope); | ||||
|                 btnDockedScope->value(progdefaults.docked_scope); | ||||
|               } // Fl_Check_Button* btnDockedScope
 | ||||
|               o->end(); | ||||
|             } // Fl_Group* o
 | ||||
|             tabMainWindow->end(); | ||||
|           } // Fl_Group* tabMainWindow
 | ||||
|           { tabRSid = new Fl_Group(0, 50, 400, 170, "RSid"); | ||||
|             tabRSid->hide(); | ||||
|             { Fl_Group* o = new Fl_Group(5, 65, 390, 45); | ||||
|  | @ -2272,20 +2323,6 @@ l with your sound hardware."); | |||
|             } // Fl_Group* o
 | ||||
|             tabSweetSpot->end(); | ||||
|           } // Fl_Group* tabSweetSpot
 | ||||
|           { tabMainWindow = new Fl_Group(0, 50, 400, 170, "Main window"); | ||||
|             tabMainWindow->hide(); | ||||
|             { Fl_Group* o = new Fl_Group(5, 60, 390, 75); | ||||
|               o->box(FL_ENGRAVED_FRAME); | ||||
|               { btnDockedScope = new Fl_Check_Button(30, 84, 125, 20, "Docked scope"); | ||||
|                 btnDockedScope->tooltip("Restart fldigi for this option to take effect"); | ||||
|                 btnDockedScope->down_box(FL_DOWN_BOX); | ||||
|                 btnDockedScope->callback((Fl_Callback*)cb_btnDockedScope); | ||||
|                 btnDockedScope->value(progdefaults.docked_scope); | ||||
|               } // Fl_Check_Button* btnDockedScope
 | ||||
|               o->end(); | ||||
|             } // Fl_Group* o
 | ||||
|             tabMainWindow->end(); | ||||
|           } // Fl_Group* tabMainWindow
 | ||||
|           tabsMisc->end(); | ||||
|         } // Fl_Tabs* tabsMisc
 | ||||
|         tabMisc->end(); | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 | |||
|     } { | ||||
|       Fl_Group tabOperator { | ||||
|         label Oper | ||||
|         callback {progdefaults.changed = true;} open selected | ||||
|         callback {progdefaults.changed = true;} open | ||||
|         xywh {0 25 400 195} color 51 selection_color 51 when 1 | ||||
|       } { | ||||
|         Fl_Input inpMyCallsign { | ||||
|  | @ -1078,6 +1078,37 @@ progdefaults.changed = true;} | |||
|               } | ||||
|             } | ||||
|           } | ||||
|           Fl_Group tabMainWindow { | ||||
|             label {Main window} open | ||||
|             xywh {0 50 400 170} hide | ||||
|           } { | ||||
|             Fl_Group {} { | ||||
|               label {Changes take effect on startup} open | ||||
|               xywh {5 60 390 125} box ENGRAVED_FRAME align 17 | ||||
|             } { | ||||
|               Fl_Counter cntrWfwidth { | ||||
|                 label {Waterfall width in Hz} | ||||
|                 callback {progdefaults.wfwidth = (int)(o->value()); | ||||
| progdefaults.changed = true;} | ||||
|                 tooltip {Wider ==> higher cpu usage} xywh {30 92 95 21} type Simple align 8 minimum 2400 maximum 4000 step 100 value 3000 | ||||
|                 code0 {o->value(progdefaults.wfwidth);} | ||||
|               } | ||||
|               Fl_Counter cntrWfheight { | ||||
|                 label {Waterfall height in pixels} | ||||
|                 callback {progdefaults.wfheight = (int)o->value(); | ||||
| progdefaults.changed = true;} selected | ||||
|                 tooltip {Taller ==> higher cpu usage} xywh {30 121 95 21} type Simple align 8 minimum 100 maximum 160 step 5 value 120 | ||||
|                 code0 {o->value(progdefaults.wfheight);} | ||||
|               } | ||||
|               Fl_Check_Button btnDockedScope { | ||||
|                 label {Docked scope} | ||||
|                 callback {progdefaults.docked_scope = o->value(); | ||||
| progdefaults.changed = true;} | ||||
|                 tooltip {Restart fldigi for this option to take effect} xywh {30 150 125 20} down_box DOWN_BOX | ||||
|                 code0 {btnDockedScope->value(progdefaults.docked_scope);} | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|           Fl_Group tabRSid { | ||||
|             label RSid open | ||||
|             xywh {0 50 400 170} hide | ||||
|  | @ -1138,22 +1169,6 @@ progdefaults.changed = true;} | |||
|               } | ||||
|             } | ||||
|           } | ||||
|           Fl_Group tabMainWindow { | ||||
|             label {Main window} open | ||||
|             xywh {0 50 400 170} hide | ||||
|           } { | ||||
|             Fl_Group {} {open | ||||
|               xywh {5 60 390 75} box ENGRAVED_FRAME | ||||
|             } { | ||||
|               Fl_Check_Button btnDockedScope { | ||||
|                 label {Docked scope} | ||||
|                 callback {progdefaults.docked_scope = o->value(); | ||||
| progdefaults.changed = true;} | ||||
|                 tooltip {Restart fldigi for this option to take effect} xywh {30 84 125 20} down_box DOWN_BOX | ||||
|                 code0 {btnDockedScope->value(progdefaults.docked_scope);} | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       Fl_Group tabModems { | ||||
|  |  | |||
|  | @ -177,10 +177,11 @@ Fl_RGB_Image		*feld_image = 0; | |||
| Pixmap				fldigi_icon_pixmap; | ||||
| #endif | ||||
| 
 | ||||
| int IMAGE_WIDTH = DEFAULT_IMAGE_WIDTH; | ||||
| int Hwfall = DEFAULT_HWFALL; | ||||
| int HNOM = DEFAULT_HNOM; | ||||
| int WNOM = DEFAULT_WNOM; | ||||
| int IMAGE_WIDTH; | ||||
| int Hwfall; | ||||
| int HNOM; | ||||
| int WNOM; | ||||
| int Wwfall; | ||||
| 
 | ||||
| bool clean_exit(void); | ||||
| 
 | ||||
|  | @ -1669,6 +1670,12 @@ void create_fl_digi_main() { | |||
| 
 | ||||
| 	int pad = wSpace, Y = 0; | ||||
| 
 | ||||
| 	IMAGE_WIDTH = progdefaults.wfwidth; | ||||
| 	Hwfall = progdefaults.wfheight; | ||||
| 	Wwfall = DEFAULT_HNOM + 2 * BEZEL; | ||||
| 	WNOM = Wwfall + 2 * DEFAULT_SW; | ||||
| 	HNOM = DEFAULT_HNOM; | ||||
| 	 | ||||
| 	if (progdefaults.docked_scope) | ||||
| 		WNOM -= 2*DEFAULT_SW; | ||||
| 	 | ||||
|  |  | |||
|  | @ -176,7 +176,9 @@ If you will control the rig via a serial port, select the COM port you will use, | |||
| If in doubt, check both RTS and DTR. You MUST then press the <B>Initialize</B> button.  \ | ||||
| <LI>If you plan to use CAT control of the rig via the COM port, check 'use rigCAT'. If in addition you wish to use \ | ||||
| PTT control via CAT, also then check 'rigCAT PTT'. You MUST then press the <B>Initialize</B> button.  \ | ||||
| <LI>Use the menu <B>Configure/Defaults/Misc</B> item to set whether you wish to transmit RSID data at the start of each \ | ||||
| <LI>Use the menu <B>Configure/Defaults/Misc - Main Window tab</B> item to set the aspect ratio of the waterfall display and whether or not you want \ | ||||
| to dock a second digiscope to the main window.\ | ||||
| <LI>Use the menu <B>Configure/Defaults/Misc - RSID tab</B> item to set whether you wish to transmit RSID data at the start of each \ | ||||
| over (this is for the benefit of others, this setting does not affect RSID reception), and whether you have a slow computer (under 1000MHz) \ | ||||
| or not. The receiver decoding strategy uses less processor power in 'Slow cpu' mode. If you plan to regularly \ | ||||
| use the RSID feature on receive, you must leave the 'Start New Modem at Sweet Spot' item unchecked.  \ | ||||
|  | @ -324,7 +326,7 @@ is a rather cool tool that allows you to monitor several PSK31 signals all at th | |||
| <A HREF=\"http://www.w1hkj.com/Fldigi.html\">Home Page</A>, and various information about the program.</DD> \
 | ||||
| </DL>\ | ||||
| The two non-menu functions are:\ | ||||
| <DL><DT><B>RSID ?</B></DT>\ | ||||
| <DL><DT><B>RSID</B></DT>\ | ||||
| <DD>This button turns on the receive RSID (automatic mode detection and tuning) feature. When in use, the button turns yellow and no text reception is possible until \ | ||||
| a signal is identified, or the feature is turned off again. If you plan to use the RSID feature on receive, \ | ||||
| you must leave the 'Start New Modem at Sweet Spot' item in the Menu Configure/Defaults/Mics tab unchecked.</DD>\ | ||||
|  |  | |||
|  | @ -127,6 +127,10 @@ extern Fl_Check_Button *chkSlowCpu; | |||
| extern Fl_Group *tabMacros; | ||||
| extern Fl_Check_Button *btnUseLastMacro; | ||||
| extern Fl_Check_Button *btnDisplayMacroFilename; | ||||
| extern Fl_Group *tabMainWindow; | ||||
| extern Fl_Counter *cntrWfwidth; | ||||
| extern Fl_Counter *cntrWfheight; | ||||
| extern Fl_Check_Button *btnDockedScope; | ||||
| extern Fl_Group *tabRSid; | ||||
| extern Fl_Check_Button *chkTransmitRSid; | ||||
| extern Fl_Check_Button *chkRSidWideSearch; | ||||
|  | @ -135,8 +139,6 @@ extern Fl_Value_Input *valCWsweetspot; | |||
| extern Fl_Value_Input *valRTTYsweetspot; | ||||
| extern Fl_Value_Input *valPSKsweetspot; | ||||
| extern Fl_Check_Button *btnStartAtSweetSpot; | ||||
| extern Fl_Group *tabMainWindow; | ||||
| extern Fl_Check_Button *btnDockedScope; | ||||
| extern Fl_Group *tabModems; | ||||
| extern Fl_Tabs *tabsModems; | ||||
| extern Fl_Group *tabCW; | ||||
|  |  | |||
|  | @ -147,6 +147,8 @@ | |||
|         ELEM_(bool, ID_SMALL, "IDSMALL", true)                                          \ | ||||
|         ELEM_(bool, macrotextid, "", false)                                             \ | ||||
|         ELEM_(bool, docked_scope, "DOCKEDSCOPE", false)                                 \ | ||||
|         ELEM_(int,  wfwidth, "WFWIDTH", 3000)                                           \ | ||||
|         ELEM_(int,  wfheight, "WFHEIGHT", 125)                                           \ | ||||
| /* QRZ */                                                                               \ | ||||
|         ELEM_(int, QRZ, "QRZTYPE", 0) /* Not available */                               \ | ||||
|         ELEM_(std::string, QRZpathname, "QRZPATHNAME", "")                              \ | ||||
|  |  | |||
|  | @ -75,7 +75,7 @@ | |||
| //#define DEFAULT_HWFALL 144
 | ||||
| #define DEFAULT_HWFALL 124 | ||||
| #define DEFAULT_HNOM 500 | ||||
| #define Wwfall		(DEFAULT_HNOM + 2 * BEZEL) | ||||
| //#define Wwfall		(DEFAULT_HNOM + 2 * BEZEL)
 | ||||
| #define DEFAULT_WNOM (Wwfall + 2* DEFAULT_SW) | ||||
| 
 | ||||
| //#define EMC_HWFALL 144
 | ||||
|  | @ -86,6 +86,7 @@ extern int IMAGE_WIDTH; | |||
| extern int Hwfall; | ||||
| extern int HNOM; | ||||
| extern int WNOM; | ||||
| extern int Wwfall; | ||||
| 
 | ||||
| #define Hmenu		22 | ||||
| #define Hqsoframe	48 | ||||
|  |  | |||
							
								
								
									
										22
									
								
								src/main.cxx
								
								
								
								
							
							
						
						
									
										22
									
								
								src/main.cxx
								
								
								
								
							|  | @ -394,15 +394,15 @@ void generate_option_help(void) { | |||
| 	     << "    The default is: " << Fl::get_font(FL_HELVETICA) | ||||
| 	     << ':' << FL_NORMAL_SIZE << "\n\n" | ||||
| 
 | ||||
| 	     << "  --wfall-width WIDTH\n" | ||||
| 	     << "    WIDTH may be 2000 to 4000 in Hz, recommend 50 Hz increments.\n\n" | ||||
| //	     << "  --wfall-width WIDTH\n"
 | ||||
| //	     << "    WIDTH may be 2000 to 4000 in Hz, recommend 50 Hz increments.\n\n"
 | ||||
| 
 | ||||
| 	     << "  --wfall-height HEIGHT\n" | ||||
| 	     << "    HEIGHT in pixels, ie 100 - 200, recommend 10 pixel increments.\n\n" | ||||
| 
 | ||||
| 	     << "  --toggle-check-buttons\n" | ||||
| 	     << "    Use lighted or check buttons for AFC / SQL.\n"; | ||||
| //	     << "  --wfall-height HEIGHT\n"
 | ||||
| //	     << "    HEIGHT in pixels, ie 100 - 200, recommend 10 pixel increments.\n\n"
 | ||||
| 
 | ||||
| //	     << "  --toggle-check-buttons\n"
 | ||||
| //	     << "    Use lighted or check buttons for AFC / SQL.\n"
 | ||||
| 		; | ||||
| 
 | ||||
| 	option_help = help.str(); | ||||
| } | ||||
|  | @ -425,7 +425,7 @@ int parse_args(int argc, char **argv, int& idx) | |||
| 	       OPT_CONFIG_XMLRPC_ADDRESS, OPT_CONFIG_XMLRPC_PORT, | ||||
| 	       OPT_CONFIG_XMLRPC_ALLOW, OPT_CONFIG_XMLRPC_DENY, OPT_CONFIG_XMLRPC_LIST, | ||||
| #endif | ||||
|                OPT_FONT, OPT_WFALL_WIDTH, OPT_WFALL_HEIGHT, | ||||
|                OPT_FONT, OPT_WFALL_HEIGHT, OPT_WFALL_WIDTH,  | ||||
|                OPT_WINDOW_WIDTH, OPT_WINDOW_HEIGHT,  | ||||
|                OPT_TOGGLE_CHECK, | ||||
| #if USE_PORTAUDIO | ||||
|  | @ -551,11 +551,13 @@ int parse_args(int argc, char **argv, int& idx) | |||
| 			break; | ||||
| 
 | ||||
| 		case OPT_WFALL_WIDTH: | ||||
| 			IMAGE_WIDTH = strtol(optarg, NULL, 10); | ||||
| 			progdefaults.wfwidth = strtol(optarg, NULL, 10); | ||||
| //			IMAGE_WIDTH = strtol(optarg, NULL, 10);
 | ||||
| 			break; | ||||
| 
 | ||||
| 		case OPT_WFALL_HEIGHT: | ||||
| 			Hwfall = strtol(optarg, NULL, 10); | ||||
| 			progdefaults.wfheight = strtol(optarg, NULL, 10); | ||||
| //			Hwfall = strtol(optarg, NULL, 10);
 | ||||
| 			break; | ||||
| 
 | ||||
| 		case OPT_WINDOW_WIDTH: | ||||
|  |  | |||
|  | @ -167,14 +167,8 @@ public: | |||
| // 2) Define progdefaults, the configuration struct that is initialised with
 | ||||
| //    fldigi's default options
 | ||||
| #define ELEM_PROGDEFAULTS(type_, var_, tag_, ...) __VA_ARGS__, | ||||
| // 3) Define an array of tag element pointers, used to write progdefaults
 | ||||
| #define ELEM_TAG_ARRAY(type_, var_, tag_, ...) new tag_elem<type_>(tag_, progdefaults.var_), | ||||
| // 4) Populate a map with TAG-NAME -> TAG-ELEMENT-POINTER pairs, used
 | ||||
| //    to read progdefaults.  We'll define that map right here:
 | ||||
| typedef map<string, tag_base*> tag_map_t; | ||||
| tag_map_t tag_map; | ||||
| #define ELEM_TAG_MAP(type_, var_, tag_, ...) tag_map[tag_] = new tag_elem<type_>(tag_, progdefaults.var_); | ||||
| 
 | ||||
| // 3) Define an array of tag element pointers
 | ||||
| #define ELEM_TAG_ARRAY(type_, var_, tag_, ...) (*tag_ ? new tag_elem<type_>(tag_, progdefaults.var_) : 0), | ||||
| 
 | ||||
| // First define the default config
 | ||||
| #undef ELEM_ | ||||
|  | @ -205,9 +199,10 @@ void configuration::writeDefaultsXML() | |||
| 	// write all variables with non-empty tags to f
 | ||||
| 	f << "<FLDIGI_DEFS>\n"; | ||||
| 	for (size_t i = 0; i < sizeof(tag_list)/sizeof(*tag_list); i++) { | ||||
| 		if (likely(*tag_list[i]->tag)) | ||||
| 		if (tag_list[i]) { | ||||
| 			tag_list[i]->write(f); | ||||
| 		delete tag_list[i]; | ||||
| 			delete tag_list[i]; | ||||
| 		} | ||||
| 	} | ||||
| 	f << "</FLDIGI_DEFS>\n"; | ||||
| 	f.close(); | ||||
|  | @ -235,12 +230,16 @@ bool configuration::readDefaultsXML() | |||
| 	if (!xml) | ||||
| 		return false; | ||||
| 
 | ||||
| 	// populate the map
 | ||||
| #undef ELEM_ | ||||
| #define ELEM_ ELEM_TAG_MAP | ||||
| 	CONFIG_LIST | ||||
| 	// create a TAG_NAME -> ELEMENT map
 | ||||
| 	typedef map<string, tag_base*> tag_map_t; | ||||
| 	tag_map_t tag_map; | ||||
| 
 | ||||
| 	// parse the file until end reached
 | ||||
| 	tag_base* tag_list[] = { CONFIG_LIST }; | ||||
| 	for (size_t i = 0; i < sizeof(tag_list)/sizeof(*tag_list); i++) | ||||
| 		if (tag_list[i]) | ||||
| 			tag_map[tag_list[i]->tag] = tag_list[i]; | ||||
| 
 | ||||
| 	// parse the xml buffer
 | ||||
| 	tag_map_t::const_iterator i; | ||||
| 	while(xml->read()) { | ||||
| 		switch(xml->getNodeType()) { | ||||
|  | @ -261,10 +260,9 @@ bool configuration::readDefaultsXML() | |||
| 	} | ||||
| 
 | ||||
| 	delete xml; | ||||
| 	// delete the tag objects and empty the map
 | ||||
| 	for (i = tag_map.begin(); i != tag_map.end(); ++i) | ||||
| 		delete i->second; | ||||
| 	tag_map.clear(); | ||||
| 	// delete the tag objects
 | ||||
| 	for (size_t i = 0; i < sizeof(tag_list)/sizeof(*tag_list); i++) | ||||
| 		delete tag_list[i]; | ||||
| 
 | ||||
| 	return true; | ||||
| } | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Stelios Bounanos
						Stelios Bounanos