Esempio n. 1
0
        public static void Print <TKey>(ref int line, AttributeList list, DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties, int from, int to)
        {
            for (int i = from, size = Math.Min(to, list.Attributes.Count); i < size; i += 2)
            {
                DbAttribute att1 = list.Attributes[i];
                DbAttribute att2 = (i + 1 < size) ? list.Attributes[i + 1] : null;

                InPairsLabel(att1, att2, ref line, generalProperties);
                line -= 2;
                InPairsPropety(att1, att2, ref line, generalProperties);
            }
        }
Esempio n. 2
0
        // TODO: The TabGenerator class works better than these custom generators
        public static GDbTab LoadSItemsTab <TKey>(GenericDatabase database, TabControl control, BaseDb gdb)
        {
            AbstractDb <TKey> db   = gdb.To <TKey>();
            AttributeList     list = ServerItemProperties.AttributeList;

            GDbTabWrapper <TKey, ReadableTuple <TKey> > tab      = new GDbTabWrapper <TKey, ReadableTuple <TKey> >();
            GTabSettings <TKey, ReadableTuple <TKey> >  settings = new GTabSettings <TKey, ReadableTuple <TKey> >(db);

            SInit(settings);
            settings.AttributeList = list;
            settings.AttId         = list.PrimaryAttribute;
            settings.AttDisplay    = ServerItemProperties.Name;

            DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties = new DisplayableProperty <TKey, ReadableTuple <TKey> >();

            generalProperties.Spacing = 0;

            int line = 0;

            Print(ref line, new SpecifiedRangeIndexProvider(new int[] {
                ServerItemProperties.Id.Index, 1,
                ServerItemProperties.Type.Index, 1,
                ServerItemProperties.AegisName.Index, 2,
                ServerItemProperties.Buy.Index, 2,
                ServerItemProperties.Weight.Index, 16
            }), generalProperties, list);

            generalProperties.AddCustomProperty(new CustomQueryViewerMobDroppedBy <TKey, ReadableTuple <TKey> >(line, 0, 1, 2));
            generalProperties.SetRow(line, new GridLength(1, GridUnitType.Star));

            Grid grid = PrintGrid(ref line, 3, 1, 2, new DefaultIndexProvider(ServerItemProperties.BindOnEquip.Index, 8), -1, 0, -1, 0, generalProperties, list);

            generalProperties.AddDeployAction(delegate {
                grid.Children[0].IsEnabled = false;
                grid.Children[1].IsEnabled = false;
                grid.Children[4].IsEnabled = false;
                grid.Children[5].IsEnabled = false;
            });

            settings.DisplayablePropertyMaker = generalProperties;
            settings.ClientDatabase           = database;
            settings.SearchEngine.SetAttributes(
                settings.AttId, settings.AttDisplay,
                ServerItemProperties.AegisName, null,
                ServerItemProperties.ApplicableJob, ServerItemProperties.Script,
                ServerItemProperties.OnEquipScript, ServerItemProperties.OnUnequipScript,
                ServerItemProperties.Type, ServerItemProperties.Gender
                );

            settings.SearchEngine.SetSettings(ServerItemProperties.Id, true);
            settings.SearchEngine.SetSettings(ServerItemProperties.Name, true);
            settings.SearchEngine.SetSettings(ServerItemProperties.AegisName, true);

            settings.SearchEngine.SetupImageDataGetter = delegate(ReadableTuple <TKey> tuple) {
                tuple.GetImageData = delegate {
                    try {
                        var cDb = database.GetTable <int>(ServerDbs.ClientResourceDb);

                        if (cDb == null)
                        {
                            return(null);
                        }

                        int id = tuple.GetKey <int>();

                        if (!cDb.ContainsKey(id))
                        {
                            return(null);
                        }

                        byte[] data = database.MetaGrf.GetData(EncodingService.FromAnyToDisplayEncoding(@"data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\item\" + cDb.GetTuple(id).GetValue <string>(ClientResourceAttributes.ResourceName) + ".bmp"));

                        if (data != null)
                        {
                            GrfImage gimage = new GrfImage(ref data);
                            gimage.MakePinkTransparent();
                            return(gimage.Cast <BitmapSource>());
                        }

                        return(null);
                    }
                    catch {
                        return(null);
                    }
                };
            };

            settings.AddedCommands.Add(new GItemCommand <TKey, ReadableTuple <TKey> > {
                AllowMultipleSelection = true,
                DisplayName            = "Copy entries to clipboard (rAthena)",
                ImagePath          = "export.png",
                InsertIndex        = 3,
                Shortcut           = ApplicationShortcut.Copy,
                AddToCommandsStack = false,
                GenericCommand     = delegate(List <ReadableTuple <TKey> > items) {
                    StringBuilder builder = new StringBuilder();
                    DbWriterMethods.DbItemsWriterSub(builder, db, items.OrderBy(p => p.GetKey <TKey>()), ServerType.RAthena);
                    Clipboard.SetText(builder.ToString());
                }
            });

            settings.AddedCommands.Add(new GItemCommand <TKey, ReadableTuple <TKey> > {
                AllowMultipleSelection = true,
                DisplayName            = "Copy entries to clipboard (Hercules)",
                ImagePath          = "export.png",
                InsertIndex        = 4,
                Shortcut           = ApplicationShortcut.Copy2,
                AddToCommandsStack = false,
                GenericCommand     = delegate(List <ReadableTuple <TKey> > items) {
                    StringBuilder builder = new StringBuilder();
                    DbWriterMethods.DbItemsWriterSub(builder, db, items, ServerType.Hercules);
                    Clipboard.SetText(builder.ToString(), TextDataFormat.UnicodeText);
                }
            });

            settings.Table = db.Table;
            tab.Initialize(settings);
            AddTagGeneratorTabChangedEvent(control, tab, settings, gdb);
            return(tab);
        }
Esempio n. 3
0
        public static Grid PrintGrid <TKey, TValue>(ref int line, int col, int rowSpan, int colSpan, IIndexProvider provider, AbstractProvider gridProvider, DisplayableProperty <TKey, TValue> generalProperties, AttributeList list) where TValue : Tuple
        {
            if (gridProvider is NullIndexProvider && provider is NullIndexProvider)
            {
                line++;
                return(null);
            }

            if (gridProvider is NullIndexProvider)
            {
                // No grid is being printed, but the provider is not null
                Print(ref line, provider, generalProperties, list);
                return(null);
            }

            if (gridProvider == null)
            {
                return(PrintGrid(ref line, col, rowSpan, colSpan, provider, -1, 0, -1, 0, generalProperties, list));
            }

            return(PrintGrid(ref line, col, rowSpan, colSpan, provider, gridProvider[0], gridProvider[1], gridProvider[2], gridProvider[3], generalProperties, list));
        }
Esempio n. 4
0
        public static Grid PrintGrid <TKey, TValue>(ref int line, int col, int rowSpan, int colSpan, IIndexProvider provider, int c0, int c1, int c2, int c3, DisplayableProperty <TKey, TValue> generalProperties, AttributeList list) where TValue : Tuple
        {
            Grid grid = generalProperties.AddGrid(line, col, rowSpan, colSpan);

            grid.ColumnDefinitions.Add(_getColumnDef(c0));
            grid.ColumnDefinitions.Add(_getColumnDef(c1));
            grid.ColumnDefinitions.Add(_getColumnDef(c2));
            grid.ColumnDefinitions.Add(_getColumnDef(c3));

            int        lineOffset = -1;
            List <int> indexes    = provider.GetIndexes();

            for (int i = 0; i < indexes.Count; i += 2)
            {
                if (indexes[i] > -1 && indexes[i] < list.Attributes.Count && list.Attributes[indexes[i]].Visibility == VisibleState.Visible)
                {
                    generalProperties.AddLabel(list.Attributes[indexes[i]], ++lineOffset, 0, false, grid);
                    generalProperties.AddProperty(list.Attributes[indexes[i]], lineOffset, 1, grid);
                }

                if (i + 1 < indexes.Count)
                {
                    if (indexes[i + 1] > -1 && indexes[i + 1] < list.Attributes.Count && list.Attributes[indexes[i + 1]].Visibility == VisibleState.Visible)
                    {
                        generalProperties.AddLabel(list.Attributes[indexes[i + 1]], lineOffset, 2, false, grid);
                        generalProperties.AddProperty(list.Attributes[indexes[i + 1]], lineOffset, 3, grid);
                    }
                }

                lineOffset++;
            }

            line++;
            return(grid);
        }
Esempio n. 5
0
        public static void Print <TKey, TValue>(ref int line, IIndexProvider provider, DisplayableProperty <TKey, TValue> generalProperties, AttributeList list) where TValue : Tuple
        {
            int        lineOffset = -1;
            List <int> indexes    = provider.GetIndexes();

            for (int i = 0; i < indexes.Count; i += 2)
            {
                if (indexes[i] > -1 && indexes[i] < list.Attributes.Count && list.Attributes[indexes[i]].Visibility == VisibleState.Visible)
                {
                    generalProperties.AddLabel(list.Attributes[indexes[i]], ++lineOffset, 0, false);
                    generalProperties.AddProperty(list.Attributes[indexes[i]], lineOffset, 1);
                }

                if (i + 1 < indexes.Count)
                {
                    if (indexes[i + 1] > -1 && indexes[i + 1] < list.Attributes.Count && list.Attributes[indexes[i + 1]].Visibility == VisibleState.Visible)
                    {
                        generalProperties.AddLabel(list.Attributes[indexes[i + 1]], lineOffset, 3, false);
                        generalProperties.AddProperty(list.Attributes[indexes[i + 1]], lineOffset, 4);
                    }
                }

                lineOffset++;
                line += 2;
            }
        }
Esempio n. 6
0
        public static void InPairsPropety <T>(DbAttribute att1, DbAttribute att2, ref int line, DisplayableProperty <T, ReadableTuple <T> > generalProperties)
        {
            if (att1 != null && att1.Visibility == VisibleState.Visible)
            {
                generalProperties.AddProperty(att1, line, 1);
            }

            if (att2 != null && att2.Visibility == VisibleState.Visible)
            {
                generalProperties.AddProperty(att2, line, 4);
            }

            line += 2;
        }
Esempio n. 7
0
        private void _generateGrid(ref int line, GenericDatabase database, TabControl control, DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties, BaseDb gdb)
        {
            if (gdb.LayoutIndexes != null)
            {
                AbstractProvider metaProvider = AbstractProvider.GetProvider(gdb.LayoutIndexes);

                if (metaProvider is GroupIndexProvider)
                {
                    AbstractProvider gridProvider = AbstractProvider.GetProvider(gdb.GridIndexes);
                    gridProvider.GroupAs = typeof(SpecifiedIndexProvider);
                    bool col = false;

                    foreach (IIndexProvider provider in metaProvider.Providers)
                    {
                        AbstractProvider gridLayout = gridProvider.Next <AbstractProvider>();
                        GTabsMaker.PrintGrid(ref line, (col = !col) ? 0 : 3, 1, 2, provider, gridLayout, generalProperties, gdb.AttributeList);
                        if (col)
                        {
                            line--;
                        }
                    }
                }
                else
                {
                    GTabsMaker.Print(ref line, metaProvider, generalProperties, gdb.AttributeList);
                }
            }
            else
            {
                GTabsMaker.Print(ref line, new SpecifiedRangeIndexProvider(new int[] { 0, gdb.AttributeList.Attributes.Count }), generalProperties, gdb.AttributeList);
            }
        }
Esempio n. 8
0
 private void _onPreviewGenerateGrid(ref int line, GenericDatabase database, TabControl control, DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties, BaseDb gdb)
 {
 }
Esempio n. 9
0
        private GDbTab _gDbTabMaker(GenericDatabase database, TabControl control, BaseDb gdb)
        {
            GTabSettings <TKey, ReadableTuple <TKey> >  settings = new GTabSettings <TKey, ReadableTuple <TKey> >(gdb);
            GDbTabWrapper <TKey, ReadableTuple <TKey> > tab      = new GDbTabWrapper <TKey, ReadableTuple <TKey> >();
            Table <TKey, ReadableTuple <TKey> >         table    = gdb.To <TKey>().Table;

            settings.Table   = table;
            settings.Control = control;

            InitStyle(tab, settings, gdb);
            InitAttributes(tab, settings, gdb);
            if (OnInitSettings != null)
            {
                OnInitSettings(tab, settings, gdb);
            }

            DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties = new DisplayableProperty <TKey, ReadableTuple <TKey> >();

            generalProperties.Spacing = DefaultSpacing;

            control.SelectionChanged += delegate(object sender, SelectionChangedEventArgs e) {
                if (e == null || e.RemovedItems.Count <= 0 || e.RemovedItems[0] as TabItem == null || (e.AddedItems.Count > 0 && e.AddedItems[0] as TabItem == null))
                {
                    return;
                }

                if (e.AddedItems.Count <= 0)
                {
                    return;
                }

                TabItem item = e.AddedItems[0] as TabItem;

                if (gdb.DbSource.AlternativeName != null)
                {
                    if (WpfUtilities.IsTab(item, gdb.DbSource.Filename) || WpfUtilities.IsTab(item, gdb.DbSource.AlternativeName))
                    {
                        if (generalProperties.OnTabVisible != null)
                        {
                            generalProperties.OnTabVisible(this);
                        }
                        if (OnPreviewTabVisualUpdate != null)
                        {
                            OnPreviewTabVisualUpdate(tab, settings, gdb);
                        }
                        if (OnTabVisualUpdate != null)
                        {
                            OnTabVisualUpdate(tab, settings, gdb);
                        }
                    }
                }
                else
                {
                    if (WpfUtilities.IsTab(item, gdb.DbSource))
                    {
                        if (generalProperties.OnTabVisible != null)
                        {
                            generalProperties.OnTabVisible(this);
                        }
                        if (OnPreviewTabVisualUpdate != null)
                        {
                            OnPreviewTabVisualUpdate(tab, settings, gdb);
                        }
                        if (OnTabVisualUpdate != null)
                        {
                            OnTabVisualUpdate(tab, settings, gdb);
                        }
                    }
                }
            };

            database.Reloaded += delegate {
                if (OnDatabaseReloaded != null)
                {
                    OnDatabaseReloaded(tab, settings, gdb);
                }
            };

            int line = 0;

            if (OnPreviewGenerateGrid != null)
            {
                OnPreviewGenerateGrid(ref line, database, control, generalProperties, gdb);
            }
            if (GenerateGrid != null)
            {
                GenerateGrid(ref line, database, control, generalProperties, gdb);
            }
            if (OnGenerateGrid != null)
            {
                OnGenerateGrid(ref line, database, control, generalProperties, gdb);
            }

            settings.DisplayablePropertyMaker = generalProperties;
            settings.ClientDatabase           = database;

            if (SetSettings != null)
            {
                SetSettings(tab, settings, gdb);
            }
            if (OnSetCustomCommands != null)
            {
                OnSetCustomCommands(tab, settings, gdb);
            }
            if (OnPreviewTabInitialize != null)
            {
                OnPreviewTabInitialize(tab, settings, gdb);
            }
            tab.Initialize(settings);
            return(tab);
        }