void MakeNewPacket(String groupName) { CPacketStruct cp = new CPacketStruct(); InputForm input = new InputForm(); DialogResult result = input.ShowDialog("New Packet Name"); if (result == DialogResult.Abort || result == DialogResult.Cancel || input.InputText.Trim().Length == 0) { return; } String newPacketPath = _groupsDir + "\\" + groupName + "\\" + input.InputText; if (Directory.Exists(newPacketPath)) { MessageBox.Show("중복되는 이름이 있습니다."); return; } String msgFile = newPacketPath + "\\Msg.text"; DlgMsgMaker msgMaker = new DlgMsgMaker(cp, msgFile, getActivatedPeer().Endian == Endians.Big); msgMaker.Location = this.Location; msgMaker.ShowDialog(); TR_Groups.AddChild(_groupsRoot.Nodes[groupName], input.InputText); getActivatedPeer().InitList(); //if (_activatedPeerNode != null) _activatedPeerNode.InitList(); //_activatedMsgList.initList(); }
public DlgDefineStruct(CPacketStruct ns, String saveFile, bool swapWhenMakePacket) { InitializeComponent(); if (saveFile != null) { _saveFile = saveFile; } this._ns = ns; _swapWhenMakePacket = swapWhenMakePacket; if (ns.NativeText != null && ns.NativeText.Length > 0) { T_Struct.Text = ns.NativeText; } else { try { if (File.Exists(_saveFile)) { T_Struct.Text = File.ReadAllText(_saveFile); } } catch { } } }
void V_Data_E_CheckBoxChanged(object sender, FormAdders.CellCheckedEventArgs e) { for (int i = e.StartRowIndex; i <= e.EndRowIndex; i++) { String state = _packetDir + "\\" + (V_Data.Rows[i][Titles.name].Value as String) + "\\States.txt"; if (e.Checked == true) { if (V_Data.Rows[i].RowBackMode == RowBackModes.Red) { _startIndex = -1; } V_Data.Rows[i].RowBackMode = RowBackModes.Gray; File.WriteAllText(state, "check=y"); } else { V_Data.Rows[i].RowBackMode = RowBackModes.None; File.WriteAllText(state, "check=n"); } //int itemIndex = (int)V_Contents.Rows[i].RelativeObject[rowInfos.itemIndex.ToString()]; //int valueIndex = (int)V_Contents.Rows[i].RelativeObject[rowInfos.valueIndex.ToString()]; CPacketStruct parser = V_Data.Rows[i].RelativeObject[rowInfos.parser.ToString()] as CPacketStruct; parser.Infos.Checked = (V_Data.Rows[i].Cells[0].Value.Equals(1)); //String name = V_Data.RelativeObject["name"] as String; //_modifiedItems[name] = parser; } }
void V_Data_E_CellClicked(object sender, FormAdders.EasyGridViewCollections.CellClickEventArgs e) { if (e.RowIndex < 0 || e.ColIndex < 0) { return; } String packetName = (V_Data.GetCell(e.RowIndex, 1).Value as String); if (e.ColIndex == (int)Titles.edit_button) //edit msg { CPacketStruct cp = V_Data.RowRelativeObject(e.RowIndex)["parser"] as CPacketStruct; cp.MakeMsgText(); //cp.MakeMsg(); String msgFile = _packetDir + "\\" + packetName + "\\Msg.txt"; DlgMsgMaker msgMaker = new DlgMsgMaker(cp, msgFile, _endian == Endians.Big); msgMaker.Location = this.Location; msgMaker.ShowDialog(); cp.MakePacket(_endian == Endians.Big); //cp.MakeMsg();//다시 메시지를 만들어준다. } else if (e.ColIndex == (int)Titles.send) //send msg { CPacketStruct cp = V_Data.RowRelativeObject(e.RowIndex)["parser"] as CPacketStruct; cp.MakePacket(_endian == Endians.Big); _sendFunc(cp.PacketBuffer, 0, cp.PacketDataSize, cp); ReleaseSelections(); V_Data.Rows[e.RowIndex].RowBackMode = FormAdders.EasyGridViewCollections.RowBackModes.Red; } else//내용보기 { V_Contents.RelativeObject["name"] = packetName; CPacketStruct cp = V_Data.RowRelativeObject(e.RowIndex)["parser"] as CPacketStruct; viewContent(cp); } }
void V_Contents_E_TextChanged(object sender, CellTextChangedEventArgs e) { int itemIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.itemIndex.ToString()]; int valueIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.valueIndex.ToString()]; CPacketStruct parser = V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.parser.ToString()] as CPacketStruct; switch ((contentTitles)e.ColIndex) { case contentTitles.name: if (e.Text.Length == 0) //아무것도 넣지않으면 자동으로 복귀 { e.IsCancel = true; return; } else if (Char.IsDigit(e.Text[0])) { MessageBox.Show("변수명의 처음은 문자로 시작해야 합니다."); e.IsCancel = true; return; } else { for (int i = 0; i < e.Text.Length; i++) { if (Char.IsLetterOrDigit(e.Text, i) == false) { MessageBox.Show("변수명에는 문자와 숫자만 들어갈 수 있습니다."); e.IsCancel = true; return; } } for (int i = 0; i < parser.Items.Count; i++) { if (parser.Items[i].Name.Equals(e.Text)) { MessageBox.Show("같은 이름이 존재합니다."); e.IsCancel = true; return; } } } parser.Items[itemIndex].Name = e.Text; if (parser.Items[itemIndex].InitValues.Length > 1) //배열일 때, { viewContent(parser); //목록을 다시 만듬. } break; case contentTitles.value: parser.Items[itemIndex].InitValues[valueIndex] = e.Text; break; } parser.MakePacket(_endian == Endians.Big); parser.MakeMsgText(); String name = V_Contents.RelativeObject["name"] as String; _modifiedItems[name] = parser; }
void V_Contents_E_ComboBoxChanged(object sender, CellComboBoxEventArgs e) { int itemIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.itemIndex.ToString()]; int valueIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.valueIndex.ToString()]; CPacketStruct parser = V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.parser.ToString()] as CPacketStruct; switch ((contentTitles)e.ColIndex) { case contentTitles.swap: parser.Items[itemIndex].IsSwap = (_swapYn[e.SelectedIndex].Equals("y")); break; case contentTitles.type: //parser.Items[itemIndex].TypeString = _types[e.SelectedIndex]; parser.Items[itemIndex].SetType(_types[e.SelectedIndex], true); break; } try { parser.MakePacket(_endian == Endians.Big); parser.MakeMsgText(); String name = V_Contents.RelativeObject["name"] as String; _modifiedItems[name] = parser; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public DlgViewStruct(CPacketStruct ns, IDictionary <String, String[]> dic, List <String[]> arrs) { InitializeComponent(); _ns = ns; this._dic = dic; this._arrs = arrs; makeTree(); }
public DlgMsgMaker(CPacketStruct ns, String saveFile, bool swapWhenMakePacket) : base() { InitializeComponent(); T_Comment.Text = ns.Infos.Comment; String dir = saveFile.Substring(0, saveFile.LastIndexOf("\\")); if (Directory.Exists(dir) == false) { Directory.CreateDirectory(dir); } _xmlFile = saveFile.Substring(0, saveFile.LastIndexOf("\\") + 1) + "msg.xml"; _saveFile = saveFile; _swapWhenMakePacket = swapWhenMakePacket; _ns = ns; if (ns == null) { if (File.Exists(_xmlFile)) { //List<CStructItem> items = CustomParser.XMLParser.FromXml(_xmlFile); T_Msg.Text = StructXMLParser.XmlToCode(_xmlFile); } else if (File.Exists(_saveFile)) { T_Msg.Text = File.ReadAllText(_saveFile); } } else { T_Msg.Text = ns.NativeText; } B_Help.Click += new EventHandler(B_Help_Click); /* * if (ns.nativeText != null && ns.nativeText.Length > 0) * { * T_Msg.Text = ns.nativeText; * } * else * { * try * { * if (File.Exists(_xmlFile)) * { * //List<CStructItem> items = CustomParser.XMLParser.FromXml(_xmlFile); * T_Msg.Text = XMLParser.ToCode(_xmlFile); * } * else if (File.Exists(_saveFile)) * { * T_Msg.Text = File.ReadAllText(_saveFile); * } * } * catch { } * } */ }
void B_Save_Click(object sender, EventArgs e) { for (int i = 0; i < _modifiedItems.Count; i++) { CPacketStruct item = _modifiedItems.Values.ElementAt(i); String name = _modifiedItems.Keys.ElementAt(i); StructXMLParser.ItemsToXml(item.Items, _packetDir + "\\" + name + "\\Msg.xml", item.Infos); } _modifiedItems.Clear(); P_Table.RowStyles[3] = new RowStyle(System.Windows.Forms.SizeType.Absolute, 0); P_Table.RowStyles[3] = new RowStyle(System.Windows.Forms.SizeType.Absolute, 25); }
void V_Data_E_ContextMenuClicked(object sender, FormAdders.EasyGridViewCollections.EasyGridMenuClickArgs args) { switch (args.Text) { case "SetAsStartPoint": if (SetAsStartPoint(args.RowIndex) == false) { MessageBox.Show("비활성된 라인입니다. 체크를 풀어주세요."); } break; case "Copy This": { String name = V_Data.GetValue(args.RowIndex, (int)Titles.name) as String; String msg = V_Data.RowRelativeObject(args.RowIndex)["msg"] as String; CPacketStruct parser = V_Data.Rows[args.RowIndex].RelativeObject["parser"] as CPacketStruct; AddNewItem(parser, name); //initList(); } break; case "Delete Lines": if (V_Data.SelectedRows.Count > 0) { List <EasyGridRow> rows = new List <EasyGridRow>(V_Data.SelectedRows); foreach (EasyGridRow row in rows) { DeleteLine(row.Index); } foreach (EasyGridRow row in rows) { V_Data.RemoveARow(row, false); } V_Data.RefreshList(); saveNameList(); } break; case "Make New Msg": { InputForm input = new InputForm(); DialogResult result = input.ShowDialog("새 메시지 이름"); if (result == DialogResult.Cancel || result == DialogResult.Abort) { return; } AddNewItem(null, input.InputText); } break; } }
public void RunSelected() { if (_startIndex < 0) { MessageBox.Show("StartLine을 지정해 주십시오. 마우스 오른쪽 버튼을 이용하십시오."); return; } CPacketStruct cp = GetStructParser(_startIndex); if (_sendFunc == null) { return; } _sendFunc(cp.PacketBuffer, 0, cp.PacketDataSize, cp.SimpleText); }
public void makeTree(CPacketStruct ns = null, IDictionary <String, String[]> dic = null, List <String[]> arrs = null) { if (ns == null) { ns = _ns; } if (dic == null) { dic = _dic; } if (arrs == null) { arrs = _arrs; } Tr_Struct.Nodes.Clear(); String arrStr; for (int i = 0; i < ns.Count; i++) { if (ns.Items[i].size == 1) { Tr_Struct.Nodes.Add(ns.Items[i].Name, ns.Items[i].Name + ":" + ns.Items[i].TypeString + "(" + _dic[ns.Items[i].Name][0] + ")"); } else { Tr_Struct.Nodes.Add(ns.Items[i].Name, ""); arrStr = "{"; for (int j = 0; j < ns.Items[i].size; j++) { if (j != 0) { arrStr += ","; } arrStr += _dic[ns.Items[i].Name][j]; Tr_Struct.Nodes[ns.Items[i].Name].Nodes.Add(ns.Items[i].Name + "[" + j + "]", "[" + j + "] : " + _dic[ns.Items[i].Name][j]); } arrStr += "}"; Tr_Struct.Nodes[ns.Items[i].Name].Text = ns.Items[i].Name + ":" + ns.Items[i].TypeString + "[" + ns.Items[i].size + "]" + arrStr; } } }
public void RunSelected() { if (V_Data.SelectedItems.Count == 0) { MessageBox.Show("StartLine을 지정해 주십시오. 마우스 오른쪽 버튼을 이용하십시오."); return; } CPacketStruct cp = GetStructParser(V_Data.SelectedItems[0].Index); if (cp.IsDynamicPacket) { cp.MakePacket(_endian == Endians.Big); } if (_sendFunc == null) { return; } _sendFunc(cp.PacketBuffer, 0, cp.PacketDataSize, cp); }
void V_Data_E_CellClicked(object sender, FormAdders.EasyGridViewCollections.CellClickEventArgs e) { if (e.ColIndex == (int)Titles.edit_button) //edit msg { CPacketStruct cp = V_Data.RowRelativeObject(e.RowIndex)["parser"] as CPacketStruct; cp.MakeMsgText(); String msgFile = _packetDir + "\\" + (V_Data.GetCell(e.RowIndex, 1).Value as String) + "\\Msg.txt"; DlgMsgMaker msgMaker = new DlgMsgMaker(cp, msgFile, _endian == Endians.Big); msgMaker.Location = this.Location; msgMaker.ShowDialog(); } else if (e.ColIndex == (int)Titles.send) //send msg { CPacketStruct cp = V_Data.RowRelativeObject(e.RowIndex)["parser"] as CPacketStruct; cp.MakePacket(_endian == Endians.Big); _sendFunc(cp.PacketBuffer, 0, cp.PacketDataSize, cp.SimpleText); ReleaseSelections(); V_Data.Rows[e.RowIndex].RowBackMode = FormAdders.EasyGridViewCollections.RowBackModes.Red; } }
void V_Data_E_TextChanged(object sender, FormAdders.CellTextChangedEventArgs e) { if (e.ColIndex == (int)Titles.name)//name change { if (Directory.Exists(_packetDir + "\\" + e.Text)) { MessageBox.Show("이미 같은 이름을 가진 메시지가 존재합니다. 다른이름으로 해 주세요."); e.IsCancel = true; return; } try { Directory.Move(_packetDir + "\\" + e.BeforeText, _packetDir + "\\" + e.Text); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.ToString()); e.IsCancel = true; return; } if (_modifiedItems.ContainsKey(e.BeforeText)) { _modifiedItems.Add(e.Text, _modifiedItems[e.BeforeText]); _modifiedItems.Remove(e.BeforeText); } } else if (e.ColIndex == (int)Titles.comment)//comment change { String commentFile = _packetDir + "\\" + (V_Data.GetCell(e.RowIndex, 1).Value as String) + "\\Comment.txt"; File.WriteAllText(commentFile, e.Text); int itemIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.itemIndex.ToString()]; int valueIndex = (int)V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.valueIndex.ToString()]; CPacketStruct parser = V_Contents.Rows[e.RowIndex].RelativeObject[rowInfos.parser.ToString()] as CPacketStruct; parser.Infos.Comment = e.Text; String name = (V_Data.GetCell(e.RowIndex, 1).Value as String); _modifiedItems[name] = parser; } //saveNameList(); }
void viewContent(CPacketStruct cp) { _selectedParser = cp; V_Contents.ClearData(); V_Contents.RefreshList(); for (int i = 0; i < cp.Count; i++) { for (int v = 0; v < cp.Items[i].InitValues.Length; v++) { Dictionary <String, object> infos = new Dictionary <string, object>(); infos[rowInfos.itemIndex.ToString()] = i; infos[rowInfos.valueIndex.ToString()] = v; infos[rowInfos.parser.ToString()] = cp; String name = cp.Items[i].Name; if (cp.Items[i].InitValues.Length > 1) { name += "[" + v + "]"; } V_Contents.AddARow(infos, new object[] { name.Trim(), _types.ToList().IndexOf(cp.Items[i].TypeString), cp.Items[i].InitValues[v].Trim(), _swapYn.ToList().IndexOf((cp.Items[i].IsSwap)?"y" : "n") }); } } float height = V_Contents.Rows.Count * V_Contents.BaseRowHeight + V_Contents.ColumnHeaderHeight + 5;// if (height > 500) { height = 500f; } if (height < 200) { height = 200f; } P_Table.RowStyles[1] = new RowStyle(System.Windows.Forms.SizeType.Absolute, 15);//hide button P_Table.RowStyles[2] = new RowStyle(System.Windows.Forms.SizeType.Absolute, height); }
public void initList() { V_Data.ClearData(); //if (packetDir != null) _packetDir = packetDir; if (_packetDir == null) { return; } String listDir = _packetDir;// = _baseDir+"\\PacketList"; String orderFile = _packetDir + "\\ListOrder.txt"; makeNewOrderIfNotExists(); List <String> listOrder = new List <string>(); #region 순서를 가져옴 StreamReader sr = new StreamReader(File.OpenRead(orderFile)); String line; //String rootDir = Directory.GetCurrentDirectory() + "\\"; while ((line = sr.ReadLine()) != null) { if (line.Trim().Length > 0) { listOrder.Add(line); //if (line.IndexOf(rootDir) == 0) listOrder.Add(line); //else listOrder.Add(rootDir + line); } } sr.Close(); #endregion String[] dirs = Directory.GetDirectories(_packetDir); for (int i = 0; i < dirs.Length; i++) { String name = dirs[i].Substring(dirs[i].LastIndexOf("\\") + 1); if (name.Equals("Backups")) { continue; //백업디렉토리는 제외.. } if (listOrder.Contains(name) == false) //만일 리스트에 없으면.. { File.Delete(orderFile); makeNewOrderIfNotExists(); listOrder.Clear(); for (int d = 0; d < dirs.Length; d++)//새로만듬.. { name = dirs[i].Substring(dirs[i].LastIndexOf("\\") + 1); if (name.Equals("Backups")) { continue; //백업디렉토리는 제외.. } listOrder.Add(name); } break; } } //if (Directory.Exists(listDir) == false) Directory.CreateDirectory(listDir); //else { //CStructParser parser;// = new CStructParser(); //foreach (String dir in Directory.GetDirectories(listDir)) foreach (String name in listOrder) { String Msg = ""; bool integrity = false; String path = _packetDir + "\\" + name; String msgXml = path + "\\Msg.xml"; String msgTxt = path + "\\Msg.txt"; CPacketStruct parser = new CPacketStruct(); IList <CPacketItem> itemsList = null; Dictionary <String, object> rels = new Dictionary <string, object>(); //try { if (File.Exists(msgXml)) { //try { itemsList = StructXMLParser.XmlToItems(msgXml, parser); Msg = StructXMLParser.ItemsToCode(itemsList); integrity = true; } //catch { /* * integrity = false; * if (File.Exists(msgTxt)) * { * Msg = File.ReadAllText(msgTxt); * } * else * { * * MessageBox.Show(msgXml + "이나 "+ msgTxt+" 가 없습니다.메시지를 다시 작성하십시오.");//필수파일 * File.WriteAllText(msgTxt, ""); * * } */ //} } else if (File.Exists(msgTxt)) { Msg = File.ReadAllText(msgTxt); } else { //MessageBox.Show(msgXml + "이나 " + msgTxt + " 가 없습니다.메시지를 다시 작성하십시오.");//필수파일 if (Directory.Exists(path)) { Directory.Delete(path, true); } //File.WriteAllText(msgTxt,""); } } //catch { // continue; } String comment = ""; if (File.Exists(path + "\\Comment.txt")) { comment = File.ReadAllText(path + "\\Comment.txt"); } Dictionary <String, String> states = new Dictionary <string, string>(); if (File.Exists(path + "\\States.txt")) { String[] lines = File.ReadAllLines(path + "\\States.txt"); for (int i = 0; i < lines.Length; i++) { String[] tokens = lines[i].Split("=;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (tokens.Length > 1) { states[tokens[0].ToLower().Trim()] = tokens[1].ToLower().Trim(); } } } bool isChecked = (states.ContainsKey("check")) ? (states["check"].Equals("y") || states["check"].Equals("true")) : false; parser.IsStringWithNullEnd = _isStringWithNullEnd; parser.Endian = _endian; parser.StringEncoding = _strEncoding; String msgName = name; //try { if (itemsList == null) { parser.MakePacket(Msg, _endian == Endians.Big); integrity = true; } else { //parser.Items.Clear(); parser.Items.CopyFrom(itemsList); //parser.Items = itemsList as List<CPacketItem>; parser.MakePacket(_endian == Endians.Big); } } //catch(Exception e) { // MessageBox.Show(msgName+":"+e.Message); integrity = true; } rels["integrity"] = integrity; rels["parser"] = parser; rels["msg"] = Msg; EasyGridRow row = V_Data.AddARow(rels, new object[] { isChecked, msgName, "edit", "send", "X", comment }); if (integrity == false) { (row[(int)Titles.name] as EasyGridTextBoxCell).FontColor = Color.Red; } if (isChecked) { row.RowBackMode = RowBackModes.Gray; } } } if (V_Data.Rows.Count > 0) { if (_startIndex < V_Data.Rows.Count) { V_Data.Rows[_startIndex].RowBackMode = FormAdders.EasyGridViewCollections.RowBackModes.Red; } //V_Data.Rows[0].RowBackCustomColor = Color.FromArgb(255, 222, 222); } V_Data.RefreshList(); }
void initList() { V_Data.ClearData(); String listDir = _packetDir = _baseDir + "\\PacketList"; String orderFile = _packetDir + "\\ListOrder.txt"; makeNewOrderIfNotExists(); List <String> listOrder = new List <string>(); #region 순서를 가져옴 StreamReader sr = new StreamReader(File.OpenRead(orderFile)); String line; String rootDir = Directory.GetCurrentDirectory() + "\\"; while ((line = sr.ReadLine()) != null) { if (line.Trim().Length > 0) { if (line.IndexOf(rootDir) == 0) { listOrder.Add(line); } else { listOrder.Add(rootDir + line); } } } sr.Close(); #endregion //if (Directory.Exists(listDir) == false) Directory.CreateDirectory(listDir); //else { CPacketStruct parser;// = new CStructParser(); //foreach (String dir in Directory.GetDirectories(listDir)) foreach (String dir in listOrder) { if (dir.Substring(dir.LastIndexOf("\\") + 1).Equals("Backups")) { continue; //백업디렉토리는 제외.. } String Msg = ""; Dictionary <String, object> rels = new Dictionary <string, object>(); try { if (File.Exists(dir + "\\Msg.txt") == false) { MessageBox.Show(dir + "\\Msg.txt 가 없습니다.메시지를 다시 작성하십시오.");//필수파일 File.WriteAllText(dir + "\\Msg.txt", ""); } else { Msg = File.ReadAllText(dir + "\\Msg.txt"); } } catch { continue; } String comment = ""; if (File.Exists(dir + "\\Comment.txt")) { comment = File.ReadAllText(dir + "\\Comment.txt"); } Dictionary <String, String> states = new Dictionary <string, string>(); if (File.Exists(dir + "\\States.txt")) { String[] lines = File.ReadAllLines(dir + "\\States.txt"); for (int i = 0; i < lines.Length; i++) { String[] tokens = lines[i].Split("=;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (tokens.Length > 1) { states[tokens[0].ToLower().Trim()] = tokens[1].ToLower().Trim(); } } } bool isChecked = (states.ContainsKey("check")) ? (states["check"].Equals("y") || states["check"].Equals("true")) : false; parser = new CPacketStruct(); parser.IsStringWithNullEnd = _isStringWithNullEnd; parser.Endian = _endian; parser.StringEncoding = _strEncoding; String msgName = dir.Substring(dir.LastIndexOf("\\") + 1); bool integrity; try { parser.MakePacket(Msg, _endian == Endians.Big); integrity = true; } catch (Exception e) { MessageBox.Show(msgName + ":" + e.Message); integrity = true; } rels["integrity"] = integrity; rels["parser"] = parser; rels["msg"] = Msg; EasyGridRow row = V_Data.AddARow(rels, new object[] { isChecked, msgName, "edit", "send", "X", comment }); if (integrity == false) { (row[(int)Titles.name] as EasyGridTextBoxCell).FontColor = Color.Red; } if (isChecked) { row.RowBackMode = RowBackModes.Gray; } } } if (V_Data.Rows.Count > 0) { V_Data.Rows[0].RowBackMode = FormAdders.EasyGridViewCollections.RowBackModes.Red; //V_Data.Rows[0].RowBackCustomColor = Color.FromArgb(255, 222, 222); } }
public void AddNewItem(CPacketStruct parserObj = null, String name = null) { #region 기존에 같은 이름이 있는지 검사후 있으면 이름 붙여줌. List <object> names = V_Data.GetAColumnData(0); name = (name == null)?"Untitled" : name; String newName = name; int count = 0; while (Directory.Exists(_packetDir + "\\" + (newName)) == true) { newName = name + (count++); } #endregion #region 새 디렉토리 만들고 Msg.txt파일 만들어 내용 넣어줌. String newDir = _packetDir + "\\" + newName; if (Directory.Exists(newDir) == false) { Directory.CreateDirectory(newDir); } if (parserObj == null) { parserObj = new CPacketStruct(); DlgMsgMaker dlg = new DlgMsgMaker(parserObj, newDir + "\\Msg.txt", _endian == Endians.Big); DialogResult result = dlg.ShowDialog(); if (result == DialogResult.Abort || result == DialogResult.Cancel) { return; } //parserObj.Items = StructXMLParser.CodeToItems(parserObj.NativeText, parserObj); StructXMLParser.ItemsToXml(parserObj.Items, newDir + "\\Msg.xml", parserObj.Infos); } else { parserObj.MakeMsgText(); CPacketStruct oldObj = parserObj; parserObj = new CPacketStruct(); parserObj.NativeText = oldObj.NativeText; //parserObj.Items = StructXMLParser.CodeToItems(oldObj.NativeText, parserObj); StructXMLParser.ItemsToXml(parserObj.Items, newDir + "\\Msg.xml", parserObj.Infos); } #endregion #region 표에 줄 삽입 Dictionary <String, object> rels = new Dictionary <string, object>(); parserObj.IsStringWithNullEnd = _isStringWithNullEnd; parserObj.Endian = _endian; parserObj.StringEncoding = _strEncoding; String msgName = newName; bool integrity; try { parserObj.MakePacket(_endian == Endians.Big); integrity = true; } catch (Exception e) { MessageBox.Show(msgName + ":" + e.Message); integrity = true; } rels["integrity"] = integrity; rels["parser"] = parserObj; rels["msg"] = parserObj.NativeText; EasyGridRow row = V_Data.AddARow(rels, new object[] { false, msgName, "edit", "send", "X", "", }); if (integrity == false) { (row[(int)Titles.name] as EasyGridTextBoxCell).FontColor = Color.Red; } #endregion V_Data.RefreshList(); saveNameList(); }
public void AddNewItem(String msgText, String name = null, bool allowSameMsg = false) { if (msgText.Trim().Length == 0) { MessageBox.Show("메시지가 비었습니다."); return; } #region 기존에 같은 이름이 있는지 검사후 있으면 이름 붙여줌. List <object> names = V_Data.GetAColumnData(0); name = (name == null)?"Untitled" : name; String newName = name; int count = 0; while (Directory.Exists(_packetDir + "\\" + (newName)) == true) { newName = name + (count++); } #endregion #region 같은 Text가 있으면 같은 라인을 선택해 줌.. 아니면 추가.. if (allowSameMsg == false) { for (int i = 0; i < V_Data.RowCount; i++) { String msg = V_Data.RowRelativeObject(i)["msg"] as String; if (msg.CompareTo(msgText) == 0) { V_Data.ReleaseSelection(); V_Data.Rows[i].Selected = true; return;///같은 item은 추가하지 않음.. } } } #endregion #region 새 디렉토리 만들고 Msg.txt파일 만들어 내용 넣어줌. String newDir = _packetDir + "\\" + newName; try { Directory.CreateDirectory(newDir); } catch //이미 있는 경우.. 그냥 지나침.. { } if (msgText == null) { msgText = ""; } File.WriteAllText(newDir + "\\Msg.txt", msgText); #endregion #region 표에 줄 삽입 CPacketStruct parser = new CPacketStruct(); Dictionary <String, object> rels = new Dictionary <string, object>(); parser.IsStringWithNullEnd = _isStringWithNullEnd; parser.Endian = _endian; parser.StringEncoding = _strEncoding; String msgName = newName; bool integrity; try { parser.MakePacket(msgText, _endian == Endians.Big); integrity = true; } catch (Exception e) { MessageBox.Show(msgName + ":" + e.Message); integrity = true; } rels["integrity"] = integrity; rels["parser"] = parser; rels["msg"] = msgText; EasyGridRow row = V_Data.AddARow(rels, new object[] { false, msgName, "edit", "send", "X", "", }); if (integrity == false) { (row[(int)Titles.name] as EasyGridTextBoxCell).FontColor = Color.Red; } if (allowSameMsg == true) { row.Selected = true; } #endregion V_Data.RefreshList(); saveNameList(); }
public DlgDefineStruct() {//don't use this constructor this._ns = new CPacketStruct(); InitializeComponent(); }