Author Topic: Gtk.MessageDialog  (Read 2704 times)

tonywhite

  • Guest
Gtk.MessageDialog
« on: June 24, 2010, 02:31:51 PM »
ATTENZIONE: MESSAGGIO PER NABABBI  :asd:

Ho appena iniziato ad utilizzare C# e GTK con MonoDevelop ed ho avuto un piccolo problema con i messaggi di dialogo. In rete ho trovato molte informazioni, ma niente che possa chiarire la mente contorta di un nabbo (io).

Innanzitutto i messaggi devono essere portati in Run() perché devono restituire la risposta (Si, No, Ok, ecc...) e si devono chiudere con Destroy() altrimenti il programma crasha con il messaggio successivo. Quindi niente Dott. Show() e Mr. Hide()... ci diventerete matti.

Siccome ogni volta è necessario inizializzare il messaggio è fastidioso riscrivere tutto d'accapo. Con questa piccolissima guida conoscerete una cosa essenziale della programmazione: la modularità . Se un programma non è modulare aumentano gli errori umani e il debug è più complesso.

Code: [Select]
using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
public MainWindow() : base(Gtk.WindowType.Toplevel)
{
Build();
}

/*
* Chiude la finestra
*/
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
esci();
a.RetVal = true;
}

/*
* Semplifica la gestione dei messaggi
*/
private ResponseType messaggio (String corpoMessaggio, String titoloMessaggio, Gtk.MessageType tipoMessaggio, Gtk.ButtonsType bottoniMessaggio)
{
Gtk.MessageDialog msg = new Gtk.MessageDialog(this, DialogFlags.Modal, tipoMessaggio, bottoniMessaggio, corpoMessaggio);
msg.Title = titoloMessaggio;
ResponseType risposta = (ResponseType) msg.Run();
msg.Destroy();
return risposta;
}

/*
* Esce dall'applicazione?
*/
private void esci()
{
ResponseType risposta = messaggio("Vuoi uscire dall'applicazione?","Domanda", MessageType.Question, ButtonsType.YesNo);
if (risposta == ResponseType.Yes)
{
Application.Quit();
}
else if (risposta == ResponseType.No)
{
// Niente
}
}

/*
* Click dei bottoni
*/
protected virtual void ClickBtnAvvia (object sender, System.EventArgs e)
{
ResponseType risposta = messaggio("Avvia l'acquisizione","Informazione", MessageType.Info, ButtonsType.Ok);
if (risposta == ResponseType.Ok)
{
txtAnteprima.Bueffe:r.Text += "Messaggio: Ok\n";
}
else if (risposta == ResponseType.DeleteEvent)
{
txtAnteprima.Bueffe:r.Text += "Messaggio: Ics\n";
}
}

protected virtual void ClickBtnFerma (object sender, System.EventArgs e)
{
txtAnteprima.Bueffe:r.Text += "Ferma l'acquisizione\n";
}

protected virtual void ClickBtnSalva (object sender, System.EventArgs e)
{
txtAnteprima.Bueffe:r.Text += "Salva i dati acquisiti\n";
}

protected virtual void ClickBtnOpzioni (object sender, System.EventArgs e)
{
txtAnteprima.Bueffe:r.Text += "Modifica le opzioni di connessione alla seriale\n";
}

protected virtual void ClickBtnEsci (object sender, System.EventArgs e)
{
esci();
}
}

Per far funzionare la domanda alla chiusura della finestra ho implementato il segnale DeleteEvent().

(click to show/hide)

Buona programmazione

turlando

  • Guest
Re:Gtk.MessageDialog
« Reply #1 on: June 24, 2010, 08:24:06 PM »
Simmaaaa... tutta sta robbbba a noi che ci frega?  :rotfl:

Scherzi a parte... appena ho un po' di voglia mi metto a studiare il codice e se mi piace abbastanza la struttura del linguaggio continuo...

(click to show/hide)

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #2 on: June 24, 2010, 08:27:00 PM »
Ti prego, almeno se scrivi un programma con la tray fa in modo che si integri :asd: :asd:

turlando

  • Guest
Re:Gtk.MessageDialog
« Reply #3 on: June 24, 2010, 08:28:50 PM »
Ti prego, almeno se scrivi un programma con la tray fa in modo che si integri :asd: :asd:

No, fai le tue prove direttamente su banshee. Ti prego  :rotfl:

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #4 on: June 24, 2010, 11:37:18 PM »
muahahahah concordo XD

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #5 on: June 24, 2010, 11:38:21 PM »
Ti imploriamo tutti :asd: :asd:

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #6 on: June 24, 2010, 11:39:27 PM »
io comunque ci metterei un
<include stdio.h> :ysy:



:lki:

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #7 on: June 24, 2010, 11:41:21 PM »
io comunque ci metterei un
<include stdio.h> :ysy:



:lki:

Macch?©

#include <iostream>

:lki: :lki:

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #8 on: June 24, 2010, 11:43:53 PM »
from Math import *
 u_U

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #9 on: June 24, 2010, 11:45:36 PM »
program input_output(input, output);

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #10 on: June 24, 2010, 11:46:32 PM »
utile :asd:
ma devo tirare in ballo le lambda functions di python o la finiamo qua? :asd:

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #11 on: June 24, 2010, 11:48:29 PM »
utile :asd:
ma devo tirare in ballo le lambda functions di python o la finiamo qua? :asd:

Direi finirla qua



























Attacco a sorpresa!
Code: [Select]
IDEAL
MODEL SMALL
STACK 100h
DATASEG
    HW      DB      "hello, world", 13, 10, '$'
CODESEG
Begin:
    MOV AX, @data
    MOV DS, AX
    MOV DX, OFFSET HW
    MOV AH, 09H
    INT 21H
    MOV AX, 4C00H
    INT 21H
END Begin

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #12 on: June 24, 2010, 11:51:08 PM »
si vabbè, finiamola in assembly :asd:

ps:

Code: [Select]
lambda x: 1 / (1 + e**(-x))
« Last Edit: June 24, 2010, 11:53:48 PM by sgnablo »

AirPort

  • Guest
Re:Gtk.MessageDialog
« Reply #13 on: June 24, 2010, 11:54:00 PM »
Assembly batte tutto :asd: :asd:

sgnablo

  • Guest
Re:Gtk.MessageDialog
« Reply #14 on: June 24, 2010, 11:54:38 PM »
posso anche mettere assembler mips, se vuoi :asd:

Code: [Select]
                     
    addi $29, $29, -12
    sw $2, 0($29)
    sw $15, 4($29)
    sw $16, 8($29

:asd:
« Last Edit: June 24, 2010, 11:57:38 PM by sgnablo »