SharpDevelop

Miscellaneous Forums/General Discussion/SharpDevelop

http://www.icsharpcode.net/OpenSource/SD/

SharpDevelop is a open source IDE for C Sharp (C#)

Anyone have any experience with it? I've been playing with it for a bit (I needed a C# IDE, notepad++ was getting old).


I'm amazed how easy creating windows applications is with the designer, I just about knocked together a web browser, and i've only been playing with it for a little over a half hour.

What do you think about it?

I've had some peeps tell me this is an incredible tool even though I personally have never played with it. Let us know your experience with it after you've had it for a while. :)

Its quite incredible, I've always pure coded my GUI's, now I see that with tools like this it's a complete waste of time.

The designer basicly makes making the GUI and connecting events to functions super easy.

From there you just code functionality.

I'm almost done with a full featured calculator, i'll post it in this thread when I'm done.

Its alot faster visualy placing gadgets then recompiling a million times as you set pixel values.

Its the same idea for wxMax and formbuilder

Its the same idea for wxMax and formbuilder
Just.. not all in one complete package..

as promised, the calculator...



everything works on it, I spent a total of an hour and 45 minutes.

1 hour and 15 minutes was coding functionality.

the rest of the time (only 30 minutes) was throwing together the GUI

it looks like crap, because I used bad images, the title bar is the fence image and the close button is the little purple box.

I set the window to have no frame and I used "Picture boxes" with mousedown/up/move events to enable dragging it around and closing it.

So has anyone else tried sharpdevelop? Its an awsome IDE

what's mono like? does it work pretty well? When you 'compile' down using mono do you need to distribute any runtime libs like .net or is it all self sufficient?

what's mono like? does it work pretty well?
Depends on what you want to do. But yeah.

When you 'compile' down using mono do you need to distribute any runtime libs like .net or is it all self sufficient?
You can include the mono libraries in your distribution, but doing so probably isn't the best idea in the world.


do you need to distribute any runtime libs like .net or is it all self sufficient?


The day is coming when people will not be so hung up on this.

I can't wait.

If your developing for windows you have a REALLY high chance that .net is on their computer.

1. Vista ships with it standard
2. Its required for most of the MS office suit
3. More and more programs use it.

At least thats what I read :)


And you are allowed to distribute .net with your app if you choose.


I don't even know what mono is? :D

And another cool thing about SharpDevelop is they had visual studio in mind when they made it. So I can follow a visual studio tutorial and its almost the same.

Although it seems more simple.

I dont have .net on my PC but then again, it's a fossil.

If I was selling it, I would simply put a link to the .net DL in the system requirements

the .net framework only requires about 400MB of space

Here's a possibly dumb question:

Can C# create DLLs that can be used with bmax?

And can C# be used with bmax directly like C++ ?(probably not)

Sorry still a C# noob, I've read books so I know how to code in the language, but I still don't know alot of it's features. But I'm sure liking this .net stuff, it makes everything easy.

C++/CLI can, not sure about C#. Maybe you can use C++/CLI to wrap it?

hmm, possible


I love creating these custom windows. And get this, your transparency key (the color that is defined as being transparent in you window) also counts for gadgets, notice the loading bar and web browser:



.Net was not on my XP.
The last 'linked dll' that tried to download it I stopped, then deleted the app.
Silly idea. I expect apps to be self-sufficient, especially if I'm buying them.

Silly idea. I expect apps to be self-sufficient, especially if I'm buying them.
I bet you install all the latest versions of DirectX, though?

*confused* does anyone know what C# uses for games? obviously DX or XNA or something like that, but I cant figure out if theres some canvas control or if its something else.

So what does C# use to render onto windows?

You have a number of options for game libs in c#.

The tao framework is a bunch of bindings for native libraries, that are game or multimedia related( sdl, opengl, openal, glfw, etc ). Its what I use. The tao framework also includes an opengl canvas control that you can use on window forms.

There's also slimdx, which is a non official binding to directx, since microsoft no longer pushes managed dx.

I've also seen bindings to hge, irrlicht, and <insert your game engine here>.

.NET lets you interact with native libraries, so if theres something out there you want to use, chances are its got a managed binding. Or you can make your own binding.

interesting

Very cool, thanks for the link to the tao framework, its great.

