protected virtual void OnButtonRefreshClicked(object sender, System.EventArgs e)
        {
            Gtk.Builder    builder = new Gtk.Builder(null, "Mono.Addins.GuiGtk3.interfaces.ProgressDialog.ui", null);
            ProgressDialog pdlg    = new ProgressDialog(builder, builder.GetObject("ProgressDialog").Handle);

            pdlg.Show();
            pdlg.SetMessage(AddinManager.CurrentLocalizer.GetString("Updating repository"));
            bool updateDone = false;

            Thread t = new Thread(delegate() {
                try {
                    service.Repositories.UpdateAllRepositories(pdlg);
                } finally {
                    updateDone = true;
                }
            });

            t.Start();
            while (!updateDone)
            {
                while (Gtk.Application.EventsPending())
                {
                    Gtk.Application.RunIteration();
                }
                Thread.Sleep(50);
            }
            pdlg.Destroy();
            LoadGallery();
            LoadUpdates();
        }
示例#2
0
        protected virtual void OnButtonRefreshClicked(object sender, System.EventArgs e)
        {
            Gtk.Builder builder = new Gtk.Builder (null, "Mono.Addins.GuiGtk3.interfaces.ProgressDialog.ui", null);
            ProgressDialog pdlg = new ProgressDialog (builder, builder.GetObject ("ProgressDialog").Handle);
            pdlg.Show ();
            pdlg.SetMessage (AddinManager.CurrentLocalizer.GetString ("Updating repository"));
            bool updateDone = false;

            Thread t = new Thread (delegate () {
                try {
                    service.Repositories.UpdateAllRepositories (pdlg);
                } finally {
                    updateDone = true;
                }
            });
            t.Start ();
            while (!updateDone) {
                while (Gtk.Application.EventsPending ())
                    Gtk.Application.RunIteration ();
                Thread.Sleep (50);
            }
            pdlg.Destroy ();
            LoadGallery ();
            LoadUpdates ();
        }
		protected void OnAdd (object sender, EventArgs e)
		{
			Gtk.Builder builder = new Gtk.Builder (null, "Mono.Addins.GuiGtk3.interfaces.NewSiteDialog.ui", null);
			NewSiteDialog dlg = new NewSiteDialog (builder, builder.GetObject ("NewSiteDialog").Handle);
			try {
				if (dlg.Run ()) {
					string url = dlg.Url;
					if (!url.StartsWith ("http://") && !url.StartsWith ("https://") && !url.StartsWith ("file://")) {
						url = "http://" + url;
					}
					
					try {
						new Uri (url);
					} catch {
						Services.ShowError (null, "Invalid url: " + url, null, true);
					}
					
					if (!service.Repositories.ContainsRepository (url)) {
						builder = new Gtk.Builder (null, "Mono.Addins.GuiGtk3.interfaces.ProgressDialog.ui", null);
						ProgressDialog pdlg = new ProgressDialog (builder, builder.GetObject ("ProgressDialog").Handle);
						pdlg.Show ();
						pdlg.SetMessage (AddinManager.CurrentLocalizer.GetString ("Registering repository"));
						
						bool done = false;
						AddinRepository rr = null;
						Exception error = null;
						
						ThreadPool.QueueUserWorkItem (delegate {
							try {
								rr = service.Repositories.RegisterRepository (pdlg, url, true);
							} catch (System.Exception ex) {
								error = ex;
							} finally {
								done = true;
							}
						});
						
						while (!done) {
							if (Gtk.Application.EventsPending ())
								Gtk.Application.RunIteration ();
							else
								Thread.Sleep (100);
						}

						pdlg.Destroy ();
						
						if (pdlg.HadError) {
							if (rr != null)
								service.Repositories.RemoveRepository (rr.Url);
							return;
						}
						
						if (error != null) {
							Services.ShowError (error, "The repository could not be registered", null, true);
							return;
						}
						
						AppendRepository (rr);
					}
				}
			} finally {
				dlg.Destroy ();
			}
		}
        protected void OnAdd(object sender, EventArgs e)
        {
            Gtk.Builder   builder = new Gtk.Builder(null, "Mono.Addins.GuiGtk3.interfaces.NewSiteDialog.ui", null);
            NewSiteDialog dlg     = new NewSiteDialog(builder, builder.GetObject("NewSiteDialog").Handle);

            try {
                if (dlg.Run())
                {
                    string url = dlg.Url;
                    if (!url.StartsWith("http://") && !url.StartsWith("https://") && !url.StartsWith("file://"))
                    {
                        url = "http://" + url;
                    }

                    try {
                        new Uri(url);
                    } catch {
                        Services.ShowError(null, "Invalid url: " + url, null, true);
                    }

                    if (!service.Repositories.ContainsRepository(url))
                    {
                        builder = new Gtk.Builder(null, "Mono.Addins.GuiGtk3.interfaces.ProgressDialog.ui", null);
                        ProgressDialog pdlg = new ProgressDialog(builder, builder.GetObject("ProgressDialog").Handle);
                        pdlg.Show();
                        pdlg.SetMessage(AddinManager.CurrentLocalizer.GetString("Registering repository"));

                        bool            done  = false;
                        AddinRepository rr    = null;
                        Exception       error = null;

                        ThreadPool.QueueUserWorkItem(delegate {
                            try {
                                rr = service.Repositories.RegisterRepository(pdlg, url, true);
                            } catch (System.Exception ex) {
                                error = ex;
                            } finally {
                                done = true;
                            }
                        });

                        while (!done)
                        {
                            if (Gtk.Application.EventsPending())
                            {
                                Gtk.Application.RunIteration();
                            }
                            else
                            {
                                Thread.Sleep(100);
                            }
                        }

                        pdlg.Destroy();

                        if (pdlg.HadError)
                        {
                            if (rr != null)
                            {
                                service.Repositories.RemoveRepository(rr.Url);
                            }
                            return;
                        }

                        if (error != null)
                        {
                            Services.ShowError(error, "The repository could not be registered", null, true);
                            return;
                        }

                        AppendRepository(rr);
                    }
                }
            } finally {
                dlg.Destroy();
            }
        }