コード例 #1
0
ファイル: ImageSelection.cs プロジェクト: radtek/epresenter
        private void btnRenameCat_Click(object sender, EventArgs e)
        {
            if (ixItemSelected < 1)
            {
                return;
            }
            string catname = _categories.Items[ixItemSelected].ToString();
            Prompt p       = new Prompt();

            p.Text           = Loc.Get("Rename category");
            p.lblPrompt.Text = Loc.Get("Please enter a new name for the category:");
            if (p.ShowDialog() == DialogResult.OK)
            {
                string newname = p._input.Text;
                if (newname != "")
                {
                    if (_categories.Items.Contains(newname))
                    {
                        MessageBox.Show(Loc.Get("Name is already in use"), Loc.Get("Error"));
                        return;
                    }

                    PhotoInfo.RenameCategory(catname, newname);
                    LoadCategories(); // refresh the list

                    // update the current category for the photo prevew container
                    photoPreviewContainer1.CurrentCategory = newname;
                }
            }
        }
コード例 #2
0
ファイル: SongProjectView.cs プロジェクト: radtek/epresenter
 private void UpdateInfoLabel()
 {
     if (proj != null)
     {
         lblInfo.Text = String.Format(Loc.Get("Slide {0} of {1}"), proj.currentSlideNum + 1, proj.songSlides.Count);
     }
 }
コード例 #3
0
        static void Main()
        {
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.ThreadExit      += new EventHandler(Application_ThreadExit);

            // Single instance only
            Program.onlyOne = new Mutex(true, "SingleInstanceEPresenter");
            if (!Program.onlyOne.WaitOne(0, false))
            {
                MessageBox.Show(Loc.Get("ePresenter is already running"), "ePresenter");
                try
                {
                    Process[] p = System.Diagnostics.Process.GetProcessesByName("LaunchEP");
                    if (p.Length > 0)
                    {
                        p[0].Kill();
                    }
                }
                catch { /*System.Diagnostics.Trace.WriteLine("Failed to close the splash");*/ }
                return;
            }

            Program.ConfigHelper = new ConfigHelper();
            global::EmpowerPresenter.Properties.Resources.Culture  = new System.Globalization.CultureInfo(Program.ConfigHelper.CurrentLanguage);
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Program.ConfigHelper.CurrentLanguage);
            Loc.culture = Program.ConfigHelper.CurrentLanguage;

            Application.EnableVisualStyles();
            Program.Presenter = new Main();
            Application.Run(Program.Presenter);
        }
コード例 #4
0
        private void llAttachPPT_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (currentSong == null || Type.GetTypeFromProgID("PowerPoint.Application") == null)
            {
                return;
            }

            try
            {
                Program.Presenter.BeginExKeyOwner();
                OpenFileDialog f = new OpenFileDialog();
                f.Title  = Loc.Get("Select PowerPoint presentation");
                f.Filter = Loc.Get("PowerPoint presentation") + " (*.ppt;*.pps;*.pot)| *.ppt;*.pps;*.pot";
                if (f.ShowDialog() == DialogResult.Yes && File.Exists(f.FileName))
                {
                    currentSong.DisplayDefault = false;
                    currentSong.Location       = f.FileName;
                    Data.Songs.AddUpdateSong(currentSong);
                    currentSong.AcceptChanges();
                    llAttachPPT.Visible = false;
                    llDetach.Visible    = true;
                }
            }
            finally { Program.Presenter.EndExKeyOwner(); }
        }
コード例 #5
0
ファイル: DisplayEngine.cs プロジェクト: radtek/epresenter
        //////////////////////////////////////////////////////////////////////////////
        public DisplayEngine()
        {
            SetStyle(ControlStyles.ResizeRedraw, true);
            SetStyle(ControlStyles.DoubleBuffer, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.UserPaint, true);

            if (Form.ModifierKeys == Keys.Control)
            {
                windowMode = true;
            }

            InitializeComponent();

            cm = new ContextMenu();
            cm.MenuItems.Add(Loc.Get("Hide"), delegate { this.HideDisplay(); });
            this.ContextMenu = cm;
            this.TopMost     = false;

            this.VisibleChanged += new EventHandler(DisplayEngine_VisibleChanged);
            this.FormClosing    += new FormClosingEventHandler(ImageDisplayer_FormClosing);
            Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);

            // Anmiation
            t.Interval = 100;
            t.Tick    += new EventHandler(t_Tick);

            // Configuration
            Properties.Settings.Default.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChanged);
        }