What exactly IS a managed binding? And how do you write one?

Sharpdevelop is quite amazing, when I add the OGL libs from the tao framework to my "project" SD automatically adds the OGL canvas control to the toolbox - So you can use it in the visual designer. It also has all the visual event connecting, and gadget properties like the other gadgets.

I've already made a spinning cube.


I'm still not completely sure what a managed binding does - but its nice to be able to use openGL - the experience isn't that much unlike bmax+raw OGL when you get used to the curly brackets, semi-colons, and REALLY heavy OOP.

binding = just means the glue that lets .net talk to native libraries. Google for .net platform invoke. At times theres some messyness to be dealt with, but at its most basic, it looks something like so:
using System;
using System.Runtime.InteropServices;

public static class SomeGameEngineImUsing
{
	[DllImport("SomeGameEngine.dll")]
	public static extern void Init();
	
	[DllImport("SomeGameEngine.dll")]
	public static extern Game MaekFPS(FPSType ftype);
	
	//...and so on
}


cool, thanks, so its just like wrapping a dll into a module for bmax.

Hey, I found this strange, maybe someone knows a better way:

The OGL canvas gadget that is in Tao.OpenGl does not repaint by itself. So to solve this I used <canvasNAME>.Invalidate();

It works fine until you start putting other gadgets(besides the canvas) on the window, it makes them look wierd... By wierd I mean missing everything but the white on the text gadgets.

here's my code I use for initalize OGL and painting on the canvas...

		public void InitOpenGL()
		{
			simpleOpenGlControl1.InitializeContexts();
			Gl.glViewport(0,0,800,500);
			Gl.glClearColor(0, 0, 0, 0);
			
			Gl.glMatrixMode(Gl.GL_PROJECTION);
			Gl.glLoadIdentity();

			Glu.gluPerspective(45.0f,1.6f,0.1f,100.0f);
			
			Gl.glMatrixMode(Gl.GL_MODELVIEW);
			Gl.glLoadIdentity();
			
		}
		
		
		void SimpleOpenGlControl1Paint(object sender, PaintEventArgs e)
		{
			Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
			Gl.glPushMatrix();
			Gl.glLoadIdentity();
			
			Gl.glTranslatef(0.0f, 0.0f,-7.0f);
			Gl.glRotatef(rot,0.0f,1.0f,0.0f);
  			Gl.glRotatef(rot,1.8f,1.0f,1.2f);
  			
			Gl.glBegin(Gl.GL_QUADS);
	
				//Front
				Gl.glVertex3f(-1.5f, -1.0f, 1.5f);
				Gl.glVertex3f(1.5f, -1.0f, 1.5f);
				Gl.glVertex3f(1.5f, 1.0f, 1.5f);
				Gl.glVertex3f(-1.5f, 1.0f, 1.5f);
				
				//Right
				Gl.glVertex3f(1.5f, -1.0f, -1.5f);
				Gl.glVertex3f(1.5f, 1.0f, -1.5f);
				Gl.glVertex3f(1.5f, 1.0f, 1.5f);
				Gl.glVertex3f(1.5f, -1.0f, 1.5f);
				
				//Back
				Gl.glVertex3f(-1.5f, -1.0f, -1.5f);
				Gl.glVertex3f(-1.5f, 1.0f, -1.5f);
				Gl.glVertex3f(1.5f, 1.0f, -1.5f);
				Gl.glVertex3f(1.5f, -1.0f, -1.5f);
				
				//Left
				Gl.glVertex3f(-1.5f, -1.0f, -1.5f);
				Gl.glVertex3f(-1.5f, -1.0f, 1.5f);
				Gl.glVertex3f(-1.5f, 1.0f, 1.5f);
				Gl.glVertex3f(-1.5f, 1.0f, -1.5f);
			
			Gl.glEnd();
			Gl.glPopMatrix();
			Gl.glFlush();
			//**************************************************
			simpleOpenGlControl1.Invalidate();//repaints the canvas
			//**************************************************
			rot += 1.6f;
		}


Aha, embarassing, I found a solution:

1. Create a timer
2. enable it and create a event handler for its tick event
3. enter:

		void UpdaterTick(object sender, EventArgs e)
		{
			simpleOpenGlControl1.Refresh();
			rot += 1.6f;//updaterotation
		}