private void _replace <T>(GDbTab tab, Tuple tuple) { var aDb = tab.DbComponent.To <T>(); aDb.Table.Commands.Begin(); try { List <DbAttribute> attributes = _boxes.Where(p => p.IsChecked == true).Select(p => (DbAttribute)p.Tag).ToList(); //List<ITableCommand<T, ReadableTuple<T>>> commands = new List<ITableCommand<T, ReadableTuple<T>>>(); foreach (ReadableTuple <T> item in tab._listView.SelectedItems) { for (int index = 0; index < attributes.Count; index++) { aDb.Table.Commands.Set(item, attributes[index], tuple.GetValue(attributes[index])); } } //aDb.Table.Commands.StoreAndExecute(new GroupCommand<T, ReadableTuple<T>>(commands)); } catch { aDb.Table.Commands.CancelEdit(); } finally { aDb.Table.Commands.End(); tab.Update(); } }
private void _replace <T>(GDbTab tab, DbAttribute attribute) { var aDb = tab.DbComponent.To <T>(); try { if (attribute.DataType == typeof(bool) && attribute.DataConverter.GetType() == typeof(DefaultValueConverter)) { aDb.Table.Commands.Set(tab._listView.SelectedItems.Cast <ReadableTuple <T> >().ToList(), attribute, Boolean.Parse(_tbNewValue.Text)); } else { aDb.Table.Commands.Set(tab._listView.SelectedItems.Cast <ReadableTuple <T> >().ToList(), attribute, _tbNewValue.Text); } } finally { tab.Update(); } }
private void _buttonOk_Click(object sender, RoutedEventArgs e) { try { _mobDb.Table.Commands.Begin(); for (int i = 0; i < 6; i++) { _mobDb.Table.Commands.Set(_item, ServerMobAttributes.Str.Index + i, _results[i]); } } catch (Exception err) { _mobDb.Table.Commands.CancelEdit(); ErrorHandler.HandleException(err); } finally { _mobDb.Table.Commands.End(); //((GDbTabWrapper<int, ReadableTuple<int>>)_tab).SearchEngine.Collection.UpdateAndEnable(); _tab.Update(); } }
public string Execute(GDbTab core, string code) { MemoryStream stream = new MemoryStream(); string output = ""; _core = core; Script script = new Script(); try { TableHelper.EnableTupleTrace = true; if (_core == null) { throw new Exception("No database tab selected."); } _selected = new ObservableList <Tuple>(); foreach (var tuple in _core._listView.SelectedItems.OfType <Tuple>().OrderBy(p => p)) { _selected.Add(tuple); } _selectionChanged = false; _selected.CollectionChanged += delegate { _selectionChanged = true; }; _mEngine.Runtime.IO.SetOutput(stream, EncodingService.DisplayEncoding); _mEngine.Runtime.IO.SetErrorOutput(stream, EncodingService.DisplayEncoding); _mScope = _mEngine.CreateScope(); List <object> dbs = new List <object>(); foreach (var serverDb in ServerDbs.ListDbs) { var db = _core.DbComponent.TryGetDb(serverDb); if (db != null) { if (db.AttributeList.PrimaryAttribute.DataType == typeof(int)) { var adb = (AbstractDb <int>)db; dbs.Add(adb); TableHelper.Tables.Add(adb.Table); _mScope.SetVariable(serverDb.Filename.ToLower().Replace(" ", "_"), adb.Table); } else if (db.AttributeList.PrimaryAttribute.DataType == typeof(string)) { var adb = (AbstractDb <string>)db; dbs.Add(adb); TableHelper.Tables.Add(adb.Table); _mScope.SetVariable(serverDb.Filename.ToLower().Replace(" ", "_"), adb.Table); } } } _mScope.SetVariable("item_db_m", _core.DbComponent.GetMeta <int>(ServerDbs.Items)); _mScope.SetVariable("mob_db_m", _core.DbComponent.GetMeta <int>(ServerDbs.Mobs)); _mScope.SetVariable("mob_skill_db_m", _core.DbComponent.GetMeta <string>(ServerDbs.MobSkills)); _mScope.SetVariable("selection", _selected); _mScope.SetVariable("database", _core.ProjectDatabase); _mScope.SetVariable("script", script); //_mScope.SetVariable("ServerDbs", DynamicHelpers.GetPythonTypeFromType(typeof(ServerDbs))); _selectedDb = null; _to <int>(_core.DbComponent, p => { _selectedDb = p.Table; _mScope.SetVariable("selected_db", p.Table); }); _to <string>(_core.DbComponent, p => { _selectedDb = p.Table; _mScope.SetVariable("selected_db", p.Table); }); string temp = TemporaryFilesManager.GetTemporaryFilePath("python_script_{0:0000}.py"); byte[] file = File.ReadAllBytes(code); Encoding encoding = EncodingService.DetectEncoding(file); using (StreamWriter writer = new StreamWriter(File.Create(temp), encoding)) using (StreamReader reader = new StreamReader(code)) { writer.WriteLine("#!/usr/bin/env python"); writer.WriteLine("# -*- coding: {0} -*- ", encoding.CodePage); while (!reader.EndOfStream) { string line = reader.ReadLine(); if (line == null) { continue; } writer.WriteLine(EncodingService.FromAnyTo(line, encoding)); } } ScriptSource source = _mEngine.CreateScriptSourceFromFile(temp); foreach (var db in dbs) { _to <int>(db, _onBegin); _to <string>(db, _onBegin); } try { try { source.Execute(_mScope); } catch (OperationCanceledException) { } if (stream.Position > 0) { stream.Seek(0, SeekOrigin.Begin); byte[] data = new byte[stream.Length]; stream.Read(data, 0, data.Length); output = EncodingService.DisplayEncoding.GetString(data); Clipboard.SetDataObject(EncodingService.DisplayEncoding.GetString(data)); } } catch { foreach (var db in dbs) { _to <int>(db, p => p.Table.Commands.CancelEdit()); _to <string>(db, p => p.Table.Commands.CancelEdit()); } throw; } finally { foreach (var db in dbs) { _to <int>(db, _onEnd); _to <string>(db, _onEnd); } stream.Close(); _core.Filter(); _core.Update(); } } catch (Exception err) { ErrorHandler.HandleException(err); } finally { TableHelper.EnableTupleTrace = false; TableHelper.Tables.Clear(); } return(output); }