コード例 #6
0
        private int PaintSong(Graphics g)
        {
            int w = this.Width;

            if (w > 350)
            {
                w = 350;
            }
            int cx          = (int)(((double)this.Width - w) / 2);
            int margin      = 5;
            int itemSpacing = 4;
            int cy          = margin;

            for (int i = 0; i < lSongVerses.Count; i++)
            {
                // Build the item to paint
                SongVerse sv = lSongVerses[i];
                string    s  = "";
                if (i == 0)
                {
                    s += songnum + ". ";
                }
                if (sv.IsChorus)
                {
                    s += Loc.Get("Chorus:") + " ";
                }
                else
                {
                    if (i != 0)
                    {
                        s += sv.VerseNumber + ". ";
                    }
                }
                s += sv.Text;

                // Measure string
                int h       = (int)g.MeasureString(s, this.Font, w).Height;
                int xadjust = 0;
                if (sv.IsChorus) // Chorus indent
                {
                    w      -= 15;
                    xadjust = 15;
                }
                Rectangle r = new Rectangle(cx + xadjust, cy, w, h);

                // Measure and fill highlights
                StringFormat sf = new StringFormat();
                sf.SetMeasurableCharacterRanges(SearchHelper.FindCharacterRanges(s, searchTerms));
                foreach (Region rg in g.MeasureCharacterRanges(s, this.Font, r, sf))
                {
                    g.FillRegion(new SolidBrush(Color.FromArgb(100, Color.Yellow)), rg);
                }


                g.DrawString(s, this.Font, Brushes.Black, r);
                cy += h + itemSpacing;
            }
            return(cy);
        }
