mercoledì 11 maggio 2011

VS 2008 C#: partial classes raggruppate

C# (e credo anche VB) permette di splittare il codice di una classe in diversi files (wow! quasi come il C++!) attraverso il costrutto delle partial classes.

Ad esempio supponiamo di creare un Form: l'IDE creerà per noi un file Form1.cs e un file Form1.Designer.cs (quest'ultima contenente il codice auto-generato dal designer).
Supponiamo ora di voler aggiungere alcuni controlli, e separare il codice della gestione degli eventi generati dai controlli per evitare di raggruppare in un unico file sorgente tutto il codice.
Creiamo quindi un file Form1.Eventi.cs, contenente tutto il codice relativo alla risposta agli eventi del Form.
L'editor di Visual Studio 2008 non è in grado di accorpare automaticamente il nuovo file come fa invece con il Form1.Designer.cs....

Per ottenere questo effetto, occorre editare a mano il file di progetto (quello con estensione .csproj nel caso di C#).

Alla sezione realtiva a Form1.Eventi.cs:


<Compile Include="Form1.Eventi.cs">
   <SubType>Form</SubType>
</Compile>


Va aggiunta una riga:


<Compile Include="Form1.Eventi.cs">
   <DependentUpon>Form1.cs</DependentUpon>
   <SubType>Form</SubType>
</Compile>


Con questa direttiva, ricaricando il progetto, l'IDE raggrupperà in un unico ramo dell'albero tutti componenti parziali di Form1

sabato 30 aprile 2011

Enjoy your freedom

E' disponibile l'ultima release di Kubuntu (http://www.kubuntu.org/): un'ulteriore passo avanti nell'UI e nella responsività del sistema.
In questa release vengono introdotti (tra gli altri) LibreOffice 3.3.2 (bello!), Firefox 4 e GCC 4.5.2.

martedì 15 marzo 2011

Macbuntu

Mac OS X Transformation Pack. Macbuntu is an open-source program, designed to transform Linux’s appearance and layout into a Mac OS X environment. Although Macbuntu is dedicated to Ubuntu Linux OS, it could be used in other OS based on Debian/GTK


http://sourceforge.net/projects/macbuntu/

venerdì 11 marzo 2011

GnuWin32


Ogni tanto me ne dimentico, per cui posto un memento:
GnuWin32 è un porting delle utility GNU per Wincrost

giovedì 3 marzo 2011

JPanel con contorni a gradiente

Un pannello in Java dotato di bordi destro e sinistro con una sfumatura a gradiente di 10px.
Per un utilizzo corretto, occorre aggiungere un bordo "vuoto" di 10px affinchè il contenuto del pannello non si sovrapponga alla banda colorata:

pannelloConGradiente.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 10, 1, 10));

Per ottenere un bordo più o meno denso, basta parametrizzare lo spessore.

import javax.swing.JPanel;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

public class PanelWithBorder extends JPanel
{
 protected void paintComponent( Graphics g )
 {
  if ( !isOpaque( ) )
  {
   super.paintComponent( g );
   return;
  }

  Graphics2D g2d = (Graphics2D)g;
  int w = getWidth( );
  int h = getHeight( );

  Color color1 = getBackground( );
  Color color2 = color1.darker( );

  GradientPaint gpSxBorder = new GradientPaint(0, 0, color2, 10, 0, color1 );
  GradientPaint gpDxBorder = new GradientPaint(w-10, 0, color1, w, 0, color2 );

  g2d.setPaint( gpSxBorder);
  g2d.fillRect( 0, 0, 10, h );

  g2d.setPaint( gpDxBorder );
  g2d.fillRect( w-10, 0, w, h );

  setOpaque( false );
  super.paintComponent( g );
  setOpaque( true );
 }
}