Jump to content
Ketarin forum
floele

Ketarin on GitHub

Recommended Posts

What application are you using for building this, I know its part of the visual studio but wasn't sure if it was vb.net or c++ or something. What version do you use so there isn't a conflict when it comes to building.

Share this post


Link to post
Share on other sites

Severity    Code    Description    Project    File    Line    Suppression State
Warning        Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "packages\System.Data.SQLite.Core.1.0.109.2\build\net451\System.Data.SQLite.Core.targets".    Ketarin    d:\Boot\Downloads\Ketarin-master\Ketarin-master\Ketarin.csproj    663    


Tried running MainForm.cs and got the above error, what am i missing?

Share this post


Link to post
Share on other sites

Thanks, floele.

A colleague, Tom Francis, has joined me in the task of porting Ketarin to run natively on Linux :-)

Tom has copied your code to a new github repository and made changes for it to compile on Linux. 

He has joined this forum as franc6, and he would like to discuss with you how his work and yours can remain linked but separate, so improvements that you make can feed through to the Linux version.

So let me introduce you to each other :-)

Perhaps it would be good for you to communicate with each other directly by email, rather than through the forum.

Thanks for releasing the source code of this great program,
Jim

Share this post


Link to post
Share on other sites

For the moment, you can find the fork at https://github.com/franc6/Ketarin.  Look in the Mono branch for all of the changes together.  For now, the changes all fall into a few categories:

  1. Bugs or enhancements in Ketarin affecting Windows, and by extension, Linux.
  2. Modifications to allow Ketarin to run on Linux.
  3.  GPL compliance.

For the first category,  there are only a few.  I can easily submit pull requests for them, without including any of the other changes.

For the second category, most of the changes right now are quick-and-dirty.  That is, making use of conditional compilation and new build targets in the project file.  I don't really like that method, but it's easy to maintain if you're not interested in having any of this category of changes.  If you are interested, let me know, and we can discuss how you'd like to see them done -- dependency inversion, composition, or some other pattern when it's not a simple "replace '\\' with Path.DirectorySeparator"Char type of thing. :)

For the last category, that's probably the most difficult.  While it's a legal grey area on if you, as the original author, need to follow all the terms of the GPL, and it's generally accepted that you can have exceptions to the GPL, I can't.  It's very much black-and-white.  I must follow all the terms of the GPL, which means replacing all non-GPL code, too. :)

I do have some other questions, but they'll only become important if you're interested in taking any of my changes.

Share this post


Link to post
Share on other sites

Hi Tom / franc6,

thanks for your contribution! I'm glad that someone makes use my GitHub repo :)

On 2/11/2019 at 6:35 PM, franc6 said:

For the first category,  there are only a few.  I can easily submit pull requests for them, without including any of the other changes

Yes, please do. Just make sure you provide me with enough context to understand the reasoning behind your changes.

 

On 2/11/2019 at 6:35 PM, franc6 said:

If you are interested, let me know, and we can discuss how you'd like to see them done

I didn't look at your changes yet. In general, I'm fine with a few conditional compilation adjustments, but if it gets too messy, we should try to come up with better methods.

 

On 2/11/2019 at 6:35 PM, franc6 said:

 I must follow all the terms of the GPL, which means replacing all non-GPL code, too.

Are there any specific issues? Actually, I am open to releasing the code under a different license if that makes things easier because I'm not very fond of legal obstacles either.

Share this post


Link to post
Share on other sites
18 hours ago, jokerfool said:

Can someone help me with my issue please?

Sorry, forgot about your post. Is your issue design time only or do you also have issues running Ketarin?

If it's the first one, please copy the call stacks here. The forms probably need some adjustments in the OnLoad() method so that they do not access the database at design time anymore.

Share this post


Link to post
Share on other sites
ApplicationJobDialog.cs

Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)    
 
Instances of this error (2)  
 