コード例 #7
0
        private void btnClose_Click(object sender, EventArgs e)
        {
            if (proj.dirty && MessageBox.Show(this, Loc.Get("Project not saved. Save now?"), Loc.Get("Warning"), MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                btnSave_Click(null, null);
            }

            proj.CloseProject();
        }
コード例 #8
0
ファイル: DemoVersionOnly.cs プロジェクト: radtek/epresenter
        public DemoVersionOnly(string featureName)
        {
            InitializeComponent();
            t.Interval = 3000;
            t.Tick    += new EventHandler(t_Tick);
            t.Start();

            lblFeature.Text = Loc.Get(featureName);
            Program.Presenter.RegisterExKeyOwnerForm(this);
        }
コード例 #9
0
ファイル: ImageProjectView.cs プロジェクト: radtek/epresenter
 private void UpdateInfoLabel()
 {
     if (proj == null || proj.currentIndex == -1 || proj.names.Count == 0)
     {
         lblInfo.Text = Loc.Get("Preview:");
     }
     else
     {
         lblInfo.Text = proj.names[proj.currentIndex];
     }
 }
コード例 #10
0
ファイル: SongEditorForm.cs プロジェクト: radtek/epresenter
 private void txtChorus_Validating(object sender, System.ComponentModel.CancelEventArgs e)
 {
     if (txtChorus.Text.IndexOfAny(new char[] { '*', '"', '%' }) != -1)
     {
         errorProvider1.SetError(txtChorus, Loc.Get("Contains at least one of the invalid characters:") + " * \" %");
     }
     else
     {
         errorProvider1.SetError(txtChorus, "");
     }
 }
コード例 #11
0
        private void llDeleteProj_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (currentProject == null)
            {
                return;
            }

            if (MessageBox.Show(this, Loc.Get("Are you sure you want to delete?"), Loc.Get("Warning"), MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                ScrollerStore ss = new ScrollerStore();
                ss.DeleteAnouncement(currentProject.name);
                this.LoadProjList();
                UpdateUI();
            }
        }
コード例 #12
0
ファイル: ImageSelection.cs プロジェクト: radtek/epresenter
        private void btnUnlink_Click(object sender, EventArgs e)
        {
            if (ppiCurrent == null)
            {
                return;
            }

            string txt = Loc.Get("Are you sure you want to remove the image from the current category") + "?";

            if (MessageBox.Show(this, txt, Loc.Get("Warning"), MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                PhotoInfo.RemoveImageFromCat(ppiCurrent.PhotoInfo.ImageId, photoPreviewContainer1.CurrentCategory);
                photoPreviewContainer1.Controls.Remove(ppiCurrent);
            }
        }
コード例 #13
0
ファイル: ImageSelection.cs プロジェクト: radtek/epresenter
        private void btnRemoveCat_Click(object sender, EventArgs e)
        {
            if (ixItemSelected < 1)
            {
                return;
            }
            string catname = _categories.Items[ixItemSelected].ToString();
            string txt     = Loc.Get("Are you sure you want to remove the selected category:") + " ";

            if (MessageBox.Show(this, txt + catname + "?", Loc.Get("Warning"), MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                PhotoInfo.RemoveCategory(catname);
                LoadCategories(); // refresh the list
            }
        }
コード例 #14
0
ファイル: ImageProjectView.cs プロジェクト: radtek/epresenter
 private void btnAdd_Click(object sender, EventArgs e)
 {
     try
     {
         Program.Presenter.BeginExKeyOwner();
         OpenFileDialog f = new OpenFileDialog();
         f.Title       = Loc.Get("Select image to add");
         f.Multiselect = true;
         f.Filter      = Loc.Get("Supported formats") + " | *.jpg;*.png;*.bmp;*.gif | JPEG | *.jpg | GIF | *.gif | PNG | *.png | BMP | *.bmp";
         if (f.ShowDialog() == DialogResult.OK)
         {
             proj.AddFiles(f.FileNames);
         }
     }
     finally { Program.Presenter.EndExKeyOwner(); }
 }
コード例 #15
0
        private void _OK_Click(object sender, System.EventArgs e)
        {
            string[] cats = PhotoInfo.GetCatList();
            foreach (string cat in cats)
            {
                if (cat == _name.Text)
                {
                    MessageBox.Show(this, Loc.Get("Category already exists"), Loc.Get("Error"));
                    return;
                }
            }

            PhotoInfo.AddCategory(_name.Text);

            DialogResult = DialogResult.OK;
            this.Close();
        }
コード例 #16
0
        private void txtName_TextChanged(object sender, EventArgs e)
        {
            CancelEventArgs a = new CancelEventArgs();

            if (ValidateName != null)
            {
                ValidateName(txtName.Text, a);
            }
            if (a.Cancel)
            {
                errorProvider1.SetError(txtName, Loc.Get("A project with this name already exists"));
                btnOK.Enabled = false;
            }
            else
            {
                errorProvider1.SetError(txtName, "");
                btnOK.Enabled = true;
            }
        }
コード例 #17
0
ファイル: SongEditorForm.cs プロジェクト: radtek/epresenter
        // Display Settings
        private void llAttachPPT_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (currentRow == null)
            {
                return;
            }

            OpenFileDialog f = new OpenFileDialog();

            Program.Presenter.BeginExKeyOwner();
            f.Title  = Loc.Get("Select PowerPoint presentation");
            f.Filter = Loc.Get("PowerPoint presentation") + " (*.ppt;*.pps;*.pot)| *.ppt;*.pps;*.pot";
            if (f.ShowDialog() == DialogResult.Yes && File.Exists(f.FileName))
            {
                currentRow.DisplayDefault = false;
                currentRow.Location       = f.FileName;
            }
            Program.Presenter.EndExKeyOwner();
        }
コード例 #18
0
        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (currentSong == null)
            {
                return;
            }

            DialogResult result = MessageBox.Show(this,
                                                  Loc.Get("Are you sure you want to delete") + " " + currentSong.Number + " - " + currentSong.Title + "?",
                                                  Loc.Get("Confirm Deletion"), MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
                                                  MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                Data.Songs.DeleteSong(currentSong.AutoNumber);
                currentSong.Delete();
                currentSong.AcceptChanges();
                currentSong = null;
            }
        }
コード例 #19
0
ファイル: SongEditorForm.cs プロジェクト: radtek/epresenter
        private void txtNumber_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            int num = 0;

            if (int.TryParse(txtNumber.Text, out num))
            {
                if (num < 0)
                {
                    errorProvider1.SetError(txtNumber, Loc.Get("Number cannot be negative"));
                }
                else
                {
                    errorProvider1.SetError(txtNumber, "");
                }
            }
            else
            {
                errorProvider1.SetError(txtNumber, Loc.Get("Not a valid number"));
            }
        }
コード例 #20
0
ファイル: DisplayEngine.cs プロジェクト: radtek/epresenter
 public static Image GetImageIncompatible(double scale)
 {
     using (Image i = new Bitmap(800, 600))
     {
         Graphics g = Graphics.FromImage(i);
         g.FillRectangle(Brushes.White, g.ClipBounds);
         string       text = Loc.Get("Incompatible Presentation");
         Font         f    = new Font("Arial", 36F, FontStyle.Bold);
         StringFormat sf   = new StringFormat();
         sf.Alignment = StringAlignment.Center;
         SizeF s = g.MeasureString(text, f, 800, sf);
         int   w = Convert.ToInt32(s.Width);
         int   h = Convert.ToInt32(s.Height);
         g.DrawString(text, f, Brushes.Red, new System.Drawing.Rectangle((800 -
                                                                          w) / 2, (600 - h) / 2, w, h), sf);
         Image.GetThumbnailImageAbort imageAbort = new System.Drawing.Image.GetThumbnailImageAbort(ImageAbort);
         Image ret = i.GetThumbnailImage((int)(i.Width * scale), (int)(i.Height * scale), imageAbort, IntPtr.Zero);
         i.Dispose();
         return(ret);
     }
 }
