using System; using System.Drawing; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Data; using NodeGenerator; namespace NodesGenerator { /// /// Summary description for Form1. /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button close; private System.Windows.Forms.Button save; private System.Windows.Forms.Button save_as; private System.Windows.Forms.Button open; private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.ListBox nodes_list; private System.Windows.Forms.Button add; private System.Windows.Forms.Button delete; private System.Windows.Forms.Button generate_code; private System.Windows.Forms.Button generate_visitor_template; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Panel panel3; private System.Windows.Forms.TextBox file_name; private System.Windows.Forms.TextBox namespace_name; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Panel panel4; private System.Windows.Forms.TextBox factory_name; private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox visitor_interface_file_name; private System.Windows.Forms.Label label4; private System.Windows.Forms.SaveFileDialog saveFileDialog1; private Button generate_pcu_write_visitor; private Label label5; private TextBox pcu_writer_name; private TextBox tb_pcu_writer; private Label label6; private TextBox tb_pcu_reader; private Button generate_pcu_read_visitor; private Button edit; private Label label7; private CheckBox sorted_by_name; private Button Down; private Button Up; private ToolStripStatusLabel toolStripStatusLabel1; private StatusStrip StatusString; private ToolStripDropDownButton toolStripDropDownButton1; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.save = new System.Windows.Forms.Button(); this.close = new System.Windows.Forms.Button(); this.nodes_list = new System.Windows.Forms.ListBox(); this.save_as = new System.Windows.Forms.Button(); this.open = new System.Windows.Forms.Button(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.add = new System.Windows.Forms.Button(); this.delete = new System.Windows.Forms.Button(); this.generate_code = new System.Windows.Forms.Button(); this.generate_visitor_template = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel(); this.generate_pcu_read_visitor = new System.Windows.Forms.Button(); this.generate_pcu_write_visitor = new System.Windows.Forms.Button(); this.panel3 = new System.Windows.Forms.Panel(); this.Down = new System.Windows.Forms.Button(); this.Up = new System.Windows.Forms.Button(); this.sorted_by_name = new System.Windows.Forms.CheckBox(); this.label7 = new System.Windows.Forms.Label(); this.edit = new System.Windows.Forms.Button(); this.file_name = new System.Windows.Forms.TextBox(); this.namespace_name = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.panel4 = new System.Windows.Forms.Panel(); this.tb_pcu_reader = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); this.tb_pcu_writer = new System.Windows.Forms.TextBox(); this.label5 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.visitor_interface_file_name = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.factory_name = new System.Windows.Forms.TextBox(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.StatusString = new System.Windows.Forms.StatusStrip(); this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); this.panel1.SuspendLayout(); this.panel2.SuspendLayout(); this.panel3.SuspendLayout(); this.panel4.SuspendLayout(); this.StatusString.SuspendLayout(); this.SuspendLayout(); // // save // this.save.Location = new System.Drawing.Point(8, 40); this.save.Name = "save"; this.save.Size = new System.Drawing.Size(152, 23); this.save.TabIndex = 1; this.save.Text = "Сохранить"; this.save.Click += new System.EventHandler(this.save_Click); // // close // this.close.Location = new System.Drawing.Point(543, 328); this.close.Name = "close"; this.close.Size = new System.Drawing.Size(113, 32); this.close.TabIndex = 2; this.close.Text = "Выход"; this.close.Click += new System.EventHandler(this.close_Click); // // nodes_list // this.nodes_list.Location = new System.Drawing.Point(8, 22); this.nodes_list.Name = "nodes_list"; this.nodes_list.Size = new System.Drawing.Size(192, 316); this.nodes_list.TabIndex = 3; this.nodes_list.SelectedIndexChanged += new System.EventHandler(this.nodes_list_SelectedIndexChanged); this.nodes_list.DoubleClick += new System.EventHandler(this.edit_Click); // // save_as // this.save_as.Location = new System.Drawing.Point(8, 72); this.save_as.Name = "save_as"; this.save_as.Size = new System.Drawing.Size(152, 23); this.save_as.TabIndex = 4; this.save_as.Text = "Сохранить как"; this.save_as.Click += new System.EventHandler(this.save_as_Click); // // open // this.open.Location = new System.Drawing.Point(8, 8); this.open.Name = "open"; this.open.Size = new System.Drawing.Size(152, 23); this.open.TabIndex = 5; this.open.Text = "Открыть"; this.open.Click += new System.EventHandler(this.open_Click); // // openFileDialog1 // this.openFileDialog1.DefaultExt = "nin"; this.openFileDialog1.Filter = "Файлы синтаксического дерева (*.nin)|*.nin|Все файлы (*.*)|*.*"; // // add // this.add.Location = new System.Drawing.Point(205, 22); this.add.Name = "add"; this.add.Size = new System.Drawing.Size(97, 23); this.add.TabIndex = 6; this.add.Text = "Добавить"; this.add.Click += new System.EventHandler(this.add_Click); // // delete // this.delete.Location = new System.Drawing.Point(205, 54); this.delete.Name = "delete"; this.delete.Size = new System.Drawing.Size(97, 23); this.delete.TabIndex = 7; this.delete.Text = "Удалить"; this.delete.Click += new System.EventHandler(this.delete_Click); // // generate_code // this.generate_code.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.generate_code.Location = new System.Drawing.Point(8, 9); this.generate_code.Name = "generate_code"; this.generate_code.Size = new System.Drawing.Size(152, 30); this.generate_code.TabIndex = 8; this.generate_code.Text = "Сгенерировать код"; this.generate_code.Click += new System.EventHandler(this.generate_code_Click); // // generate_visitor_template // this.generate_visitor_template.Location = new System.Drawing.Point(8, 47); this.generate_visitor_template.Name = "generate_visitor_template"; this.generate_visitor_template.Size = new System.Drawing.Size(152, 41); this.generate_visitor_template.TabIndex = 9; this.generate_visitor_template.Text = "Генерировать шаблон визитора"; this.generate_visitor_template.Click += new System.EventHandler(this.generate_visitor_template_Click); // // panel1 // this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel1.Controls.Add(this.open); this.panel1.Controls.Add(this.save_as); this.panel1.Controls.Add(this.save); this.panel1.Location = new System.Drawing.Point(515, 213); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(167, 104); this.panel1.TabIndex = 10; // // panel2 // this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel2.Controls.Add(this.generate_pcu_read_visitor); this.panel2.Controls.Add(this.generate_pcu_write_visitor); this.panel2.Controls.Add(this.generate_code); this.panel2.Controls.Add(this.generate_visitor_template); this.panel2.Location = new System.Drawing.Point(515, 8); this.panel2.Name = "panel2"; this.panel2.Size = new System.Drawing.Size(167, 200); this.panel2.TabIndex = 11; // // generate_pcu_read_visitor // this.generate_pcu_read_visitor.Location = new System.Drawing.Point(8, 145); this.generate_pcu_read_visitor.Name = "generate_pcu_read_visitor"; this.generate_pcu_read_visitor.Size = new System.Drawing.Size(152, 43); this.generate_pcu_read_visitor.TabIndex = 11; this.generate_pcu_read_visitor.Text = "Генерировать pcu-десериализатор"; this.generate_pcu_read_visitor.UseVisualStyleBackColor = true; this.generate_pcu_read_visitor.Click += new System.EventHandler(this.generate_pcu_read_visitor_Click); // // generate_pcu_write_visitor // this.generate_pcu_write_visitor.Location = new System.Drawing.Point(8, 95); this.generate_pcu_write_visitor.Name = "generate_pcu_write_visitor"; this.generate_pcu_write_visitor.Size = new System.Drawing.Size(152, 42); this.generate_pcu_write_visitor.TabIndex = 10; this.generate_pcu_write_visitor.Text = "Генерировать pcu-сериализатор"; this.generate_pcu_write_visitor.UseVisualStyleBackColor = true; this.generate_pcu_write_visitor.Click += new System.EventHandler(this.generate_pcu_write_visitor_Click); // // panel3 // this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel3.Controls.Add(this.Down); this.panel3.Controls.Add(this.Up); this.panel3.Controls.Add(this.sorted_by_name); this.panel3.Controls.Add(this.label7); this.panel3.Controls.Add(this.edit); this.panel3.Controls.Add(this.nodes_list); this.panel3.Controls.Add(this.add); this.panel3.Controls.Add(this.delete); this.panel3.Location = new System.Drawing.Point(8, 8); this.panel3.Name = "panel3"; this.panel3.Size = new System.Drawing.Size(309, 352); this.panel3.TabIndex = 12; // // Down // this.Down.Location = new System.Drawing.Point(205, 196); this.Down.Name = "Down"; this.Down.Size = new System.Drawing.Size(97, 23); this.Down.TabIndex = 19; this.Down.Text = "Вниз"; this.Down.UseVisualStyleBackColor = true; this.Down.Click += new System.EventHandler(this.Down_Click); // // Up // this.Up.Location = new System.Drawing.Point(205, 163); this.Up.Name = "Up"; this.Up.Size = new System.Drawing.Size(97, 23); this.Up.TabIndex = 18; this.Up.Text = "Вверх"; this.Up.UseVisualStyleBackColor = true; this.Up.Click += new System.EventHandler(this.Up_Click); // // sorted_by_name // this.sorted_by_name.AutoSize = true; this.sorted_by_name.Location = new System.Drawing.Point(211, 129); this.sorted_by_name.Name = "sorted_by_name"; this.sorted_by_name.Size = new System.Drawing.Size(86, 17); this.sorted_by_name.TabIndex = 17; this.sorted_by_name.Text = "Сортировка"; this.sorted_by_name.UseVisualStyleBackColor = true; this.sorted_by_name.CheckStateChanged += new System.EventHandler(this.sorted_by_name_CheckStateChanged); // // label7 // this.label7.Location = new System.Drawing.Point(10, 5); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(175, 17); this.label7.TabIndex = 16; this.label7.Text = "Узлы синтаксического дерева"; // // edit // this.edit.Location = new System.Drawing.Point(205, 87); this.edit.Name = "edit"; this.edit.Size = new System.Drawing.Size(97, 23); this.edit.TabIndex = 8; this.edit.Text = "Редактировать"; this.edit.Click += new System.EventHandler(this.edit_Click); // // file_name // this.file_name.Location = new System.Drawing.Point(8, 24); this.file_name.Name = "file_name"; this.file_name.Size = new System.Drawing.Size(168, 20); this.file_name.TabIndex = 13; // // namespace_name // this.namespace_name.Location = new System.Drawing.Point(8, 72); this.namespace_name.Name = "namespace_name"; this.namespace_name.Size = new System.Drawing.Size(168, 20); this.namespace_name.TabIndex = 14; // // label1 // this.label1.Location = new System.Drawing.Point(8, 8); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(175, 16); this.label1.TabIndex = 15; this.label1.Text = "Имя файла синтаксич. дерева"; // // label2 // this.label2.Location = new System.Drawing.Point(8, 56); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(160, 16); this.label2.TabIndex = 16; this.label2.Text = "Пространство имен"; // // panel4 // this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel4.Controls.Add(this.tb_pcu_reader); this.panel4.Controls.Add(this.label6); this.panel4.Controls.Add(this.tb_pcu_writer); this.panel4.Controls.Add(this.label5); this.panel4.Controls.Add(this.label4); this.panel4.Controls.Add(this.visitor_interface_file_name); this.panel4.Controls.Add(this.label3); this.panel4.Controls.Add(this.factory_name); this.panel4.Controls.Add(this.label1); this.panel4.Controls.Add(this.namespace_name); this.panel4.Controls.Add(this.file_name); this.panel4.Controls.Add(this.label2); this.panel4.Location = new System.Drawing.Point(322, 8); this.panel4.Name = "panel4"; this.panel4.Size = new System.Drawing.Size(185, 309); this.panel4.TabIndex = 17; // // tb_pcu_reader // this.tb_pcu_reader.Location = new System.Drawing.Point(8, 271); this.tb_pcu_reader.Name = "tb_pcu_reader"; this.tb_pcu_reader.Size = new System.Drawing.Size(168, 20); this.tb_pcu_reader.TabIndex = 25; this.tb_pcu_reader.Text = "SyntaxTreeStreamReader"; // // label6 // this.label6.AutoSize = true; this.label6.Location = new System.Drawing.Point(8, 254); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(148, 13); this.label6.TabIndex = 24; this.label6.Text = "Имя pcu - десериализатора"; // // tb_pcu_writer // this.tb_pcu_writer.Location = new System.Drawing.Point(8, 219); this.tb_pcu_writer.Name = "tb_pcu_writer"; this.tb_pcu_writer.Size = new System.Drawing.Size(168, 20); this.tb_pcu_writer.TabIndex = 23; this.tb_pcu_writer.Text = "SyntaxTreeStreamWriter"; // // label5 // this.label5.Location = new System.Drawing.Point(8, 200); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(160, 16); this.label5.TabIndex = 22; this.label5.Text = "Имя pcu - сериализатора"; // // label4 // this.label4.Location = new System.Drawing.Point(8, 104); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(175, 16); this.label4.TabIndex = 20; this.label4.Text = "Имя файла интерф. визитора"; // // visitor_interface_file_name // this.visitor_interface_file_name.Location = new System.Drawing.Point(8, 120); this.visitor_interface_file_name.Name = "visitor_interface_file_name"; this.visitor_interface_file_name.Size = new System.Drawing.Size(168, 20); this.visitor_interface_file_name.TabIndex = 19; // // label3 // this.label3.Location = new System.Drawing.Point(8, 152); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(104, 16); this.label3.TabIndex = 18; this.label3.Text = "Имя фабрики"; // // factory_name // this.factory_name.Location = new System.Drawing.Point(8, 168); this.factory_name.Name = "factory_name"; this.factory_name.Size = new System.Drawing.Size(168, 20); this.factory_name.TabIndex = 17; // // saveFileDialog1 // this.saveFileDialog1.DefaultExt = "nin"; this.saveFileDialog1.Filter = "Файлы синтаксического дерева (*.nin)|*.nin|Все файлы (*.*)|*.*"; // // toolStripStatusLabel1 // this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 17); // // StatusString // this.StatusString.Font = new System.Drawing.Font("Tahoma", 7.400001F); this.StatusString.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripDropDownButton1, this.toolStripStatusLabel1}); this.StatusString.Location = new System.Drawing.Point(0, 423); this.StatusString.Name = "StatusString"; this.StatusString.Size = new System.Drawing.Size(833, 22); this.StatusString.TabIndex = 18; this.StatusString.Text = "statusStrip1"; // // toolStripDropDownButton1 // this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image"))); this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; this.toolStripDropDownButton1.Size = new System.Drawing.Size(29, 20); this.toolStripDropDownButton1.Text = "toolStripDropDownButton1"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(833, 445); this.Controls.Add(this.StatusString); this.Controls.Add(this.panel4); this.Controls.Add(this.panel3); this.Controls.Add(this.panel2); this.Controls.Add(this.panel1); this.Controls.Add(this.close); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.MaximizeBox = false; this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "PascalABC.NET: syntax tree generator v1.5(с) Водолазов Н., Ткачук А.В., Иванов С" + ".О., 2007-10 "; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed); this.Load += new System.EventHandler(this.Form1_Load); this.panel1.ResumeLayout(false); this.panel2.ResumeLayout(false); this.panel3.ResumeLayout(false); this.panel3.PerformLayout(); this.panel4.ResumeLayout(false); this.panel4.PerformLayout(); this.StatusString.ResumeLayout(false); this.StatusString.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.Run(new Form1()); } private NodeGenerator.NodeGenerator node_gen=new NodeGenerator.NodeGenerator(); /*private void button1_Click(object sender, System.EventArgs e) { NodeGenerator.NodeGenerator ng=new NodeGenerator.NodeGenerator(); ng.factory_name="nodes_factory"; ng.file_name="f1.cs"; ng.namespace_name="fnm"; ng.visitor_interface_file_name="vis.cs"; node_info nb=new node_info(); nb.node_name="base_node"; node_info n1=new node_info(); n1.node_name="if_node"; n1.base_class=nb; node_info n2=new node_info(); n2.node_name="condition"; n2.base_class=nb; node_info n3=new node_info(); n3.node_name="body"; n3.base_class=n2; node_field_info nf11=new node_field_info(); nf11.field_name="first"; nf11.field_type=n2; n1.add_subnode(nf11); node_field_info nf12=new node_field_info(); nf12.field_name="second"; nf12.field_type=n3; n1.add_subnode(nf12); node_field_info nf21=new node_field_info(); nf21.field_name="third"; nf21.field_type=n1; n2.add_subnode(nf21); ng.add_node(nb); ng.add_node(n1); ng.add_node(n2); ng.add_node(n3); ng.generate_code(); ng.generate_visitor_interface_code(); ng.generate_visitor_template("vis1","vis_templ.cs"); }*/ private void close_Click(object sender, System.EventArgs e) { this.Close(); } private void set_nodes_information() // set - установить поля интерфейса по node_gen { if (node_gen==null) { node_gen=new NodeGenerator.NodeGenerator(); } /*foreach (var x in node_gen.all_nodes) if ((x as node_info)._methods == null) (x as node_info)._methods = new ArrayList(); */ nodes_list.Items.Clear(); nodes_list.Items.AddRange(node_gen.all_nodes.ToArray()); file_name.Text=node_gen.file_name; namespace_name.Text=node_gen.namespace_name; factory_name.Text=node_gen.factory_name; visitor_interface_file_name.Text=node_gen.visitor_interface_file_name; } private void get_nodes_information() // get - получить информацию из полей интерфейса и записать ее в node_gen { if (node_gen==null) { node_gen=new NodeGenerator.NodeGenerator(); } node_gen.set_nodes(nodes_list.Items); node_gen.file_name=file_name.Text; node_gen.namespace_name=namespace_name.Text; node_gen.factory_name=factory_name.Text; node_gen.visitor_interface_file_name=visitor_interface_file_name.Text; node_gen.pcu_writer_file_name = tb_pcu_writer.Text + ".cs"; node_gen.pcu_writer_name = tb_pcu_writer.Text; node_gen.pcu_reader_file_name = tb_pcu_reader.Text + ".cs"; node_gen.pcu_reader_file_name_h = tb_pcu_reader.Text + ".h"; node_gen.pcu_reader_file_name_cpp = tb_pcu_reader.Text + ".cpp"; node_gen.pcu_reader_name = tb_pcu_reader.Text; } private void open_Click(object sender, System.EventArgs e) { if (openFileDialog1.ShowDialog()==DialogResult.OK) { saveFileDialog1.FileName=openFileDialog1.FileName; node_gen=NodeGenerator.NodeGenerator.deserialize(openFileDialog1.FileName); if (node_gen==null) { MessageBox.Show("Can not read nodes information from: "+openFileDialog1.FileName); } else { set_nodes_information(); } } } private void Form1_Load(object sender, System.EventArgs e) { try { var s = System.IO.Directory.GetCurrentDirectory()+@"\tree.nin"; saveFileDialog1.FileName = s; node_gen = NodeGenerator.NodeGenerator.deserialize(s); set_nodes_information(); nodes_list.SelectedIndex = 0; } catch(Exception) { MessageBox.Show("Не могу прочитать файл tree.nin"); } } private bool updated=false; /// /// Обновить информацию в node_gen - генераторе узлов /// private void update() // получить информацию из полей интерфейса в node_gen // то есть сделать update для node_gen { updated=true; get_nodes_information(); } private void save_Click(object sender, System.EventArgs e) { sorted_by_name.Checked = false; update(); if ((saveFileDialog1.FileName!=null)&&(saveFileDialog1.FileName!="")) { node_gen.serialize(saveFileDialog1.FileName); } else { save_as_Click(this,e); } } private void save_as_Click(object sender, System.EventArgs e) { sorted_by_name.Checked = false; update(); if (saveFileDialog1.ShowDialog()==DialogResult.OK) { node_gen.serialize(saveFileDialog1.FileName); } } private void delete_item() { int t=nodes_list.SelectedIndex; if (t<0) { return; } nodes_list.Items.RemoveAt(t); } private void generate_code_Click(object sender, System.EventArgs e) { sorted_by_name.Checked = false; get_nodes_information(); node_gen.generate_code(); //node_gen.generate_nodes_fabric("tree_fabric","tree_fabric.cs"); } private void generate_visitor_template_Click(object sender, System.EventArgs e) { get_nodes_information(); template_form.generate(node_gen); } private void add_Click(object sender, System.EventArgs e) { node_info ni=node_def.show_modal(null,node_gen); if (ni!=null) { nodes_list.Items.Add(ni); } update(); } private void delete_Click(object sender, System.EventArgs e) { delete_item(); update(); } private void generate_pcu_write_visitor_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_pcu_writer_code(false); } private void generate_pcu_read_visitor_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_pcu_reader_code(); } private void generate_cpp_code_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_cpp_code(); } private void button2_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_pcu_writer_code(true); } private void generate_cross_platform_reader_cpp_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_stream_reader_cpp(); } private void generate_visualizator_cpp_Click(object sender, EventArgs e) { get_nodes_information(); node_gen.generate_vizualizator_cpp(); } public void SortNodes() { string txt = null; var item = nodes_list.SelectedItem; if (item != null) txt = item.ToString(); node_gen.SortNodes(); nodes_list.Items.Clear(); nodes_list.Items.AddRange(node_gen.all_nodes.ToArray()); if (item != null) { int ind = nodes_list.FindString(txt); nodes_list.SelectedIndex = ind; } } public void UnsortNodes() { string txt = null; var item = nodes_list.SelectedItem; if (item != null) txt = item.ToString(); node_gen.UnsortNodes(); nodes_list.Items.Clear(); nodes_list.Items.AddRange(node_gen.all_nodes.ToArray()); if (item != null) { int ind = nodes_list.FindString(txt); nodes_list.SelectedIndex = ind; } } private void sorted_by_name_CheckStateChanged(object sender, EventArgs e) { if (sorted_by_name.Checked) SortNodes(); else UnsortNodes(); } private void nodes_list_SelectedIndexChanged(object sender, EventArgs e) { if (nodes_list.SelectedIndex < 0) return; node_info ni = (node_info)node_gen.all_nodes[nodes_list.SelectedIndex]; var DropDownNodes = (StatusString.Items[0] as ToolStripDropDownButton).DropDownItems; DropDownNodes.Clear(); var l = new List(); var s = ni.node_name; while (ni.base_class != null) { ni = ni.base_class; s += " -> " + ni.node_name; l.Add(ni.node_name); } for (int i = l.Count - 1; i >= 0; i--) { DropDownNodes.Add(l[i]); DropDownNodes[DropDownNodes.Count-1].Click += ItemsClick; } const int n = 120; if (s.Length > n) s = s.Substring(0, n) + " ..."; StatusString.Items[1].Text = s; } private void ItemsClick(object sender, EventArgs e) { var text = (sender as ToolStripMenuItem).Text; int ind = nodes_list.FindString(text); if (ind >= 0) nodes_list.SelectedIndex = ind; } private void edit_Click(object sender, EventArgs e) { int t = nodes_list.SelectedIndex; if (t >= 0) { node_def.show_modal((nodes_list.Items[t] as node_info), node_gen); update(); } } private void Up_Click(object sender, EventArgs e) { int t = nodes_list.SelectedIndex; if (t < 1) { return; } var item = nodes_list.Items[t]; nodes_list.Items.RemoveAt(t); nodes_list.Items.Insert(t - 1, item); nodes_list.SelectedIndex = t - 1; update(); nodes_list_SelectedIndexChanged(sender, e); } private void Down_Click(object sender, EventArgs e) { int t = nodes_list.SelectedIndex; if (t < 0 || t > nodes_list.Items.Count - 2) { return; } var item = nodes_list.Items[t]; nodes_list.Items.RemoveAt(t); nodes_list.Items.Insert(t + 1, item); nodes_list.SelectedIndex = t + 1; update(); nodes_list_SelectedIndexChanged(sender, e); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { save_Click(sender, e); } } }