예제 #1
0
            public void on_open_file_activate(System.Object b,
							   EventArgs e)
            {
                FileFilter pgn_filter = new FileFilter ();
                pgn_filter.Name =
                    Catalog.GetString ("PGN Files");
                pgn_filter.AddCustom (FileFilterFlags.
                              Filename,
                              new
                              FileFilterFunc
                              (PGNFileFilterFunc));
                FileFilter all_filter = new FileFilter ();
                all_filter.Name =
                    Catalog.GetString ("All Files");
                all_filter.AddCustom (FileFilterFlags.
                              Filename,
                              new
                              FileFilterFunc
                              (AllFileFilterFunc));
                FileFilter[]filters = new FileFilter[]
                {
                pgn_filter, all_filter};
                file = viewer.AskForFile (viewer.Window, Catalog.GetString ("Choose the file to open"), true, filters);	// true for open
                if (file == null)
                    return;

                LoadGames (file);
            }
예제 #2
0
    /*
     * public void LoadCEStage(string filename, bool findRawForCEStage)
     * {
     *      try
     *      {
     *              mStage.LoadStage(filename);
     *
     *              string raw_filename; int prescale = 2;
     *              if (mStage.Prescale != 0) prescale = mStage.Prescale;
     *
     *              if (findRawForCEStage && MainClass.FindRawsForCestageAndAskToOpen(filename, out raw_filename, ref prescale))
     *              {
     *                      mStage.AskLoadImage(raw_filename, prescale);
     *              }
     *      }
     *      catch (StageDeserializationException sdex)
     *      {
     *              Gtk.MessageDialog md = new Gtk.MessageDialog(
     *                      this, DialogFlags.Modal,
     *                      MessageType.Error, ButtonsType.Ok,
     *                      false, "Can't load stage from the file \"{0}\".\n{1}", filename, sdex.Message);
     *
     *              md.Title = MainClass.APP_NAME;
     *
     *              md.Run();
     *              md.Destroy();
     *      }
     * }
     */
    public bool ShowLoadImageDialog()
    {
        if (mStage.TheUIState == UIState.Loading)
        {
            Gtk.MessageDialog md = new Gtk.MessageDialog(this, DialogFlags.Modal,
                                                         MessageType.Error, ButtonsType.Ok,
                                                         "Loading is in progress");
            md.Title = MainClass.APP_NAME;
            md.Run();
            md.Destroy();
        }
        else
        {
            Gtk.FileChooserDialog fcd = new Gtk.FileChooserDialog("Open RAW image",
                                                                  this,
                                                                  FileChooserAction.Open,
                                                                  "Cancel", ResponseType.Cancel,
                                                                  "Open", ResponseType.Accept);

            // Filter for RAWs
            FileFilter ff = new FileFilter();

            ff.AddCustom(FileFilterFlags.Filename, delegate(Gtk.FileFilterInfo ffi) {
                return(RawLoader.IsRaw(ffi.Filename));
            });
            ff.Name = "RAW image";

            fcd.AddFilter(ff);

            // Setting current folder to stage file folder or to RAW file folder
            if (mStage.StageFileName != null && mStage.StageFileName != "" &&
                !fcd.SetCurrentFolder(System.IO.Path.GetDirectoryName(mStage.StageFileName)))
            {
                fcd.SetCurrentFolder(System.IO.Path.GetDirectoryName(mStage.RawFileName));
            }



            // Adding preview widget

            ReceiptSelectorWidget rsw = new ReceiptSelectorWidget();
            RawPreviewWidget      rpw = new RawPreviewWidget();

            // Adding options widget

            PreScaleSelectorWidget pssw = new PreScaleSelectorWidget();
            pssw.Value = 2;
            if (mStage.Prescale != 0)
            {
                pssw.Value = mStage.Prescale;
            }

            VBox preview_box = new VBox(false, 4);
            preview_box.PackStart(rpw, true, true, 0);
            preview_box.ShowAll();
            fcd.PreviewWidget = preview_box;

            HBox options_box = new HBox(false, 20);
            options_box.PackStart(rsw, true, true, 0);
            options_box.PackEnd(pssw, false, true, 0);
            fcd.ExtraWidget = options_box;
            options_box.ShowAll();

            // Adding events

            fcd.UpdatePreview += delegate {
                rpw.Filename = fcd.Filename;
            };
            fcd.SelectionChanged += delegate {
                rpw.Filename    = fcd.Filename;
                rsw.RawFileName = fcd.Filename;
            };
            rpw.FileIsGoodChanged += delegate {
                options_box.Sensitive   = rpw.FileIsGood;
                fcd.PreviewWidgetActive = rpw.FileIsGood;
            };


            if (mStage.RawFileName != null)
            {
                fcd.SetFilename(mStage.RawFileName);
                rpw.Filename            = mStage.RawFileName;
                rsw.RawFileName         = mStage.RawFileName;
                fcd.PreviewWidgetActive = rpw.FileIsGood;
                options_box.Sensitive   = rpw.FileIsGood;
            }

            string filename = ""; int prescale = 2;
            bool   ok = false;

            if (fcd.Run() == (int)Gtk.ResponseType.Accept)
            {
                ok       = true;
                filename = fcd.Filename;
                prescale = pssw.Value;
            }

            fcd.Destroy();

            if (ok)
            {
                if (mStage.RawFileName != filename)
                {
                    mStage.AskLoadImage(filename, prescale);
                }
                mStage.LoadStage(rsw.SelectedReceiptFileName);
                return(true);
            }
        }
        return(false);
    }