コード例 #21
0
ファイル: SongEditorForm.cs プロジェクト: radtek/epresenter
        private void btnSave_Click(object sender, System.EventArgs e)
        {
            // Verify that we have at least one verse
            int rows = 0;

            foreach (DataRow r in dt.Rows)
            {
                if (r.RowState != DataRowState.Deleted)
                {
                    rows++;
                }
            }
            if (rows == 0)
            {
                MessageBox.Show(Loc.Get("Please add at least one verse for the song"));
                return;
            }

            this.DialogResult = DialogResult.OK;
            this.save();
            this.Close();
        }
コード例 #22
0
        private void RefreshSearchList()
        {
            if (txtFulltextSearch.Text == "")
            {
                return;
            }

            pnlSearchSelection.BringToFront();
            lbSearchResults.SuspendLayout();
            lbSearchResults.Items.Clear();
            lock (lSearchResults)
            {
                #if !DEMO
                List <string> searchTerms = SearchHelper.BreakSearchTerms(txtFulltextSearch.Text); // Caller is responsible to make sure that search terms have not changed

                if (rRelevent.Checked && searchTerms.Count > 1)
                {
                    // Sort the verses based on score
                    SongSearchHelper.ScoreResults(lSearchResults, searchTerms);
                    SearchRelevancyComparer comp = new SearchRelevancyComparer();
                    lSearchResults.Sort(comp);
                }
                else
                {
                    lSearchResults.Sort(new SongNumberComparer());
                }

                // Add to list
                foreach (SongSearchResult ssr in lSearchResults)
                {
                    lbSearchResults.Items.Add(ssr);
                }
                #endif
            }
            lbSearchResults.ResumeLayout();

            lblTitleSearchResults.Text = Loc.Get("Search results:") + " (" + lSearchResults.Count + ")";
        }
コード例 #23
0
ファイル: ImageSelection.cs プロジェクト: radtek/epresenter
        private void btnAddImage_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog f = new OpenFileDialog();

            Program.Presenter.BeginExKeyOwner();
            f.Title       = Loc.Get("Select image to add");
            f.Filter      = Loc.Get("Supported formats") + " | *.jpeg;*.jpg;*.png;*.bmp;*.gif | JPG | *.jpg | JPEG | *.jpeg | GIF | *.gif | PNG | *.png | BMP | *.bmp";
            f.Multiselect = false;
            if (f.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    int id = PhotoInfo.AddImage(Image.FromFile(f.FileName));
                    AssignToCategory a2c = new AssignToCategory(id, true);
                    if (a2c.ShowDialog() == DialogResult.OK)
                    {
                        LoadCategories();
                        photoPreviewContainer1.Controls.Clear();
                    }
                }
                catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.ToString()); }
            }
            Program.Presenter.EndExKeyOwner();
        }
コード例 #24
0
 private void UpdateInfoLabel()
 {
     lblInfo.Text = Loc.Get("Preview:");
 }
コード例 #25
0
ファイル: BibleProjectView.cs プロジェクト: radtek/epresenter
 private void imgBtn_MouseEnter(object sender, EventArgs e)
 {
     lblInfo.Text = Loc.Get(((Control)sender).Tag.ToString());
 }
コード例 #26
0
ファイル: SongEditorForm.cs プロジェクト: radtek/epresenter
        // Song Information
        public void LoadSong(PresenterDataset.SongsRow row)
        {
            if (row == null)
            {
                this.Close();
                return;
            }

            currentRow = row;

            // Accept changes if not new
            if (row.RowState == DataRowState.Detached)
            {
                this.Text         = Loc.Get("Add a new song");
                this.btnSave.Text = Loc.Get("Add");

                // setup datatable
                InternalLoadSongFromDB(row, true);
            }
            else
            {
                this.btnSave.Text = Loc.Get("Save");
                row.AcceptChanges();

                // Load song verses from database
                InternalLoadSongFromDB(row, false);
            }



            // Set textboxes
            if (currentRow.Number != -1)
            {
                txtNumber.Text = currentRow.Number.ToString();
            }
            else
            {
                txtNumber.Text = "";
            }
            txtTitle.Text  = currentRow.Title;
            txtChorus.Text = currentRow.Chorus;

            // Image and properties
            currentImage = new PhotoInfo();
            if (currentRow.Image == -2)
            {
                currentImage.ImageId = Program.ConfigHelper.SongDefaultImage;
            }
            else
            {
                currentImage.ImageId = currentRow.Image;
            }
            sliderSuspendUpdate++;
            if (currentRow.Overlay == 777)
            {
                sliderOpacity.Value = 50;
            }
            else
            {
                sliderOpacity.Value = (int)(((double)currentRow.Overlay + 255) * 100 / 512);
            }
            sliderSuspendUpdate--;

            txtCopyright.Text = Data.Songs.GetSongCopyright(currentRow.AutoNumber);
        }