1.   Hide Call Stack 
 
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_open_interop(Byte[] utf8Filename, Byte[] vfsName, SQLiteOpenFlagsEnum flags, Int32 extFuncs, IntPtr& db)
at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
at System.Data.SQLite.SQLiteConnection.Open()
at Ketarin.DbManager.get_NewConnection() in d:\Ketarin-master\DbManager.cs:line 197
at Ketarin.DbManager.get_Connection() in d:\Ketarin-master\DbManager.cs:line 140
at Ketarin.DbManager.GetSnippets() in d:\Ketarin-master\DbManager.cs:line 731
at Ketarin.Forms.CommandControl.LoadSnippets() in d:\Ketarin-master\Forms\CommandControl.cs:line 270
at Ketarin.Forms.CommandControl.set_CommandType(ScriptType value) in d:\Ketarin-master\Forms\CommandControl.cs:line 221
at Ketarin.Forms.CommandControl..ctor() in d:\Ketarin-master\Forms\CommandControl.cs:line 230  
 
2.   Hide Call Stack 
 
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_open_interop(Byte[] utf8Filename, Byte[] vfsName, SQLiteOpenFlagsEnum flags, Int32 extFuncs, IntPtr& db)
at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
at System.Data.SQLite.SQLiteConnection.Open()
at Ketarin.DbManager.get_NewConnection() in d:\Ketarin-master\DbManager.cs:line 197
at Ketarin.DbManager.get_Connection() in d:\Ketarin-master\DbManager.cs:line 140
at Ketarin.DbManager.GetSnippets() in d:\Ketarin-master\DbManager.cs:line 731
at Ketarin.Forms.CommandControl.LoadSnippets() in d:\Ketarin-master\Forms\CommandControl.cs:line 270
at Ketarin.Forms.CommandControl.set_CommandType(ScriptType value) in d:\Ketarin-master\Forms\CommandControl.cs:line 221
at Ketarin.Forms.CommandControl..ctor() in d:\Ketarin-master\Forms\CommandControl.cs:line 230

The variable 'txtExecuteBefore' is either undeclared or was never assigned.
    
 
Instances of this error (1)  
 
1.   Ketarin ApplicationJobDialog.Designer.cs Line:669 Column:1   Hide Call Stack 
 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)  

The variable 'txtExecuteAfter' is either undeclared or was never assigned.
    
 
Instances of this error (1)  
 
1.   Ketarin ApplicationJobDialog.Designer.cs Line:703 Column:1   Hide Call Stack 
 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)  


CustomSetupInstructionDialog.cs

 Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)     
 
  
 
  
 
Instances of this error (1)  
 
1.   Hide Call Stack 
 
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_open_interop(Byte[] utf8Filename, Byte[] vfsName, SQLiteOpenFlagsEnum flags, Int32 extFuncs, IntPtr& db)
at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
at System.Data.SQLite.SQLiteConnection.Open()
at Ketarin.DbManager.get_NewConnection() in d:\Ketarin-master\DbManager.cs:line 197
at Ketarin.DbManager.get_Connection() in d:\Ketarin-master\DbManager.cs:line 140
at Ketarin.DbManager.GetSnippets() in d:\Ketarin-master\DbManager.cs:line 731
at Ketarin.Forms.CommandControl.LoadSnippets() in d:\Ketarin-master\Forms\CommandControl.cs:line 270
at Ketarin.Forms.CommandControl.set_CommandType(ScriptType value) in d:\Ketarin-master\Forms\CommandControl.cs:line 221
at Ketarin.Forms.CommandControl..ctor() in d:\Ketarin-master\Forms\CommandControl.cs:line 230  

The variable 'commandControl' is either undeclared or was never assigned.

 
Instances of this error (2)  
 
1.   Ketarin CustomSetupInstructionDialog.Designer.cs Line:67 Column:1   Hide Call Stack 
 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)  
 
2.   Ketarin CustomSetupInstructionDialog.Designer.cs Line:73 Column:1   Hide Call Stack 
 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)  
 
 

SettingsDialog.cs

Instances of this error (1)  
 
1.   Hide Call Stack 
 
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_open_interop(Byte[] utf8Filename, Byte[] vfsName, SQLiteOpenFlagsEnum flags, Int32 extFuncs, IntPtr& db)
at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
at System.Data.SQLite.SQLiteConnection.Open()
at Ketarin.DbManager.get_NewConnection() in d:\Ketarin-master\DbManager.cs:line 197
at Ketarin.DbManager.get_Connection() in d:\Ketarin-master\DbManager.cs:line 140
at Ketarin.DbManager.GetSnippets() in d:\Ketarin-master\DbManager.cs:line 731
at Ketarin.Forms.CommandControl.LoadSnippets() in d:\Ketarin-master\Forms\CommandControl.cs:line 270
at Ketarin.Forms.CommandControl.set_CommandType(ScriptType value) in d:\Ketarin-master\Forms\CommandControl.cs:line 221
at Ketarin.Forms.CommandControl..ctor() in d:\Ketarin-master\Forms\CommandControl.cs:line 230  

  
The variable 'commandControl' is either undeclared or was never assigned.
    
 
Instances of this error (1)  
 
