Есть ли какие-либо библиотеки/платформы для SCons?

Примечание. Этот вопрос имеет продолжение здесь:
Копировать выбранные строки флажков из DGV в DGV2, включая столбец изображения


[ 1146] Вам необходимо загрузить изображения после десериализации JSON в объект вашего класса. Вы можете и добавить новое открытое свойство Type Bitmap во внутренний класс Result , который будет использоваться для представления изображения, на которое ссылается URI, найденный в JSON.

Чтобы получить Изображения, вам нужен метод, который берет URI ресурса и загружает его с удаленного компьютера. Я добавил открытый метод в класс Products , который ссылается на все объекты, содержащие ссылку на URI:
после того, как JSON был успешно проанализирован, [ 1110] Свойство будет ссылаться на все классы Result . Каждый класс Result будет ссылаться на битовый URI в свойстве ProductImage .

Используя класс WebClient , мы можем использовать эти ссылки для загрузки изображений и добавления их в свойство типа Bitmap.
Нам также нужно указать парсеру JSON игнорировать это свойство, так как оно не является частью объекта JSON.
Это можно сделать, добавив атрибут к свойству.

Переименуйте RootObject (с именем JSON в определении вашего класса) в Root:

Кроме того, все классы, которые вы здесь показываете, добавляются в родительский класс с именем [ 1165] ProductsQuery , используется в качестве контейнера для всех объектов класса.

blockquote>
Public Class Root
   Public Property uk As Uk
End Class

Десериализовать JSON с помощью JsonConvert.DeserializeObject :

Dim JSONObject As String = File.ReadAllText("[Source Txt]")
Dim JsonPost As ProductsQuery.Root = JsonConvert.DeserializeObject(Of ProductsQuery.Root)(JSONObject)

Используйте недавно добавленный публичный метод для загрузки изображений:

JsonPost.uk.ghs.Products.LoadImages()

Подготовьте DataGridViewImageColumn , который покажет изображения:
Редактировать : также вставьте DataGridViewCheckBoxColumn .

Dim DGVCheckBoxCol As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn(False) With {
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader,
    .DisplayIndex = 0,
    .HeaderText = "",
    .Name = "Select"
}

Dim DGVImageCol As DataGridViewImageColumn = New DataGridViewImageColumn(False) With {
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader,
    .DataPropertyName = "Image",
    .DisplayIndex = 1,
    .FillWeight = 1,
    .HeaderText = "Image",
    .ImageLayout = DataGridViewImageCellLayout.Normal,
    .Name = "Image",
    .ValuesAreIcons = False
}

Затем установите DataGridView DataSource и скройте столбец, содержащий URI-код изображения, который здесь не очень полезен. Кроме того, вызовите метод AutoResizeRows , чтобы установить размер строк для лучшего представления изображения:

DataGridView1.DataSource = Nothing 
DataGridView1.Columns.Clear()

DataGridView1.Columns.Insert(0, DGVCheckBoxCol)
DataGridView1.Columns.Insert(1, DGVImageCol)
DataGridView1.DataSource = JsonPost.uk.ghs.Products.Results
DataGridView1.Columns(2).Visible = False
DataGridView1.AutoResizeRows()

Результат :

[1156 ] JSON on DataGridView

Модифицированные классы :

Примечание :
description свойство представляет собой массив строк, которые DGV отказывается показывать как есть. Я назвал его RawDescription и добавил новое свойство ( Description ) типа String - с атрибутом - в Result класс, который будет содержать сплющенную строку.

Imports System.IO
Imports System.Net
Imports Newtonsoft.Json

Public Class ProductsQuery

    Public Class Root
        Public Property uk As Uk
    End Class

    Public Class Uk
        Public Property ghs As Ghs
    End Class

    Public Class Ghs
        Public Property products As Products
    End Class

    Public Class Products
        Public Property input_query As String
        Public Property output_query As String
        Public Property filters As Filters
        Public Property queryPhase As String
        Public Property totals As Totals
        Public Property config As String

        
        Public Property Results As Result()
        Public Property suggestions As Object()

        Public Sub LoadImages()
            Using client As WebClient = New WebClient()
                For Each result As Result In Results
                    Dim bitmapBytes = client.DownloadData(result.ProductImage)
                    Using ms As MemoryStream = New MemoryStream(bitmapBytes)
                        ms.Position = 0
                        result.Image = CType(Image.FromStream(ms).Clone(), Bitmap)
                    End Using
                    result.ProductDescription = result.RawDescription(0)
                Next
            End Using
        End Sub
    End Class

    Public Class Filters
    End Class

    Public Class Totals
        Public Property all As Integer
        
        Public Property NewProducts As Integer
        Public Property offer As Integer
    End Class

    Public Class Result

        
        Public Property Image As Bitmap

        
        Public Property ProductImage As String

        
        Public Property SuperDepartment As String
        Public Property tpnb As Integer
        Public Property ContentsMeasureType As String

        
        Public Property Name As String
        Public Property UnitOfSale As Integer

        
        Public Property Description As String

        
        Public Property RawDescription As String()
        Public Property AverageSellingUnitWeight As Double
        Public Property UnitQuantity As String
        Public Property id As Integer
        Public Property ContentsQuantity As Double

        
        Public Property Department As String

        
        Public Property Price As Double

        
        Public Property Unitprice As Double
    End Class
End Class

11
задан Łukasz Lew 6 February 2009 в 17:22
поделиться

3 ответа

Рецепты SCons в Wiki являются хорошим местом для запуска. Кроме того, смотрите на другие проекты, которые используют SCons, например, систему сборки Пыла. Если это не сокращает его, существует несколько расширений третьего лица SCons, на которые можно хотеть смотреть:

Насколько я знаю нет никаких лучших практик SCons, которые были согласованы. Сообщество SCons, кажется, одобряет адаптируемость по "канонизации". Не трудно разработать достойную находящуюся в SCons систему сборки с нуля, все же. (После того как Вы поняли, как VariantDir работает, по крайней мере.)

7
ответ дан 3 December 2019 в 06:48
поделиться

Можно интересоваться Инструментарием Конструкции программного обеспечения Google, который был сделан открытым исходным кодом в феврале 2009. Это добавляет новые опции сверху SCons, такие как улучшенное поколение файла проекта Visual Studio, функции модульного теста и распределенные сборки с distcc или incredibuild.

10
ответ дан 3 December 2019 в 06:48
поделиться

При использовании Eclipse для разработки C++, можно хотеть проверить этот плагин разработчика SCons (http://nic-nac-project.org/~lothar/eclipse/update/SConsBuilderPlugin.html)

1
ответ дан 3 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: