Jump to content

[Windows/KSP 1.1] Kerbal Config Editor v1.1 Release


IRnifty

Recommended Posts

Hello all ('-')/,

I'd like to present my 3rd party program:

NYB7hn1.png

Kerbal Config Editor

v1.1 Release

Kerbal Config Editor (KCE) is an easy to use tool designed to allow modders of Kerbal Space Program to easily and quickly alter or even create KSP Config Files.

Screenshots

This software is provided "as-is" with no warranties.

Presented under the GPL v3 license.

Creation and/or publication of media (images, videos, etc.) while using this software is authorized.

Created by: Nifty255

Copyright © 2015 All rights reserved.

This software is in RELEASE. However, bugs can still happen. If you have a bug, or a suggestion, please leave it in a mature manner.

DOWNLOAD: SpaceDock OR GitHub

SOURCE: GitHub

Get KCE on CKAN!

 

 

KSP 1.1 USERS BEWARE:

KSP 1.1 is still in Pre-Release status. Bugs are expected. In addition, KCE v1.1 is NOT backwards kompatible with older KSP versions. Because of this, older versions of KCE are still available in SpaceDock's "Changelog" section AND in GitHub's "Releases" section.

INSTALLATION INSTRUCTIONS:

Place the program file into the same directory as your Kerbal Space Program install.

For example, if KSP is installed in C:\Program Files\Kerbal Space Program, then that is where this program goes.

FEATURES:

Kerbal Config Editor allows users and modders to easily read, edit, and even create KSP config files.

- Supports creating new config files and saving.

- Supports opening existing config files.

- Supports editing of nodes, their names, and values, their names, and assigned values.

- DOES NOT currently support comments. This is planned for a future release.

CHANGELOG:

v1.1:

- KSP 1.1 PRE-RELEASE Kompatibility Update. BUGS ARE EXPECTED.

 

v1.0.4:

- Minor UI improvements.

- Changed File IO to use the OS's path separator instead of hardcoded backslashes.

 

v1.0.3:

- The Open and Save file dialogs now begin at the install path of the program.

 

v1.0.2:

- Allowed opening of game save (*.sfs) files.

- Allowed opening of files with node names that may not be completely alphanumeric.

- Improved file open error handling.

 

v1.0.1:

- Fixed menu items not reactivating.

 

v1.0:

- INITIAL RELEASE

Edited by IRnifty
Link to comment
Share on other sites

I get the following error message when I start the application

See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.


************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Users\fredrik\Desktop\KSP_win\KSP_Data\Managed\Assembly-CSharp.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Users\fredrik\Desktop\KSP_win\KSP_Data\Managed\Assembly-CSharp.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See [URL]http://go.microsoft.com/fwlink/?LinkId=155569[/URL] for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at KerbalConfigEditor.Program.ResolveAssembly(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)




at KerbalConfigEditor.ProgramForm.newToolStripMenuItem_Click(Object sender, EventArgs e)
at KerbalConfigEditor.ProgramForm.ProgramForm_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)








************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Kerbal Config Editor
Assembly Version: 1.0.2.0
Win32 Version: 1.0.2.0
CodeBase: file:///C:/Users/fredrik/Desktop/KSP_win/Kerbal%20Config%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34239 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------


************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.


For example:


<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>


When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.




Link to comment
Share on other sites

Updated! v1.0.2:

- Allowed opening of game save (*.sfs) files.

- Allowed opening of files with node names that may not be completely alphanumeric.

- Improved file open error handling.

- - - Updated - - -

Can you please tell me bit about your computer? Are you installing this into your KSP directory? What version of KSP is KCE installed into?

Link to comment
Share on other sites

Interesting... I'm not entirely certain what could be causing it then. I think you just have a very rare setup that interferes. Wait. You're running KSP out of your Users folder. Have you tried moving it somewhere like Program Files and trying it there? It may be that having the install in your Users folder, or any subfolder, causes some weird access issues with my program...

Link to comment
Share on other sites

I can try that.

I dont use the installer, I use the zip and unpack it to my desktop.

I'll try your program in a fresh install of ksp somewhere else then my user folder

- - - Updated - - -

A fresh unzip into c:\, same problem

See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.


************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.IO.FileLoadException: Could not load file or assembly 'file:///C:\KSP_win\KSP_Data\Managed\Assembly-CSharp.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\KSP_win\KSP_Data\Managed\Assembly-CSharp.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at KerbalConfigEditor.Program.ResolveAssembly(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)




at KerbalConfigEditor.ProgramForm.newToolStripMenuItem_Click(Object sender, EventArgs e)
at KerbalConfigEditor.ProgramForm.ProgramForm_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)








************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Kerbal Config Editor
Assembly Version: 1.0.2.0
Win32 Version: 1.0.2.0
CodeBase: file:///C:/KSP_win/Kerbal%20Config%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34239 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------


************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.


For example:


<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>


When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.




Link to comment
Share on other sites

Hmm... This is really interesting. I am honestly completely unsure what causes this. The error is strangely claiming your install to be a network location.

System.NotSupportedException: An attempt was made to load an assembly from a network location...

So I think there may be one solution which might help, but it's a long shot, so I'll be in contact via private message some time today or tomorrow with a private test version which I'd like you to try. Sound good?

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

If there is anyone that runs KSP on Linux, I'm looking for someone to assist me in making KCE cross-platform. There are some things I need to know about Linux's KSP installation to continue. Message me if you're interested in helping.

Link to comment
Share on other sites

  • 2 months later...

A nice program to work with but i'm unable to save the changed or new values. Every time i try to do that an exception error occurs. (win7 64bits, KSP not running, installed in KSP installroot)

Any clues on a solution?


************** Exceptiontext **************
System.MissingMethodException: Method not found: Boolean ConfigNode.SetValue(System.String, System.String).
bij KerbalConfigEditor.ProgramForm.saveValuesButton_Click(Object sender, EventArgs e)
bij System.Windows.Forms.Control.OnClick(EventArgs e)
bij System.Windows.Forms.Button.OnClick(EventArgs e)
bij System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bij System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bij System.Windows.Forms.Control.WndProc(Message& m)
bij System.Windows.Forms.ButtonBase.WndProc(Message& m)
bij System.Windows.Forms.Button.WndProc(Message& m)
bij System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bij System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded assembly's **************
mscorlib
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Kerbal Config Editor
Assembly-versie: 1.0.3.0
Win32-versie: 1.0.3.0
CodeBase: file:///L:/KSP-win-1.0.2/KSP_win/Kerbal%20Config%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
mscorlib.resources
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Assembly-CSharp
Assembly-versie: 1.0.0.0
Win32-versie: 1.0.0.0
CodeBase: file:///L:/KSP-win-1.0.2/KSP_win/KSP_Data/Managed/Assembly-CSharp.dll
----------------------------------------
System.Core
Assembly-versie: 4.0.0.0
Win32-versie: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
UnityEngine
Assembly-versie: 0.0.0.0
Win32-versie: 0.0.0.0
CodeBase: file:///L:/KSP-win-1.0.2/KSP_win/KSP_Data/Managed/UnityEngine.DLL
----------------------------------------

Update

It is impossible to save to the opened file but it is possible to save to a different (new) file.

Edited by TheCardinal
Link to comment
Share on other sites

  • 6 months later...
[quote name='IRnifty']If there is anyone that runs KSP on Linux, I'm looking for someone to assist me in making KCE cross-platform. There are some things I need to know about Linux's KSP installation to continue. Message me if you're interested in helping.[/QUOTE]

I do.

I can tell you how to make it run easily on Linux as well.

Simply get it to run under Mono Runtime for Windows, and it will run on Linux and Mac as well.

You should try to see if you can get it to work under the latest 2.x branch of Mono for added compatability.

The Mono project also ships a utility called "Moma" that can check for compatibility and tell you what library calls are likely the problem. It can basically tell you exactly what libraries you are using, which ones you need to ship with your program for mono compatability, and which ones won't run on Mono at all.

You can take a look at the list of the .Net libraries supported under Mono at the Mono website.

As a note, when building C# assemblies Unity games, the Mono Compiler and Mono version of Mono-Develop are actually a lot better than the obsolete versions that ship with Unity, and some would argue they might be better than Microsoft Studio, but both Mono and Microsoft Studio have strong-points in both their compiler and IDE so it's debatable there. Edited by Ruedii
Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

Thanks for letting me know. I often forget to add releases to GitHub because it's not meant to be the primary download source, but thanks to MediaFire being banned, I had to. I'll update GitHub and also add in the SpaceDock.info source as well.

 

EDIT: Apparently I got confused at some point, because the actual latest stable release is 1.0.3 as GitHub indicates, and I accidentally changed everything to say 1.0.4 when that version is not even released.

Edited by IRnifty
Link to comment
Share on other sites

Kerbal Config Editor has been updated! KCE v1.1 is now kompatible with KSP 1.1 Pre-Release.

1.1 USERS BEWARE: KSP 1.1 is still in Pre-Release status. Bugs are expected. In addition, KCE v1.1 is NOT backwards kompatible with older KSP versions. Because of this, older versions of KCE are still available in SpaceDock's "Changelog" section AND in GitHub's "Releases" section.

CHANGELOG:

v1.1:

- KSP 1.1 PRE-RELEASE Kompatibility Update. BUGS ARE EXPECTED.

Link to comment
Share on other sites

Since this is written in C-Sharp, it should be portable to Mono.  Do you want me to check if it runs drop in, or if it needs some porting work, and assess how much porting work is necessary? 

I'll test it under the Mono Runtime for CIL-PE files (Mono/.Net EXE file format).  There is no point in building separate Linux binaries when almost all Linux distros have the .Net runtime installed by default, and have a link to add the necessary modules for basic .Net compatibility.  (Namely, GDI+.NET and WinForms.NET)
 

Link to comment
Share on other sites

I'm actually fairly uncertain as to how well it'll run on other OS's due to its dependence on the KSP code library. Since it literally relies on the KSP definition of ConfigNode as I can't exactly recreate it myself, I don't know if other OS's will properly pick up on that dependence.

Link to comment
Share on other sites

So in other words, there is only one way to find out.

Where are you looking for the dependency.  As long as it's a Mono/.Net DLL file you should be fine. 

Unfortunately if it is bundled into a ".so" or other non-Mono binary file, you may not be able to access it on non-Windows platforms without adding an extraction routine.

The proper way to look is to make the directory relative to "./" in naming and have the user place the binary in their KSP directory.

Only some Operating Systems automatically add the current working directory to the library search path, and Mono gets it's search path from the OS unless the program overrides it.   The simplest solution is to explicitly state the location relative to the binary's location or add said location to the search binary specific additions to the search path.

Honestly, you should only need that database to make it easier to edit.  It basically provides the config tree schema for the unspecified variables.  Players will simply have to manually define the config file if you don't include it.  You may want to make a second version that falls back on this.

If you need a test system, you can launch Linux from a thumb drive.  (I recommend a full install instead of a live disk image.)  Linux now has the ability to detect plug and play disks by Partition ID so even if the disk moves in location it can find it on boot.  (This ability was added quite a while back but was changed to be enabled by default recently.)  Mac's file handing system is very similar to Linux so if something works on Linux it should work on Mac.

Edited by Ruedii
Moar info
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...