[Gtk-sharp-list] Gnome Druid and DruidPages in CSharp
Arx Cruz
arxcruz at gmail.com
Fri Feb 16 09:43:23 EST 2007
I have this code, may help you
The text language is not english.
May wont compile if you dont remove some methods calls
using System;
using System.IO;
using Gtk;
using Gnome;
using Acessa.ServiceFactory;
using Acessa.Entidades;
using Acessa.Core.Util;
using System.Diagnostics;
namespace Acessa.Importacao {
public class AssistenteImportacao {
private Gnome.Druid druid;
private DruidPageEdge pageApresentacao;
private DruidPageEdge pageFinal;
private DruidPageStandard pageSelCidadao;
private DruidPageStandard pageSelHome;
private Gtk.Entry usuId;
private Label nomeCidadao;
private Label loginCidadao;
private TreeUnix listaUsuarios;
private Gnome.App druidApp;
private Gtk.Entry senhaCidadao;
private Gtk.Entry nomePai;
private Gtk.Entry nomeMae;
public AssistenteImportacao() {
InitializeComponents();
}
private void InitializeComponents() {
druid = new Druid();
pageApresentacao = new DruidPageEdge(EdgePosition.Start, true,
"Assistente de exportação de usuários",
"Bem vindo ao Assistente de exportação de usuários\n" +
"Aqui você irá exportar todos os dados do cidadão que\n" +
"não estão ainda no novo formato estabelecido pelo\n" +
"Programa Identidade Digital.\n" +
"Lembre-se: esta irá mover todo o diretório home do usuário,\n" +
"Criará um novo login no padrão NomeDDMMAAAA e é
Irreversível.", null, null, null);
usuId = new Gtk.Entry();
usuId.TextInserted += new TextInsertedHandler(OnUsuIdInsertText);
usuId.Changed += OnUsuIdChanged;
pageSelCidadao = new DruidPageStandard("Selecione o id do cidadão",
null, null);
pageSelCidadao.AppendItem("_Informe o id do usuário", usuId, "O id
do usuário cadastrado no Acessa");
pageSelCidadao.Prepared += OnPageSelCidadaoPrepared;
pageSelCidadao.NextClicked += OnPageSelCidadaoNext;
pageSelHome = new DruidPageStandard("Selecione qual o diretório a
ser exportado", null, null);
pageSelHome.AppendItem("", CreateHomeSel(), "Lembre-se que esta
operação não tem como desfazer!");
pageSelHome.Prepared += OnPageSelHomePrepared;
pageSelHome.NextClicked += OnPageSelHomeNext;
pageFinal = new DruidPageEdge(EdgePosition.Finish, true,
"Obrigado", "O Cidadão foi exportado com sucesso", null, null, null);
pageFinal.FinishClicked += OnPageFinalClicked;
druid.Cancel += OnDruidCancel;
druid.AppendPage(pageApresentacao);
druid.AppendPage(pageSelCidadao);
druid.AppendPage(pageSelHome);
druid.AppendPage(pageFinal);
druidApp = new Gnome.App("AcessaDesktop", "Assistente de Exportação");
druidApp.DeleteEvent += OnDruidAppDeleteEvent;
druidApp.Contents = druid;
druidApp.ShowAll();
}
private void OnPageFinalClicked(object o, FinishClickedArgs args) {
druidApp.Destroy();
}
private void OnPageSelCidadaoNext(object o, NextClickedArgs args) {
try {
GetLogin(Int32.Parse(usuId.Text));
} catch(FormatException e) {
}
}
private void OnDruidAppDeleteEvent(object o, DeleteEventArgs args) {
druidApp.Destroy();
}
private void OnDruidCancel(object o, EventArgs args) {
druidApp.Destroy();
}
private void OnPageSelHomeNext(object o, NextClickedArgs args) {
TreeIter iter;
TreeModel model;
listaUsuarios.Selection.GetSelected(out model, out iter);
string val = (string) model.GetValue (iter, 1);
try {
Acessa.ServiceFactory.CidadaoBO.UpdatePaiMae(Int32.Parse(usuId.Text),
nomePai.Text, nomeMae.Text);
Directory.Move(val, "/home/" + loginCidadao.Text);
LibAcessa.CreateUser(loginCidadao.Text, senhaCidadao.Text,
nomeCidadao.Text, "users", false);
Process p = System.Diagnostics.Process.Start("chown " +
loginCidadao.Text + ".users /home/" + loginCidadao.Text + " -R");
p.WaitForExit();
LibAcessa.DeleteUser((string) model.GetValue(iter, 0));
} catch (DllNotFoundException e) {
new Acessa.Core.Util.Mensagem("Erro", "LibAcessa", "É
necessário a biblioteca libacessa.so para executar a importação",
Gtk.Stock.DialogError).Run();
} catch (UnauthorizedAccessException e) {
new Acessa.Core.Util.Mensagem("Erro", "LibAcessa", "Você
não tem permissão para mover o diretório",
Gtk.Stock.DialogError).Run();
} catch (DirectoryNotFoundException e) {
new Acessa.Core.Util.Mensagem("Erro", "LibAcessa",
"Diretório home do usuário a ser exportado não existe",
Gtk.Stock.DialogError).Run();
}
}
private void OnUsuIdInsertText(object o, TextInsertedArgs args) {
if(!System.Char.IsDigit((char)args.Text[0])) {
usuId.DeleteText(args.Position-1, args.Position);
}
}
private void OnUsuIdChanged(object o, EventArgs args) {
SetButtons();
}
private void OnPageSelHomePrepared(object o, PreparedArgs args) {
SetHome();
}
private void OnPageSelCidadaoPrepared(object o, PreparedArgs args) {
SetButtons();
}
private void SetHome() {
TreeIter iter;
TreeModel model;
if(loginCidadao.Text.Equals("") ||
nomeCidadao.Text.Equals("") ||
!listaUsuarios.Selection.GetSelected(out model, out iter) ||
senhaCidadao.Text.Length == 0 ||
nomePai.Text.Length == 0 ||
nomeMae.Text.Length == 0) {
druid.SetButtonsSensitive(true, false, true, false);
} else {
druid.SetButtonsSensitive(true, true, true, false);
}
}
private void OnSenhaCidadaoChanged(object o, EventArgs args) {
SetHome();
}
private VBox CreateHomeSel() {
VBox vbox = new VBox();
nomePai = new Gtk.Entry();
nomePai.Changed += OnSenhaCidadaoChanged;
nomeMae = new Gtk.Entry();
nomeMae.Changed += OnSenhaCidadaoChanged;
nomeCidadao = new Label("");
nomeCidadao.Xalign = 0.0f;
loginCidadao = new Label("");
loginCidadao.Xalign = 0.0f;
listaUsuarios = new TreeUnix();
senhaCidadao = new Gtk.Entry();
senhaCidadao.Visibility = false;
senhaCidadao.Changed += OnSenhaCidadaoChanged;
Label label;
listaUsuarios.Selection.Changed += OnSelectionChanged;
ScrolledWindow scrolled = new ScrolledWindow();
scrolled.Add(listaUsuarios);
label = new Label("<b>Nome do usuário:</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
vbox.PackStart(nomeCidadao, false, false, 0);
label = new Label("<b>Login do usuário:</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
vbox.PackStart(loginCidadao, false, false, 0);
label = new Label("<b>Senha do usuário:</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
HBox hbox = new HBox();
hbox.Spacing = 6;
hbox.PackStart(senhaCidadao, false, false, 0);
vbox.PackStart(hbox, false, false, 0);
label = new Label("<b>Nome do pai:</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
hbox = new HBox();
hbox.Spacing = 6;
hbox.PackStart(nomePai, true, true, 0);
vbox.PackStart(hbox, true, true, 0);
label = new Label("<b>Nome da mãe:</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
hbox = new HBox();
hbox.Spacing = 6;
hbox.PackStart(nomeMae, true, true, 0);
vbox.PackStart(hbox, true, true, 0);
label = new Label("<b>Selecione o nome do usuário a ser exportado</b>");
label.UseMarkup = true;
label.Xalign = 0.0f;
vbox.PackStart(label, false, false, 0);
vbox.PackStart(scrolled, true, true, 0);
return vbox;
}
private void OnSelectionChanged(object o, EventArgs args) {
TreeIter iter;
TreeModel model;
if (((TreeSelection)o).GetSelected (out model, out iter)) {
if(!(loginCidadao.Text.Equals("") || nomeCidadao.Text.Equals("")
|| senhaCidadao.Text.Equals(""))) {
druid.SetButtonsSensitive(true, true, true, false);
}
}
SetHome();
}
private void GetLogin(int id) {
Cidadao cidadao = new Cidadao();
try {
cidadao = Acessa.ServiceFactory.CidadaoBO.GetCidadaoNomeData(id);
cidadao.Id = id;
nomeCidadao.Text = cidadao.Nome;
nomePai.Text = cidadao.Pai;
nomeMae.Text = cidadao.Mae;
string login = Acessa.Core.Util.Util.GetLogin(cidadao.Nome.Trim(),
cidadao.DataNascimento.ToUniversalTime());
loginCidadao.Text = "<span color=\"blue\"><b>" +
Acessa.Core.Util.Util.UserAvailable(login) + "</b></span>";
loginCidadao.UseMarkup = true;
} catch (NullReferenceException e) {
loginCidadao.Text = "";
nomeCidadao.Text = "Usuário não encontrado";
druid.SetButtonsSensitive(true, false, true, false);
} catch (Exception e) {
loginCidadao.Text = "";
nomeCidadao.Text = "Usuário não encontrado";
druid.SetButtonsSensitive(true, false, true, false);
}
}
private void SetButtons() {
if(usuId.Text.Length == 0) {
druid.SetButtonsSensitive(true, false, true, false);
} else {
druid.SetButtonsSensitive(true, true, true, false);
}
}
}
}
On 2/16/07, Stojance Dimitrovski <sdimitrovski at gmail.com> wrote:
> I need a Gnome Druid for my application and I can't find a thing about it.
> The Mono documentation doesn't provide much information and it's quite
> frustrating. Can you help me on how to add a Gnome Druid to my application
> and how to add elements inside the DruidPages?
>
> Thanks!
>
> _______________________________________________
> Gtk-sharp-list maillist - Gtk-sharp-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
>
>
--
"A fé remove montanhas, mas eu prefiro a dinamite"
More information about the Gtk-sharp-list
mailing list