DonationCoder.com forum
 
Read-only archive. This is a static copy of the DonationCoder.com forum. Reading and searching work as before; logging in, posting and private messages do not.
Archive of 2026-10-21 · About this archive · Main site

Last post Author Topic: NANY 2012 RELEASE: Christian Prayer Minder  (Read 96,684 times)

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
NANY 2012 RELEASE: Christian Prayer Minder
« on: December 07, 2011, 02:00 PM »
NANY 2012 Entry Information

Application Name Christian Prayer Minder
Version 1.0.5.8 (attention: prayer files from versions prior to 1.0.0.9 aren't compatible with later versions of the program; If you currently have v1.0.1.1 or earlier installed, please manually install version 1.0.5.8 after uninstalling any previous version. From now on, you should be able to update from within the program as usual. If you have v1.0.1.2 or later installer, you should be able to download the updated installer from within your currently running program.)
Short Descriptionprovides informative texts on prayer-related topics, plus enables easy save/retrieve/edit prayer files, and searching prayer files based on tags and/or author
Supported OSes Windows XP forward
Setup File (4.8 M) http://kyrathaba.dcmembers.com/ccount/click.php?id=8
Memory Footprintabout 6,680 Kb (this will increase slightly when many prayers have been searched)
System Requirementsrequires .NET Framework v4.0 (program detects if absent, and will download/install it if permission is given)
Author InfoDC member kyrathaba, developer of these other NANY 2012 entries: Found Money, Kyrathaba's Hangman, and Source Code Line Counter. My past NANY entries include: Crocus Contacts, Blackjack, and NANY Excuse Manager.
DescriptionI realize that there are relatively few Christianity adherents here. Nevertheless, for those of us who are, I believe that this program offers something valuable. I began thinking about writing this application several weeks ago, after a series of conversations with my pastor in which we discussed how it's often difficult to concentrate while trying to pray. We've also discussed the need for a tool that acts as a prayer reminder, and one that can track written prayers and offer search functionality. Finally, we wanted a tool that allows the user to come back at a later time to a prayer and offer thoughts/insights into prayer-answers, or meditations on the prayer itself.  This tool will also, in future updates, allow the user to customize prompts and prompt-frequencies for various types of prayer (praise, intercession, supplication, etc.) The program could also be used to store diary/journal entries, although that isn't its intended purpose.
Screencast
Features
  • built-in CHM Help file
  • pray at the speed of typing (for me, that's about 85 wpm)
  • enter author, and any related tags to help in future searches (or omit them)
  • main form features fantastic background images, many of them by J. R. Bell
  • twelve fore-/back-color schemes for the "My Prayers" panel
  • option to launch application when Windows starts
  • ten in-depth articles on prayer-related topics
  • articles on spiritual disciplines, and the Biblical plan of salvation
  • ability to print the article, or whatever portion of its text is selected
  • recommended further reading (some titles with accompanying URLs)
  • real-time filesystem watcher monitors for creation/deletion/renaming of prayer files
  • informative message-boxes
  • program uses index files to make searching for specific prayer files faster
  • warns user if they attempt to save a prayer file in a non-MyPrayers directory
  • error-trapping correctly detects and handles case where user attempts to load a non-PrayerMinder file
  • click a Search result in ListBox to view its filename, lastModified date, path to file, Author, and tags
  • double-click the Search result entry to load that prayer file
  • zero Registry footprint
  • you can now increase or decrease font size in the MyPrayers textbox by selecting your desired font size in Options
  • three ways to exit application: close button, file menu, or Escape key
  • optional "Did You Know" dialog at program startup
  • search either by author and/or tags, using indexes (fast: on the order of milliseconds)
  • search within prayer file contents for a search phrase, returning all files that contain that search phrase (slow: seconds, not milliseconds)
  • if you double-click a Search results listbox entry and it is the result of a search-within-for-phrase Search, the search-phrase is highlighted when the prayer file is loaded
  • smart-saving removes any excess whitespace from the prayer before saving it
  • option to set a backup directory (makes program compatible with using Dropbox for backing up the program's data files)
  • full list of features  here
Favorite method in this project: bgWorkerSearch_DoWork()
Spoiler (click to show/hide)
Code: (csharp)
        void bgWorkerSearch_DoWork (object sender, DoWorkEventArgs e) {

            log.write("We have entered the background worker that does the heavy-lifting in Searches...");
            DateTime _start = DateTime.Now;
            clsSearcherArgument arg = (clsSearcherArgument)e.Argument;

            #region ifDebuggerAttachedGiveSomeInfo

            if (Debugger.IsAttached) {

                string msg = "Search type: " + ((SearchType)arg.SearchType).ToString() + Environment.NewLine;

                msg += "Search ";
                msg += (arg.SearchType == (int)SearchType.SearchWithinFiles) ? " phrase: " : " tag(s): ";
                if (arg.searchPhraseOrTags.Length > 0) {
                    msg += arg.searchPhraseOrTags + Environment.NewLine;
                } else {
                    msg += "[none]" + Environment.NewLine;
                }

                msg += "Author filter: ";
                if (arg.searchedForAuthor.Length > 0) {
                    msg += arg.searchedForAuthor + Environment.NewLine;
                } else {
                    msg += "[none]" + Environment.NewLine;
                }

                msg += "Time constraint: " + ((TimeConstraint)arg.timeConstraint).ToString();

                MessageBox.Show(msg);

            }

            #endregion

            #region setUpNeededVariables            

            DirectoryInfo di = new DirectoryInfo(pathToMyPrayers);
            FileInfo[] fi = di.GetFiles();
            List<clsPrayerInfo> information = new List<clsPrayerInfo>();
            
            int totalPrayerFiles = fi.GetLength(0);
            string searchedForAuthor = arg.searchedForAuthor.Trim().ToLower();
            string searchedForPhrase = arg.searchPhraseOrTags.Trim().ToLower();            
            int examined_so_far = 0;
            int hits = 0;
            int time_constraint = arg.timeConstraint;
            double totalSeconds = 0;
            bool blnPassesTimeConstraint;
            bool blnPassesAuthor;
            bool blnPassesSearchPhrase;
            decimal fraction = 0;
            int the_percent = 0;

            for (int i = 0; i < totalPrayerFiles; i++) {
                if (fi[i].FullName.ToLower().Contains("thumbs.db")) { totalPrayerFiles--; }
            }

            #endregion

            if (arg.SearchType == (int)SearchType.SearchWithinFiles) {

                log.write("About to enter foreach loop for searching within files...");
                
                foreach (FileInfo f in fi) {
                
                    blnPassesTimeConstraint = false;
                    blnPassesAuthor = false;
                    blnPassesSearchPhrase = false;
                    
                    if (f.FullName.ToLower().Contains("thumbs.db")) { continue; }
                    
                    #region codeForExaminingWithinPrayerFileContents
                    
                    blnPassesAuthor = true; //because SearchWithinFiles doesn't care about the author                   
                    FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.None);
                    clsPrayerInfo oInfo = new clsPrayerInfo();                    

                    try {
                        BinaryFormatter bFormatter = new BinaryFormatter();
                        clsPrayer prayer = (clsPrayer)bFormatter.Deserialize(fs);
                        string contents = prayer.content.Trim().ToLower();
                        if (contents.Contains(searchedForPhrase)) {
                            blnPassesSearchPhrase = true;
                            oInfo = new clsPrayerInfo(prayer, f.FullName);
                            int selStart = contents.IndexOf(searchedForPhrase);
                            oInfo.StartOfSelection = selStart;                            
                            #region determineIfWePassTheTimeConstraint
                            if (time_constraint == (int)TimeConstraint.NoConstraint) {
                                blnPassesTimeConstraint = true;
                            } else {
                                DateTime rightNow = DateTime.Now;
                                TimeSpan ts = rightNow.Subtract(oInfo.lastModified);
                                totalSeconds = ts.TotalSeconds;
                                switch (time_constraint) {
                                    case (int)TimeConstraint.PastWeek:
                                        if (totalSeconds <= 604800) { blnPassesTimeConstraint = true; }
                                        break;
                                    case (int)TimeConstraint.PastMonth:
                                        if (totalSeconds <= 2592000) { blnPassesTimeConstraint = true; }
                                        break;
                                    case (int)TimeConstraint.PastYear:
                                        if (totalSeconds <= 31536000) { blnPassesTimeConstraint = true; }
                                        break;
                                }
                            }
                            #endregion
                        } else {
                            blnPassesSearchPhrase = false;
                        }

                        examined_so_far++;
                        log.write("We have examined this many files: " + examined_so_far.ToString());

                        if (blnPassesTimeConstraint && blnPassesSearchPhrase && blnPassesAuthor) {
                            information.Add(oInfo);                            
                            hits++;
                        }

                    } catch (Exception exceptionOpeningPrayerFile) {
                        string msgWithinFilesException = "Error in SearchWithinFiles portion of code in method bgWorkerSearch_DoWork(): " + exceptionOpeningPrayerFile.Message;
                        log.write(msgWithinFilesException);
                        MessageBox.Show(msgWithinFilesException, "Error Opening Prayer File During Search");
                    }
                    finally {
                        if (fs != null) { fs.Close(); }
                    }
                    #endregion

                    fraction = (decimal)examined_so_far / (decimal)totalPrayerFiles;
                    the_percent = Convert.ToInt32(fraction * 100);
                    bgWorkerSearch.ReportProgress(the_percent);
                    log.write("Records counted: " + examined_so_far.ToString() + " of " + totalPrayerFiles.ToString() + " (hits: " + hits.ToString() + ") -- " + the_percent.ToString() + " % complete...");
                }
            
            } else {

                log.write("About to enter foreach loop for searching via tracking files...");
                
                foreach (FileInfo f in fi) {

                    blnPassesTimeConstraint = false;
                    blnPassesAuthor = false;
                    blnPassesSearchPhrase = false;

                    if (f.FullName.ToLower().Contains("thumbs.db")) { continue; }
                    
                    #region codeForSearchingAgainstAuthorAndOrTagsUsingTrackingFiles
                    
                    clsPrayerInfo oInfo = new clsPrayerInfo();
                    string pathToTracker = Path.Combine(pathToTrackingDirectory, Path.GetFileNameWithoutExtension(f.FullName));
                    if (!File.Exists(pathToTracker)) {
                        log.write("Tracking file doesn't exist: " + pathToTracker);
                        continue;
                    } else {
                        log.write("The following tracking file DOES exist: " + pathToTracker);
                    }
                    
                    FileStream fs = new FileStream(pathToTracker, FileMode.Open, FileAccess.Read, FileShare.None);
                    try {

                        BinaryFormatter bFormatter = new BinaryFormatter();
                        oInfo = (clsPrayerInfo)bFormatter.Deserialize(fs);
                        oInfo.StartOfSelection = -1;
                        DateTime rightNow = DateTime.Now;
                        TimeSpan ts = rightNow.Subtract(oInfo.lastModified);
                        totalSeconds = ts.TotalSeconds;

                        log.write("We were able to open the tracker...");

                        #region determineIfTheTimeConstraintPasses
                        if (time_constraint == (int)TimeConstraint.NoConstraint) {
                            blnPassesTimeConstraint = true;
                        } else {
                            switch (time_constraint) {
                                case (int)TimeConstraint.PastWeek:
                                    if (totalSeconds <= 604800) { blnPassesTimeConstraint = true; }
                                    break;
                                case (int)TimeConstraint.PastMonth:
                                    if (totalSeconds <= 2592000) { blnPassesTimeConstraint = true; }
                                    break;
                                case (int)TimeConstraint.PastYear:
                                    if (totalSeconds <= 31536000) { blnPassesTimeConstraint = true; }
                                    break;
                            }
                        }
                        #endregion
                        if (blnPassesTimeConstraint) {
                            log.write("TimeConstraint passed in Search using Mode Normal or ExactMatch...");
                            #region determineIfAuthorPasses
                            if (searchedForAuthor.Length == 0) {
                                blnPassesAuthor = true;
                            } else {
                                if (searchedForAuthor == oInfo.author.Trim().ToLower()) { blnPassesAuthor = true; }
                            }
                            #endregion
                            if (blnPassesAuthor) {
                                #region determineIfSearchPhrasePasses
                                if (searchedForPhrase.Length == 0) {
                                    blnPassesSearchPhrase = (arg.SearchType == (int)SearchType.Normal) ? true : false;
                                } else {
                                    if (arg.SearchType == (int)SearchType.ExactMatch) {
                                        blnPassesSearchPhrase = (searchedForPhrase == oInfo.tags.Trim().ToLower()) ? true : false;
                                    } else {
                                        blnPassesSearchPhrase = (oInfo.tags.Trim().ToLower().Contains(searchedForPhrase)) ? true : false;
                                    }
                                }
                                #endregion
                            }//end if (blnPassesAuthor)
                        }//end if (blnPassesTimeContraint)

                        if (blnPassesSearchPhrase && blnPassesAuthor && blnPassesTimeConstraint) {
                            information.Add(oInfo);
                            hits++;
                        }

                        examined_so_far++;
                        log.write("We have examined this many files: " + examined_so_far.ToString());

                    } catch (Exception exception) {
                        log.write("Exception caught while trying to load clsPrayerInfo data from this tracking file in bgWorkerSearch_DoWork(): " + Path.GetFileName(pathToTracker));
                        log.write(exception.Message);
                    }
                    finally {
                        if (fs != null) { fs.Close(); }
                    }

                    #endregion
                    
                    fraction = (decimal)examined_so_far / (decimal)totalPrayerFiles;
                    the_percent = Convert.ToInt32(fraction * 100);
                    bgWorkerSearch.ReportProgress(the_percent);
                    log.write("Records counted: " + examined_so_far.ToString() + " of " + totalPrayerFiles.ToString() + " (hits: " + hits.ToString() + ") -- " + the_percent.ToString() + " % complete...");
                
                }
            
            }

            DateTime _finished = DateTime.Now;
            TimeSpan tsOverall = _finished.Subtract(_start);
            string duration = clsGetDurationDesc.getDurationDesc(tsOverall.TotalMilliseconds);

            clsSearcherResults oResults = new clsSearcherResults(information, duration, examined_so_far, hits);
            e.Result = oResults;

            log.write("Now exiting bgWorkerSearch_DoWork()...");

        }
Screenshots (there are 8 more images in addition to the twelve shown here, but you'll have to download/install the program to discover them...)
[attachthumb]
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

« Last Edit: January 14, 2012, 02:13 PM by kyrathaba »

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #1 on: December 07, 2011, 03:12 PM »
I'm not a prayer, but it looks pretty cool, and i love the idea of high-tech praying :)
It will be fun to see what you've come up with.

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #2 on: December 07, 2011, 11:44 PM »
It's worth a download and a few runs just to see the various form background images (a random one of twenty gets chosen each time the program runs).  Some pretty cool images in there.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

panzer

  • Participant
  • Joined in 2008
  • *
  • Posts: 941
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #3 on: December 08, 2011, 03:50 AM »
Add some music ...

techidave

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,046
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #4 on: December 08, 2011, 04:52 AM »
Looks pretty cool, kyrathaba.  I like the features that have been built into it.

perhaps a feature request or two.

instead of saving with date and title, let it default to whatever the title of the prayer is.  Come tomorrow, I won't be able to tell by the file name, what the prayer concern is.

is it possible to use the arrow keys to "scroll" through the list of concerns?  instead of actually having to 'load" each one.

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #5 on: December 08, 2011, 01:25 PM »
Quote
instead of saving with date and title, let it default to whatever the title of the prayer is.  Come tomorrow, I won't be able to tell by the file name, what the prayer concern is.

@techidave: Yeah, I get your drift.  The reason the files are auto-named based upon the date-time, rather than prompting the user with a SaveFileDialog, is that it will make it very easy later to implement a search-by-date function. The "Title" field (see screenshot) below, is meant to allow you to give a memorable title to the prayer.

[attach]
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

techidave

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,046
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #6 on: December 08, 2011, 08:50 PM »
you are understanding correctly.  :Thmbsup:

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #7 on: December 09, 2011, 03:22 AM »
I've fixed the first: you can now name your own files; I'll also be providing your second wish, such that you'll be able to scroll through a listing of all saved prayer files, and see, at a glance, the filename, author, tags associated with the file currently highlighted in a listbox.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

techidave

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,046
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #8 on: December 09, 2011, 04:15 AM »
cool, i will give it a whirl.

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #9 on: December 09, 2011, 12:22 PM »
Haven't uploaded the fix yet. Will probably have next version uploaded (and announced) either today or tomorrow.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #10 on: December 10, 2011, 06:38 PM »
Okay, I've fulfilled both your feature requests, techidave. Now I've only to re-work the Search algorithm, and I'll be ready with v1.0.0.7. Best estimate is that it'll get uploaded in the next few hours, though possibly not until sometime Sunday.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

techidave

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,046
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #11 on: December 10, 2011, 06:53 PM »
no hurry on my part!  take your time.  i would hate to see you create a bug while trying to add features.  :o

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #12 on: December 11, 2011, 04:23 AM »
Okay, techidave and several others who have emailed me via the program's email button in the About dialog, thanks for your patience. The next version is almost ready for download. I just need to tie some code into the SelectedIndexChanged event of the lstSearchResults ListBox, so that as you scroll through entries, you'll be presented with filename, tags, author. Should be back sometime tomorrow with an announcement that it's okay to update to the newest version.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Prayer Minder
« Reply #13 on: December 11, 2011, 01:45 PM »
v1.0.0.8 is released! Please update using the Update button from the program's About dialog to download the installer for the updated version (no need to uninstall previous version: the installer will overwrite it, and any application data will be preserved).

See OP for additional features that have been added. At some point I'll be doing (hopefully) a video showing how the rebuilt Search feature is most robust/powerful.

@techidave: both your requests have been fulfilled. Here's a screenshot of the Search results. You can scroll through the results ListBox to view pertinent data associated with the selected prayer file. You can double-click the item to Load the prayer for further editing:

[attach]
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #14 on: December 14, 2011, 01:22 PM »
Version 1.0.0.9 is available. Be alerted that it isn't compatible with prayer files created using earlier versions.

Improvements added in this version include:

  • fixed cosmetic bug wherein temp form that shows article text was seen in taskbar
  • fixed bug in buildTrackingFile() that caused UI to look all funky after method execution
  • added contextMenuStrip to the textBox made by method showTextInDialogFormTextbox(), so that user can send article to his printer
  • added application logging to "pminderLog.txt" in the AppData directory
  • I've completely gotten rid of the text-based prayerInfo tracking system, and am using a serialized class now.
  • Download of updated installer is now asynchronous, allowing examination of the rest of the About dialog while you wait.

I was painfully reminded of a .NET irritation: your program cannot write to the application directory. Silly: why not? Grrr...
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

« Last Edit: December 14, 2011, 01:28 PM by kyrathaba »

Ath

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 3,649
    • Participated in NANY Challenge Eleven Times
    • Coding Snacks
    • Linux User
    • Hardware Hacker
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #15 on: December 14, 2011, 02:08 PM »
I was painfully reminded of a .NET irritation
That's more a Vista/Win7 thing than just a .NET thing ;)
/Ton
Ath's software collection, Quote: "A problem well stated is a problem half-solved." (Charles Kettering)

wraith808

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 11,205
    • Participated in NANY Challenge Fourteen Times
    • Coding Snacks
    • Writer
    • Hardware Hacker
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #16 on: December 14, 2011, 03:00 PM »
I was painfully reminded of a .NET irritation: your program cannot write to the application directory. Silly: why not? Grrr...

Because you're supposed to write to the AppData folder.  That's for security reasons, so that what's in the program files folder is only what you install, and that it can be locked down for UAC

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #17 on: December 15, 2011, 12:45 PM »
Quote
Because you're supposed to write to the AppData folder.  That's for security reasons, so that what's in the program files folder is only what you install, and that it can be locked down for UAC

Ah, I figured it must be a User Access Control thing. I guess to prevent any other program from writing to your application directory, it also has to prevent your app itself...
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #18 on: December 15, 2011, 02:31 PM »
Version 1.0.1.1 is available. This version requires the uninstall of the previous version (v1.0.0.9) and manual install of the new version. The reason for this is that I changed some code in the methods that check for an available update and download an available file. You will be able to update to v1.0.1.2 and later version from the program's Update menu item.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

« Last Edit: December 15, 2011, 02:59 PM by kyrathaba »

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #19 on: December 15, 2011, 03:34 PM »
Versions 11 and 12 were released in quick succession because I found potentially program-crashing bugs and wanted to get the fix available immediately. Thank you!
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #20 on: December 16, 2011, 03:17 PM »
Coming soon: version 13 will slim-down the menu system, drops the program's Windows Registry footprint to zero, reduces the installer's file size, adds more robust error-handling, adds the option to display a "Did You Know?" dialog at startup, and more. Stay tuned!
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #21 on: December 17, 2011, 09:41 PM »
Version 1.0.1.4 is available. It adds additional color schemes, the articles are presented more succinctly, with the option to print or write-to-file the entire article, or selected portions of it, Windows Registry is not used. However, file size did not decrease because I wound up not eliminating some resources I'd thought I might.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #22 on: December 18, 2011, 01:22 PM »
version 1.0.1.5 is released:

v1.0.1.5 (12/17/2011)

  • simplied user-interaction upon clicking the About dialog's Donate button
  • I've now gotten bold versus regular font styles implemented correctly as color schemes change in the MyPrayers panel.
  • Added four additional color schemes: boldorange, boldlime, boldcyan, and boldblue
  • replaced the Ctrl-+/Ctrl-minus key combination for changing font sizes with a dropdown combo box under the options menu. The program will correctly apply the desired font to a new prayer you're typing, or to a saved prayer you've just loaded.
  • added a read-only textbox at the same level as the top-level menu items. It is populated at form-load, and shows the total number of prayer files found in the MyPrayers directory, and their combined file sizes.
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #23 on: December 18, 2011, 01:57 PM »
version 1.0.1.6 is released:

  • fixed a bug wherein color schemes that call for a bold font got reset to FontStyle.Regular when the "Click here..." text was clicked to begin a New Prayer.
  • updated the TabIndex for the MyPrayers controls, so that the color-scheme-chooser combobox is part of the tab order
  • Duh: I'd lost my entire menu system a few days ago. Apparently, in the process of restoring from backup and filling in any gaps, I overlooked the Save Prayer menu item. Sure, the Save button was still there, but still...
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • Participated in NANY Challenge Eight Times
    • Programming School - Deluxe Bonus Medal
    • Programming School - Stage 1 Medal
    • Coding Snacks
    • Military Service Badge - US Army
    • Writer
Re: NANY 2012 Pledge and Early Beta: Christian Prayer Minder
« Reply #24 on: December 18, 2011, 02:02 PM »
Quote
Add some music ...


@panzer: I assume you mean allow the user to select an MP3 that'll run asynchronously as s/he uses the program? (that's do-able). Or do you want a startup trill? Or both features? Anyone else want music capability?
Win 10 Pro running on a 3.2 GHz CPU and 12 Gb RAM
__________________________________________

Proofreading Service: http://williammillerservices.com/proofreading

Original address: https://www.donationcoder.com/forum/index.php?topic=29182.0