コード例 #27
0
ファイル: BibleSearchPnl.cs プロジェクト: radtek/epresenter
        private void RefreshSearchList()
        {
            if (txtBibSearch.Text == "")
            {
                return;
            }

            pnlSearchSelection.BringToFront();
            lbSearchVerses.SuspendLayout();
            lbSearchVerses.Items.Clear();
            lock (lResults)
            {
                #if !DEMO
                // Get search terms
                List <string> searchTerms = SearchHelper.BreakSearchTerms(txtBibSearch.Text); // Caller is responsible to make sure that search terms have not changed

                // Sort the results
                BibleVerseComparer bvc = new BibleVerseComparer();
                if (rRelevent.Checked && searchTerms.Count > 1)
                {
                    // Sort the verses based on score
                    BibleSearchHelper.ScoreResults(lResults, searchTerms);
                    SearchRelevancyComparer comp = new SearchRelevancyComparer();
                    lResults.Sort(comp);
                }
                else
                {
                    lResults.Sort(bvc);
                }

                // Double filter the results
                List <BibleSearchResult> lDoubleFilter = new List <BibleSearchResult>();
                foreach (BibleSearchResult r in lResults)
                {
                    foreach (BookData bd in lbBibleBook.Items) // Check book
                    {
                        if (bd.mappingName == r.bibVerse.RefBook)
                        {
                            lDoubleFilter.Add(r);
                            break;
                        }
                    }
                }

                // Add to the list
                foreach (BibleSearchResult r in lDoubleFilter)
                {
                    lbSearchVerses.Items.Add(r);
                }

                // Turn off the tumbler
                pnlInitTumbler.Visible = false;

                // Set visible items based on search result count
                pbNoItems.Visible = llNoResults.Visible = lDoubleFilter.Count == 0;
                lblSort.Visible   = rNoSort.Visible = rRelevent.Visible = lbSearchVerses.Visible = !pbNoItems.Visible;

                lblTitleSearchResults.Text = Loc.Get("Search results:") + " (" + lDoubleFilter.Count + ")";
                #endif
            }
            lbSearchVerses.ResumeLayout();
        }
コード例 #28
0
ファイル: SongProject.cs プロジェクト: radtek/epresenter
        public Dictionary <int, string> GetInlineRepresentation()
        {
            if (songSlides.Count == 0)
            {
                return(new Dictionary <int, string>());
            }

            Dictionary <int, string> slideText = new Dictionary <int, string>();

            if (includeVerseNumbers)
            {
                foreach (SongSlideData ssd in this.songSlides)
                {
                    slideText.Add(ssd.slideNumber, RemoveVerseFormatting(ssd.text));
                }
            }
            else
            {
                string chorus     = Loc.Get("Chorus:") + " ";
                string lastRefStr = "";
                bool   titleAdded = false;
                foreach (SongSlideData ssd in this.songSlides)
                {
                    string refstr = "";

                    if (ssd.isChorus)
                    {
                        if (lastRefStr != chorus)
                        {
                            refstr     = chorus;
                            lastRefStr = refstr;
                        }
                        else
                        {
                            refstr = "";
                        }
                    }
                    else
                    {
                        if (!ssd.isPartial && ssd.verseNumber != 1)
                        {
                            refstr     = ssd.verseNumber + ". ";
                            lastRefStr = refstr;
                        }
                        if (ssd.isPartial && ssd.verseNumber != 1)
                        {
                            if (lastRefStr != ssd.verseNumber + ". ") // Notice: number is applied only once
                            {
                                refstr     = ssd.verseNumber + ". ";
                                lastRefStr = refstr;
                            }
                        }
                    }

                    // Add title
                    if (!titleAdded)
                    {
                        refstr     = currentSong.Number + ". " + refstr;
                        titleAdded = true;
                    }

                    string verse = RemoveVerseFormatting(ssd.text);
                    slideText.Add(ssd.slideNumber, refstr + verse);
                }
            }
            return(slideText);
        }