Bug fixing

This commit is contained in:
Alexei Anoshenko 2026-11-05 13:31:38 +03:00
parent 17bed2389b
commit 581f29e212
31 changed files with 162 additions and 225 deletions

View File

@ -13,6 +13,11 @@ type absoluteLayoutData struct {
// NewAbsoluteLayout create new AbsoluteLayout object and return it
func NewAbsoluteLayout(session Session, params Params) AbsoluteLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(absoluteLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -11,6 +11,11 @@ type audioPlayerData struct {
// NewAudioPlayer create new MediaPlayer object and return it
func NewAudioPlayer(session Session, params Params) AudioPlayer {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(audioPlayerData)
view.init(session)
setInitParams(view, params)

View File

@ -13,6 +13,11 @@ type buttonData struct {
// NewButton create new Button object and return it
func NewButton(session Session, params Params) Button {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
button := new(buttonData)
button.init(session)
setInitParams(button, params)

View File

@ -24,6 +24,11 @@ type canvasViewData struct {
// NewCanvasView creates the new custom draw view
func NewCanvasView(session Session, params Params) CanvasView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(canvasViewData)
view.init(session)
setInitParams(view, params)

View File

@ -35,6 +35,11 @@ type checkboxData struct {
// NewCheckbox create new Checkbox object and return it
func NewCheckbox(session Session, params Params) Checkbox {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(checkboxData)
view.init(session)
setInitParams(view, params)

View File

@ -50,6 +50,11 @@ type colorPickerData struct {
// NewColorPicker create new ColorPicker object and return it
func NewColorPicker(session Session, params Params) ColorPicker {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(colorPickerData)
view.init(session)
setInitParams(view, params)

View File

@ -126,6 +126,11 @@ type columnLayoutData struct {
// NewColumnLayout create new ColumnLayout object and return it
func NewColumnLayout(session Session, params Params) ColumnLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(columnLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -28,6 +28,16 @@ type CustomViewData struct {
// InitCustomView initializes fields of CustomView by default values
func InitCustomView(customView CustomView, tag string, session Session, params Params) bool {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return false
}
if customView == nil {
ErrorLog(`the customView argument cannot be nil`)
return false
}
customView.setTag(tag)
if view := customView.CreateSuperView(session); view != nil {
customView.setSuperView(view)

View File

@ -123,6 +123,11 @@ type datePickerData struct {
// NewDatePicker create new DatePicker object and return it
func NewDatePicker(session Session, params Params) DatePicker {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(datePickerData)
view.init(session)
setInitParams(view, params)

View File

@ -53,6 +53,11 @@ type detailsViewData struct {
// NewDetailsView create new DetailsView object and return it
func NewDetailsView(session Session, params Params) DetailsView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(detailsViewData)
view.init(session)
setInitParams(view, params)

View File

@ -37,6 +37,11 @@ type dropDownListData struct {
// NewDropDownList create new DropDownList object and return it
func NewDropDownList(session Session, params Params) DropDownList {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(dropDownListData)
view.init(session)
setInitParams(view, params)

View File

@ -106,6 +106,11 @@ type editViewData struct {
// NewEditView create new EditView object and return it
func NewEditView(session Session, params Params) EditView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(editViewData)
view.init(session)
setInitParams(view, params)

View File

@ -114,6 +114,11 @@ func (file FileInfo) key() string {
// NewFilePicker create new FilePicker object and return it
func NewFilePicker(session Session, params Params) FilePicker {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(filePickerData)
view.init(session)
setInitParams(view, params)

View File

@ -119,6 +119,11 @@ type gridLayoutData struct {
// NewGridLayout create new GridLayout object and return it
func NewGridLayout(session Session, params Params) GridLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(gridLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -143,6 +143,11 @@ func (manager *imageManager) imageLoadError(obj DataObject) {
// LoadImage starts the async image loading by url
func LoadImage(url string, onLoaded func(Image), session Session) Image {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
if ok, constName := isConstantName(url); ok {
if image, ok := session.ImageConstant(constName); ok {
url = image

View File

@ -81,6 +81,11 @@ type imageViewData struct {
// NewImageView create new ImageView object and return it
func NewImageView(session Session, params Params) ImageView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(imageViewData)
view.init(session)
setInitParams(view, params)

View File

@ -46,6 +46,11 @@ type listLayoutData struct {
// NewListLayout create new ListLayout object and return it
func NewListLayout(session Session, params Params) ListLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(listLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -139,6 +139,11 @@ type listViewData struct {
// NewListView creates the new list view
func NewListView(session Session, params Params) ListView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(listViewData)
view.init(session)
setInitParams(view, params)

View File

@ -114,6 +114,11 @@ type numberPickerData struct {
// NewNumberPicker create new NumberPicker object and return it
func NewNumberPicker(session Session, params Params) NumberPicker {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(numberPickerData)
view.init(session)
setInitParams(view, params)

View File

@ -1538,6 +1538,7 @@ func (popup *popupData) createLayerView() {
// NewPopup creates a new Popup
func NewPopup(view View, param Params) Popup {
if view == nil {
ErrorLog(`the View argument cannot be nil`)
return nil
}
@ -1567,7 +1568,7 @@ func NewPopup(view View, param Params) Popup {
// If the function fails, it returns nil and an error message is written to the log.
func CreatePopupFromObject(session Session, object DataObject, binding any) Popup {
if session == nil {
ErrorLog(`"session" argument is nil`)
ErrorLog(`the Session argument cannot be nil`)
return nil
}
@ -1604,6 +1605,11 @@ func CreatePopupFromObject(session Session, object DataObject, binding any) Popu
//
// If the function fails, it returns nil and an error message is written to the log.
func CreatePopupFromText(session Session, text string, binding any) Popup {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
data, err := ParseDataText(text)
if err != nil {
ErrorLog(err.Error())
@ -1621,6 +1627,11 @@ func CreatePopupFromText(session Session, text string, binding any) Popup {
//
// If the function fails, it returns nil and an error message is written to the log.
func CreatePopupFromResources(session Session, name string, binding any) Popup {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
if strings.ToLower(filepath.Ext(name)) != ".rui" {
name += ".rui"
}

View File

@ -39,6 +39,11 @@ type progressBarData struct {
// NewProgressBar create new ProgressBar object and return it
func NewProgressBar(session Session, params Params) ProgressBar {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(progressBarData)
view.init(session)
setInitParams(view, params)

View File

@ -67,6 +67,11 @@ type resizableData struct {
// NewResizable create new Resizable object and return it
func NewResizable(session Session, params Params) Resizable {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(resizableData)
view.init(session)
setInitParams(view, params)

View File

@ -1,224 +0,0 @@
package rui
/*
import (
"fmt"
"strconv"
"strings"
)
type ruiWriter interface {
startObject(tag string)
startObjectProperty(tag, objectTag string)
endObject()
startArrayProperty(tag string)
endObArray()
writeProperty(tag string, value any)
finish() string
}
type ruiStringer interface {
ruiString(writer ruiWriter)
}
type ruiWriterData struct {
buffer *strings.Builder
indent string
}
func newRUIWriter() ruiWriter {
writer := new(ruiWriterData)
return writer
}
func (writer *ruiWriterData) writeIndent() {
if writer.buffer == nil {
writer.buffer = allocStringBuilder()
writer.indent = ""
return
}
if writer.indent != "" {
writer.buffer.WriteString(writer.indent)
}
}
func (writer *ruiWriterData) writeString(str string) {
hasEsc := strings.ContainsAny(str, "\t\"\r\n")
if hasEsc || strings.ContainsAny(str, " ,;'`[]{}()") {
if !strings.Contains(str, "`") && (hasEsc || strings.Contains(str, `\`)) {
writer.buffer.WriteRune('`')
writer.buffer.WriteString(str)
writer.buffer.WriteRune('`')
} else {
replace := []struct{ old, new string }{
{old: `\`, new: `\\`},
{old: "\t", new: `\t`},
{old: "\r", new: `\r`},
{old: "\n", new: `\n`},
{old: "\"", new: `\"`},
}
for _, s := range replace {
str = strings.ReplaceAll(str, s.old, s.new)
}
writer.buffer.WriteRune('"')
writer.buffer.WriteString(str)
writer.buffer.WriteRune('"')
}
} else {
writer.buffer.WriteString(str)
}
}
func (writer *ruiWriterData) startObject(tag string) {
writer.writeIndent()
writer.indent += "\t"
writer.writeString(tag)
writer.buffer.WriteString(" {\n")
}
func (writer *ruiWriterData) startObjectProperty(tag, objectTag string) {
writer.writeIndent()
writer.indent += "\t"
writer.writeString(tag)
writer.writeString(" = ")
if objectTag == "" {
objectTag = "_"
}
writer.writeString(objectTag)
writer.buffer.WriteString(" {\n")
}
func (writer *ruiWriterData) endObject() {
if len(writer.indent) > 0 {
writer.indent = writer.indent[1:]
}
writer.writeIndent()
writer.buffer.WriteRune('}')
}
func (writer *ruiWriterData) startArrayProperty(tag string) {
writer.writeIndent()
writer.writeString(tag)
writer.buffer.WriteString(" = [\n")
writer.indent += "\t"
}
func (writer *ruiWriterData) endObArray() {
if len(writer.indent) > 0 {
writer.indent = writer.indent[1:]
}
writer.writeIndent()
writer.buffer.WriteString("],\n")
}
func (writer *ruiWriterData) writeValue(value any) {
switch value := value.(type) {
case string:
writer.writeString(value)
case ruiStringer:
value.ruiString(writer)
// TODO
case fmt.Stringer:
writer.writeString(value.String())
case float32:
writer.writeString(fmt.Sprintf("%g", float64(value)))
case float64:
writer.writeString(fmt.Sprintf("%g", value))
case []string:
switch len(value) {
case 0:
writer.buffer.WriteString("[]\n")
case 1:
writer.writeString(value[0])
default:
writer.buffer.WriteString("[\n")
writer.indent += "\t"
for _, v := range value {
writer.buffer.WriteString(writer.indent)
writer.writeString(v)
writer.buffer.WriteString(",\n")
}
writer.indent = writer.indent[1:]
writer.buffer.WriteString(writer.indent)
writer.buffer.WriteRune(']')
}
case []View:
switch len(value) {
case 0:
writer.buffer.WriteString("[]\n")
case 1:
writer.writeValue(value[0])
default:
writer.buffer.WriteString("[\n")
writer.indent += "\t"
for _, v := range value {
writer.buffer.WriteString(writer.indent)
v.ruiString(writer)
writer.buffer.WriteString(",\n")
}
writer.indent = writer.indent[1:]
writer.buffer.WriteString(writer.indent)
writer.buffer.WriteRune(']')
}
case []any:
switch len(value) {
case 0:
writer.buffer.WriteString("[]\n")
case 1:
writer.writeValue(value[0])
default:
writer.buffer.WriteString("[\n")
writer.indent += "\t"
for _, v := range value {
writer.buffer.WriteString(writer.indent)
writer.writeValue(v)
writer.buffer.WriteString(",\n")
}
writer.indent = writer.indent[1:]
writer.buffer.WriteString(writer.indent)
writer.buffer.WriteRune(']')
}
default:
if n, ok := isInt(value); ok {
writer.buffer.WriteString(strconv.Itoa(n))
}
}
writer.buffer.WriteString(",\n")
}
func (writer *ruiWriterData) writeProperty(tag string, value any) {
writer.writeIndent()
writer.writeString(tag)
writer.buffer.WriteString(" = ")
writer.writeValue(value)
}
func (writer *ruiWriterData) finish() string {
result := ""
if writer.buffer != nil {
result = writer.buffer.String()
freeStringBuilder(writer.buffer)
writer.buffer = nil
}
return result
}
*/

View File

@ -311,6 +311,11 @@ type stackLayoutData struct {
// NewStackLayout create new StackLayout object and return it
func NewStackLayout(session Session, params Params) StackLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(stackLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -18,6 +18,11 @@ type svgImageViewData struct {
// NewSvgImageView create new SvgImageView object and return it
func NewSvgImageView(session Session, params Params) SvgImageView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(svgImageViewData)
view.init(session)
setInitParams(view, params)

View File

@ -578,6 +578,11 @@ type tableCellView struct {
// NewTableView create new TableView object and return it
func NewTableView(session Session, params Params) TableView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(tableViewData)
view.init(session)
setInitParams(view, params)

View File

@ -147,6 +147,11 @@ type tabsLayoutData struct {
// NewTabsLayout create new TabsLayout object and return it
func NewTabsLayout(session Session, params Params) TabsLayout {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(tabsLayoutData)
view.init(session)
setInitParams(view, params)

View File

@ -16,6 +16,11 @@ type textViewData struct {
// NewTextView create new TextView object and return it
func NewTextView(session Session, params Params) TextView {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(textViewData)
view.init(session)
setInitParams(view, params)

View File

@ -105,6 +105,11 @@ type timePickerData struct {
// NewTimePicker create new TimePicker object and return it
func NewTimePicker(session Session, params Params) TimePicker {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(timePickerData)
view.init(session)
setInitParams(view, params)

View File

@ -48,6 +48,11 @@ type videoPlayerData struct {
// NewVideoPlayer create new MediaPlayer object and return it
func NewVideoPlayer(session Session, params Params) VideoPlayer {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(videoPlayerData)
view.init(session)
setInitParams(view, params)

View File

@ -142,6 +142,11 @@ func newView(session Session) View {
// NewView create new View object and return it
func NewView(session Session, params Params) View {
if session == nil {
ErrorLog(`the Session argument cannot be nil`)
return nil
}
view := new(viewData)
view.init(session)
setInitParams(view, params)