示例#1
0
        private void OnMapShapeSelected(MapInterActionHandler s, LayerEventArg e)
        {
            if (CurrentLayer != null && CurrentLayer.LayerType == "ShapefileClass" && LayerSelector != null)
            {
                SelectedShapeIndexes = e.SelectedIndexes.ToList();
                if (SelectedShapeIndexes.Count > 0)
                {
                    var sf            = (Shapefile)CurrentLayer.LayerObject;
                    int fileNameField = sf.FieldIndexByName["Filename"];
                    int gpsField      = sf.FieldIndexByName["GPS"];

                    switch (LayerSelector.GetType().Name)
                    {
                    case "DataGrid":
                        var    dataGrid     = (System.Windows.Controls.DataGrid)LayerSelector;
                        string fileName     = sf.CellValue[fileNameField, SelectedShapeIndexes[0]];
                        string gps          = sf.CellValue[gpsField, SelectedShapeIndexes[0]];
                        string itemGPS      = "";
                        string itemFilename = "";
                        foreach (var item in dataGrid.Items)
                        {
                            switch (dataGrid.Name)
                            {
                            case "dataGridTrips":
                                Trip trip = (Trip)item;
                                itemGPS      = trip.GPS.DeviceName;
                                itemFilename = trip.Track.FileName;
                                break;

                            case "dataGridGPXFiles":
                                GPXFile gpxFile = (GPXFile)item;
                                itemGPS      = gpxFile.GPS.DeviceName;
                                itemFilename = gpxFile.FileName;
                                break;
                            }
                            if (itemGPS == gps && itemFilename == fileName)
                            {
                                dataGrid.SelectedItem = item;
                                dataGrid.ScrollIntoView(item);
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        }
示例#2
0
        private void ExportItemGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            // double-clicked node column cell, select a node!
            if (e.ColumnIndex == ColumnNode.Index)
            {
                if (Loader.Core.DoHitByNameDialog(null) && Loader.Core.SelNodeCount > 0)
                {
                    int        highestRowIndexEdited = e.RowIndex;
                    var        selectedRow           = ExportItemGridView.Rows[e.RowIndex];
                    ExportItem existingItem          = selectedRow.Tag as ExportItem;
                    IINode     node = Loader.Core.GetSelNode(0);

                    if (existingItem == null)
                    {
                        existingItem = TryAddExportItem(selectedRow, node.Handle);
                    }
                    else
                    {
                        if (existingItem.Layers != null && existingItem.Layers.Count > 0)
                        {
                            MessageBox.Show("You can't specify a Node when export is layer based");
                            return;
                        }
                        existingItem.NodeHandle = node.Handle;
                    }

                    // may be null after trying to add a node that already exists in another row
                    if (existingItem != null)
                    {
                        SetRowData(selectedRow, existingItem);
                    }

                    // add remaining selected nodes as new rows
                    for (int i = 1; i < Loader.Core.SelNodeCount; ++i)
                    {
                        int rowIndex = ExportItemGridView.Rows.Add();
                        var newRow   = ExportItemGridView.Rows[rowIndex];

                        ExportItem newItem = TryAddExportItem(newRow, Loader.Core.GetSelNode(i).Handle);

                        // may be null after trying to add a node that already exists in another row
                        if (newItem == null)
                        {
                            continue;
                        }

                        SetRowData(newRow, newItem);
                        highestRowIndexEdited = rowIndex;
                    }

                    // have to explicitly set it dirty for an edge case:
                    // when a new row is added "automatically-programmatically", through notify cell dirty and endedit(),
                    //   if the user then clicks on the checkbox of the newly added row,
                    //     it doesn't add a new row "automatically", whereas otherwise it will.
                    ExportItemGridView.CurrentCell = ExportItemGridView[e.ColumnIndex, highestRowIndexEdited];
                    ExportItemGridView.NotifyCurrentCellDirty(true);
                    ExportItemGridView.EndEdit();
                }
            }


            // double-clicked layers column cell, select some layers!
            if (e.ColumnIndex == ColumnLayers.Index)
            {
                layersRowIndex    = e.RowIndex;
                layersColumnIndex = e.ColumnIndex;
                ExportItem existingItem = ExportItemGridView.Rows[layersRowIndex].Tag as ExportItem;

                layerSelector = new LayerSelector();
                layerSelector.Show();
                layerSelector.FillLayerSelector(existingItem?.Layers);


                layerSelector.OnConfirmButtonClicked += SceneExplorerOnClosed;
            }
        }