1.   Ketarin SettingsDialog.Designer.cs Line:617 Column:1   Hide Call Stack 
 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)  

 

So most of this just refers to this I imagine: Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found.

 

The DLL I have in the directory, but I think its probably not enough and I need to do something more. I have no idea.

 

So the 3 files with errors ApplicationJobDialog.cs, CustomSetupInstructionDialog.cs and SettingsDialog.cs

 

Running VS2017.

 

Thanks

 

 

Share this post


Link to post
Share on other sites
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)

 

Every single file is throwing that error, can't open anything.

 

 

 

Share this post


Link to post
Share on other sites
On 2/16/2019 at 6:46 AM, floele said:

Hi Tom / franc6,

thanks for your contribution! I'm glad that someone makes use my GitHub repo :)

Yes, please do. Just make sure you provide me with enough context to understand the reasoning behind your changes.

I'll submit a couple of pull requests later this week. :)

On 2/16/2019 at 6:46 AM, floele said:

I didn't look at your changes yet. In general, I'm fine with a few conditional compilation adjustments, but if it gets too messy, we should try to come up with better methods.

As I said, I'd rather avoid the conditional compilation when possible.  Some of the changes are removing functionality that doesn't make sense -- like running Windows installers, DOS-style batch files, Powershell scripts, etc, on Linux.  Others are using alternate functionality -- for example, the Scintilla library doesn't work on Linux.  There are also places where Win32 API code is called for an underlying object, even though there's a .NET method.  I'm not sure if you're working around a bug of some sort or what.  One example of this can be found in ControlRedrawLock.  .NET provides SuspendLayout and ResumeLayout methods which work fine on Linux under Mono, but calling SendMessage obviously would not. :)  There's enough of this, especially the disabling of power shell, running the installers, etc., that I think conditional compilation does start to get messy.  I'm not looking forward to maintaining it, anyway. :)

On 2/16/2019 at 6:46 AM, floele said:

Are there any specific issues? Actually, I am open to releasing the code under a different license if that makes things easier because I'm not very fond of legal obstacles either.

The only one I'm aware of so far is the use of MyDownloader, which is under the Code Project Open License (CPOL).  See https://www.gnu.org/licenses/license-list.html#cpol for info on why it's incompatible with the GPL.  I've asked the original author if he would consider releasing it also under the GPL or another license which is compatible, but I haven't seen a response yet.  Fortunately, you appear to be using only its most basic functionality, which is simple enough to replicate, although still annoying.  Some licenses, like MIT and BSD-derived licenses don't require that you re-license the code in order to distribute it, so either of those would be compatible with CPOL code.  The GPL requires that everything on which the code depends either be GPL or in a separate library that came with the operating environment.  As I said, it's a grey area for original authors, and it's accepted practice to distribute an original work under the GPL with some dependent code that's not under the GPL, but it's always been clear that derivative works can't do that.

Share this post


Link to post
Share on other sites
9 hours ago, floele said:

OK, I think it's best to go through this bit for bit, so let's start with the pull requests :)

All right.  I just sent 4 pull requests for things that affect Windows, too, and don't require any kind of conditional compilation. :) It might make more sense to duplicate the issues in your repository, but that can look a little funny, too. :)  I tried to copy enough context to see why the change is made. 

Share this post


Link to post
Share on other sites

Floele, What's a better way to contact you about a question I've got?  I think JimH44 sent you one of my email addresses, so if email is good, just send me a note at that address, please.  But for now, here's the question...

Why are the menus built on MenuItem instead of the newer MenuStrip class?  One of the bugs recently reported to me is actually a bug in Mono, as far as I can determine, but one which (mostly) goes away if I use a MenuStrip.  But that's a lot of code changes, especially if there's a particular reason to avoid MenuStrip on Windows. Given that MenuStrip has been available since .NET 2.0, it seems like compatibility isn't an issue.

Thanks!

Share this post


Link to post
Share on other sites
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.

Loading...

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.