Deprecated: Optional parameter $default declared before required parameter $err_msg is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 1401

Deprecated: Optional parameter $memorize declared before required parameter $err_msg is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 1401

Deprecated: Optional parameter $default declared before required parameter $err_msg is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 2320

Deprecated: Optional parameter $memorize declared before required parameter $err_msg is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 2320

Deprecated: Creation of dynamic property GeneralSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Creation of dynamic property AbstractSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Optional parameter $coll_ID declared before required parameter $selected_value is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/collections/model/_blog.funcs.php on line 1942

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home4/tylering/public_html/b2e/inc/links/model/_link.funcs.php on line 1024

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home4/tylering/public_html/b2e/inc/links/model/_link.funcs.php on line 1024

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home4/tylering/public_html/b2e/inc/links/model/_link.funcs.php on line 1024

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home4/tylering/public_html/b2e/inc/links/model/_link.funcs.php on line 1024

Deprecated: Optional parameter $action declared before required parameter $read_only_list is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/maintenance/model/_maintenance.funcs.php on line 624

Deprecated: Optional parameter $overwrite declared before required parameter $read_only_list is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/maintenance/model/_maintenance.funcs.php on line 624

Deprecated: Optional parameter $renderers declared before required parameter $params is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 2013

Deprecated: Optional parameter $current_renderers declared before required parameter $params is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 2158

Deprecated: Optional parameter $current_renderers declared before required parameter $params is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 2336

Deprecated: Creation of dynamic property UserSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_init_login.inc.php on line 81

Deprecated: Optional parameter $prefix declared before required parameter $dbIDname is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/_core/model/dataobjects/_dataobjectcache.class.php on line 133

Deprecated: Creation of dynamic property CollectionSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 467

Deprecated: Optional parameter $chapter_mode declared before required parameter $item_index is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/items/model/_itemlistlight.class.php on line 2404

Deprecated: Optional parameter $params declared before required parameter $content_is_displayed is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/items/model/_itemlistlight.class.php on line 2593

Deprecated: Creation of dynamic property ItemList2::$filterset_name is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlistlight.class.php on line 114

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 1407

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php on line 1407

Deprecated: Optional parameter $dbprefix declared before required parameter $dbIDname is implicitly treated as a required parameter in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 76

Deprecated: Creation of dynamic property ItemQuery::$dbtablename is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 78

Deprecated: Creation of dynamic property ItemQuery::$dbprefix is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 79

Deprecated: Creation of dynamic property ItemQuery::$dbIDname is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 80

Deprecated: Creation of dynamic property ItemQuery::$Blog is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 231

Deprecated: Creation of dynamic property ItemQuery::$cat_array is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 232

Deprecated: Creation of dynamic property ItemQuery::$cat_modifier is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 233

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: Creation of dynamic property ItemQuery::$assignees_logins is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 525

Deprecated: Creation of dynamic property ItemQuery::$author_assignee is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 557

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: Creation of dynamic property ItemQuery::$m is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 842

Deprecated: Creation of dynamic property ItemQuery::$w is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 843

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Deprecated: Creation of dynamic property Item::$objtype is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 164

Deprecated: Creation of dynamic property Item::$datestart is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemlight.class.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 40

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 405

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 406

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 407

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/inc/_core/_template.funcs.php on line 408

Deprecated: Creation of dynamic property ItemQuery::$dbtablename is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 78

Deprecated: Creation of dynamic property ItemQuery::$dbprefix is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 79

Deprecated: Creation of dynamic property ItemQuery::$dbIDname is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 80

Deprecated: Creation of dynamic property ItemQuery::$Blog is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 231

Deprecated: Creation of dynamic property ItemQuery::$cat_array is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 232

Deprecated: Creation of dynamic property ItemQuery::$cat_modifier is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 233

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: Creation of dynamic property ItemQuery::$assignees_logins is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 525

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10535

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/_core/_misc.funcs.php on line 10540

Deprecated: Creation of dynamic property ItemQuery::$m is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 842

Deprecated: Creation of dynamic property ItemQuery::$w is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_itemquery.class.php on line 843

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/skins/_rss2/index.main.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at /home4/tylering/public_html/b2e/inc/_core/_param.funcs.php:1401) in /home4/tylering/public_html/b2e/skins/_rss2/index.main.php on line 46
Switched Keys - Categories: "Professional" https://tylerhosting.com/b2e/dbell.php Switched Keys, the blogs of Dana Bell of Tyler, Texas en-US http://blogs.law.harvard.edu/tech/rss 60 Import Lexicon for Android https://tylerhosting.com/b2e/dbell.php/import-lexicon-for-android Wed, 22 May 2019 04:00:00 +0000 Dana Bell Information Technology Scrabble 407@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property tinymce_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property calendar_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property calendar_plugin::$dbtable is deprecated in /home4/tylering/public_html/b2e/plugins/_calendar.plugin.php on line 53

Deprecated: Creation of dynamic property calendar_plugin::$dbprefix is deprecated in /home4/tylering/public_html/b2e/plugins/_calendar.plugin.php on line 54

Deprecated: Creation of dynamic property calendar_plugin::$dbIDname is deprecated in /home4/tylering/public_html/b2e/plugins/_calendar.plugin.php on line 55

Deprecated: Creation of dynamic property quicktags_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property auto_anchors_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property shortlinks_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property custom_tags_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property archives_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property archives_plugin::$dbtable is deprecated in /home4/tylering/public_html/b2e/plugins/_archives.plugin.php on line 54

Deprecated: Creation of dynamic property archives_plugin::$dbprefix is deprecated in /home4/tylering/public_html/b2e/plugins/_archives.plugin.php on line 55

Deprecated: Creation of dynamic property archives_plugin::$dbIDname is deprecated in /home4/tylering/public_html/b2e/plugins/_archives.plugin.php on line 56

Deprecated: Creation of dynamic property email_elements_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property financial_contribution_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property inlines_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property ping_b2evonet_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property ping_pingomatic_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property twitter_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property webmention_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property webmention_plugin::$ping_service_process_message is deprecated in /home4/tylering/public_html/b2e/plugins/webmention_plugin/_webmention.plugin.php on line 52

Deprecated: Creation of dynamic property webmention_plugin::$ping_service_setting_title is deprecated in /home4/tylering/public_html/b2e/plugins/webmention_plugin/_webmention.plugin.php on line 53

Deprecated: Creation of dynamic property autolinks_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property videoplug_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property auto_p_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property mermaid_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property texturize_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property nofollow_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property content_blocks_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property table_contents_plugin::$classfile_path is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_plugins.class.php on line 413

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<p>My <a href="http://www.tylerhosting.com/b2e/dbell.php/creating-otcwl2018-for-hoot" target="_blank">last post</a> explained how to create a lexicon from the new NASPA word list (NWL2018) for the Android app. At that time you had to create a new database with the PC version of the program and transfer that to the Android device. Since then I've developed an import lexicon tool in the app. You will still create the lexicon on the PC, but instead of transferring the database you transfer the exported lexicon.</p> <p>Follow the steps in the first two parts of the instructions through phase 2 to create the lexicon.</p> <h3>Alternate phase 3</h3> <p>Instead of configuring it for Android, select Export Lexicon to save the lexicon to file and then transfer that file to emulated storage on the Android device.</p> <div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure3.png?mtime=1550872053"><img class="loadimg" style="width: 35%; float: right; margin-top: 10px;" title="" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure3.png?mtime=1550872053" alt="" width="968" height="638" /></a></div> <h2>PART 3 (Importing the Lexicon)</h2> <p>Open Hoot and go to Tools. Select Import Lexicon. Note that it says it is a <strong>beta</strong> feature. While it repeatedly works successfully for me when done correctly, there may be some errors that it doesn't catch. If you're importing into a custom database, make a backup first. In one test, Hoot did quit with an error but after restarting Hoot the new lexicon was successfully created. It's a feature you won't need often, but with new lexicons for TWL and Collins this year, I figure some of you might need it.</p> <p>The Import Lexicon screen will be displayed for the lexicon details. Select the file, give a name for the lexicon, and enter the details you would like to store for it, but don't include a copyright symbol in the notice. That would make it impossible to Export.  </p> <p><em>Pay attention to language and Tile Set</em>. The language links the words to the stored definitions. The Tile Set is used to calculate and store the scores. Then press the button to Import Lexicon.</p> <p><em>Wait!</em> Importing the lexicon and calculating the scores will take some time depending on the power of your device. On my S7, the lexicon for CSW19 was imported in less than five minutes. After the lexicon is created you will have to go to Settings to select the lexicon.</p> <h3>Other Lexicons</h3> <p>The Hoot download page has a collection of preconfigured lexicons you can use. However, it doesn't include the most commonly used lexicons (TWL and Collins) since distribution is limited. TWL (aka NWL2018) can be downloaded by members from the NASPA website.</p> <p> </p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/import-lexicon-for-android">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>
Deprecated: Creation of dynamic property shortlinks_plugin::$current_Item is deprecated in /home4/tylering/public_html/b2e/plugins/shortlinks_plugin/_shortlinks.plugin.php on line 169

Deprecated: Creation of dynamic property shortlinks_plugin::$link_types is deprecated in /home4/tylering/public_html/b2e/plugins/shortlinks_plugin/_shortlinks.plugin.php on line 171

Deprecated: Creation of dynamic property autolinks_plugin::$setting_nofollow_auto is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 439

Deprecated: Creation of dynamic property autolinks_plugin::$setting_autolink_defs_coll_db is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 442

Deprecated: Creation of dynamic property autolinks_plugin::$setting_autolink_urls is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 443

Deprecated: Creation of dynamic property autolinks_plugin::$setting_autolink_emails is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 444

Deprecated: Creation of dynamic property autolinks_plugin::$setting_autolink_username is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 445

Deprecated: Creation of dynamic property autolinks_plugin::$setting_autolink_tag is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 446

Deprecated: Creation of dynamic property PluginSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Creation of dynamic property PluginSettings::$plugin_ID is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_pluginsettings.class.php on line 36

Deprecated: Creation of dynamic property PluginSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Creation of dynamic property PluginSettings::$plugin_ID is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_pluginsettings.class.php on line 36

Deprecated: Creation of dynamic property autolinks_plugin::$replacement_link_array is deprecated in /home4/tylering/public_html/b2e/plugins/_autolinks.plugin.php on line 341

Deprecated: Creation of dynamic property videoplug_plugin::$video_width is deprecated in /home4/tylering/public_html/b2e/plugins/videoplug_plugin/_videoplug.plugin.php on line 152

Deprecated: Creation of dynamic property videoplug_plugin::$video_height is deprecated in /home4/tylering/public_html/b2e/plugins/videoplug_plugin/_videoplug.plugin.php on line 153

Deprecated: Creation of dynamic property PluginSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Creation of dynamic property PluginSettings::$plugin_ID is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_pluginsettings.class.php on line 36

Deprecated: Creation of dynamic property PluginSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121

Deprecated: Creation of dynamic property PluginSettings::$plugin_ID is deprecated in /home4/tylering/public_html/b2e/inc/plugins/model/_pluginsettings.class.php on line 36

Deprecated: Creation of dynamic property auto_p_plugin::$use_auto_br is deprecated in /home4/tylering/public_html/b2e/plugins/_auto_p.plugin.php on line 126

Deprecated: Creation of dynamic property auto_p_plugin::$add_p_in_block is deprecated in /home4/tylering/public_html/b2e/plugins/_auto_p.plugin.php on line 127

Deprecated: Creation of dynamic property auto_p_plugin::$skip_tags is deprecated in /home4/tylering/public_html/b2e/plugins/_auto_p.plugin.php on line 128

Deprecated: Creation of dynamic property nofollow_plugin::$setting_rel_options is deprecated in /home4/tylering/public_html/b2e/plugins/_nofollow.plugin.php on line 159

Deprecated: Creation of dynamic property nofollow_plugin::$setting_target_options is deprecated in /home4/tylering/public_html/b2e/plugins/_nofollow.plugin.php on line 172

My last post explained how to create a lexicon from the new NASPA word list (NWL2018) for the Android app. At that time you had to create a new database with the PC version of the program and transfer that to the Android device. Since then I've developed an import lexicon tool in the app. You will still create the lexicon on the PC, but instead of transferring the database you transfer the exported lexicon.

Follow the steps in the first two parts of the instructions through phase 2 to create the lexicon.

Alternate phase 3

Instead of configuring it for Android, select Export Lexicon to save the lexicon to file and then transfer that file to emulated storage on the Android device.

PART 3 (Importing the Lexicon)

Open Hoot and go to Tools. Select Import Lexicon. Note that it says it is a beta feature. While it repeatedly works successfully for me when done correctly, there may be some errors that it doesn't catch. If you're importing into a custom database, make a backup first. In one test, Hoot did quit with an error but after restarting Hoot the new lexicon was successfully created. It's a feature you won't need often, but with new lexicons for TWL and Collins this year, I figure some of you might need it.

The Import Lexicon screen will be displayed for the lexicon details. Select the file, give a name for the lexicon, and enter the details you would like to store for it, but don't include a copyright symbol in the notice. That would make it impossible to Export.  

Pay attention to language and Tile Set. The language links the words to the stored definitions. The Tile Set is used to calculate and store the scores. Then press the button to Import Lexicon.

Wait! Importing the lexicon and calculating the scores will take some time depending on the power of your device. On my S7, the lexicon for CSW19 was imported in less than five minutes. After the lexicon is created you will have to go to Settings to select the lexicon.

Other Lexicons

The Hoot download page has a collection of preconfigured lexicons you can use. However, it doesn't include the most commonly used lexicons (TWL and Collins) since distribution is limited. TWL (aka NWL2018) can be downloaded by members from the NASPA website.

 

]]>
https://tylerhosting.com/b2e/dbell.php/import-lexicon-for-android#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=407
Creating OTCWL2018 (NWL18) for Hoot https://tylerhosting.com/b2e/dbell.php/creating-otcwl2018-for-hoot Wed, 20 Feb 2019 04:53:00 +0000 Dana Bell Information Technology Scrabble 406@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/howl.png?mtime=1550873441"><img class="loadimg" style="width: 15%; float: right; margin-top: 10px;" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/howl.png?mtime=1550873441" alt="" width="192" height="192" /></a></div> <p><em>Update: The NASPA lexicons are now identified as NWL2018 or NWL18 (NWL2020 for new lexicon effective in 2021). It is also included in the Hoot Android app, so you don't need to create it unless you really want to. I'm leaving this post to show how you could create other lexicons.</em></p> <p>I've neglected this blog a bit since I started working on the Hoot Android app. Now that the new North American Scrabble word list it out, I feel I should preset a succinct demonstration on how to create a lexicon for OTCWL2018 (OWL4). The first caveat is that it is up to you to get the new word list. It is available to members to download from the NASPA website. It is also worth mentioning that it is copyrighted and may not be legally shared with others.</p> <h2>PART 1 (Getting the list)</h2> <p>You can get the list by going to <a href="http://scrabbleplayers.org">http://scrabbleplayers.org</a>. Then login (or join if you haven't) and go to Members and then Member Services</p> <div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4download.png?mtime=1550873202"><img class="loadimg" style="width: 75%; margin-top: 10px;" title="" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4download.png?mtime=1550873202" alt="" width="1340" height="337" /></a></div> <p>Scroll to Downloads and select <strong>OTCWL2018 (Windows text)</strong></p> <p>Remember where you save it...</p> <h2>PART 2 (Creating the lexicon)</h2> <p>Next you will need to have the PC program Hoot installed. If you don't, you can go to <a href="http://www.tylerhosting.com/hoot/downloads.html">http://www.tylerhosting.com/hoot/downloads.html</a> to get the latest version. Download the latest Version 3 Installer, Install and run it.</p> <h3>Phase 1</h3> <div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4creation2.png?mtime=1550871991"><img class="loadimg" style="width: 35%; float: right; margin-top: 10px;" title="" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4creation2.png?mtime=1550871991" alt="" width="674" height="632" /></a></div> <p>To create the lexicon, follow these steps</p> <ul> <li>Go to Settings &gt; Create Lexicon</li> <li>Select One per line</li> <li>Search and use the file you downloaded</li> <li>Enter OWL4 or OTCWL2018 for Lexicon Name</li> <li>Select en for Language</li> <li>Complete other fields as desired</li> <li>(Under Lexicon Notice, enter Copyright information)</li> <li>Create Lexicon (This should only take a minute or two)</li> <li>Close Window</li> </ul> <h3>Phase 2</h3> <div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure2.png?mtime=1550872053"><img class="loadimg" style="width: 35%; float: right; margin-top: 10px;" title="" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure2.png?mtime=1550872053" alt="" width="968" height="638" /></a></div> <p>To show hooks, probability, playability, anagrams, etc, you will need to configure the lexicon. Follow these steps</p> <ul> <li>Go to Settings &gt; Configure Lexicons</li> <li>Select the lexicon you created</li> <li>Select all the boxes in the right column</li> <li>(Download playability Ratings from <a href="http://www.tylerhosting.com/hoot/downloads/OSPD4OPlay.zip">http://www.tylerhosting.com/hoot/downloads/OSPD4OPlay.zip</a>)</li> <li>Select Begin</li> <li>When finished, close the screen.</li> </ul> <p>I use to say wait 30-45 minutes, depending on computer speed. Mine actually took 19 minutes.</p> <p>Note that if the program doesn't stay in the foreground, the status box may stop being updated, but it is still working. Just wait.</p> <h3>Phase 3 (for Android use)</h3> <div class="image_block"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure3.png?mtime=1550872053"><img class="loadimg" style="width: 35%; float: right; margin-top: 10px;" title="" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/owl4configure3.png?mtime=1550872053" alt="" width="968" height="638" /></a></div> <p>In order to prepare it for Android use, there is another step. If you forget, the app will do this but it will take longer. Follow these steps.</p> <ul> <li>Go to Settings &gt; Configure Lexicons (When Phase 2 is complete Configure for Android Use will be enabled)</li> <li>Select Configure for Android Use</li> <li>Select Begin</li> <li>This also only takes a minute or two</li> </ul> <p>Optionally, you can take additional steps to reduce the size of the database before you put it on your phone. See below </p> <h3><em>Alternate Phase 3, PART 3</em></h3> <p>The Hoot app has improved considerably since this post, so it's much easier to add new lexicons.</p> <p>Once you have created the lexicon on the desktop, instead of moving the database to the device, you can just export the lexicon to a file. Then in the Android app, go to the dot menue &gt; Tools &gt; Import Lexicon. Select that file, fill in the blanks, and Begin Import. When it's done, you're done. You just have to select the new lexicon in Settings.</p> <p>Note: You can't export a copyrighted lexicon such as the NWL20 that is included in the Hoot distribution.</p> <h2>PART 3 (Using the database)</h2> <p>To use the database in the Android app you will have to copy it to internal storage, or the emulated SD Card. Hoot can't read from an actual SD Card. This may be the most difficult for some. There are several ways to get it there, including using a file manager app, sending via Bluetooth, or Emailing it. If you use email on your phone, emailing it may be the easiest way.</p> <p><em>Send database</em>: You can find the location of the database on your computer by looking at Settings &gt; Databases. Once you find it, right click and Send To: mail recipient and send it to the email on your phone. </p> <p><em>Prepare a location</em>: You will need to decide where to put the database. My suggestion is to find or create the folder <strong>Documents</strong> and store it there. In a Samsung Galaxy S7 for example, you can run the Files app. It opens first to Downloads. Select the sandwich menu (three lines) and select the emulated SD Card (internal storage). From the three dots menu, select New folder and create the folder Documents.</p> <p><em>Save database</em>: Then open the email on your phone to save the database and select this folder.</p> <p><em>Select database</em>: Open the Hoot app and from the three dots select Settings, then Database, and find the file you just saved.</p> <p><em>Select lexicon</em>: You can then select the lexicon.</p> <h3>Minimize Database Size (Optional)</h3> <p>In order to reduce the size of the database you can take steps in the PC program to delete unused lexicons, and then recover the space they used. If you are using a new database, this may not be necessary.</p> <p>Go to Settings &gt; Configure Lexicons. For each lexicon you don't want in the database, select and Delete Lexicon</p> <p>Go to Settings &gt; Databases. Compact Database</p> <p> </p> <p> </p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/creating-otcwl2018-for-hoot">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>

Update: The NASPA lexicons are now identified as NWL2018 or NWL18 (NWL2020 for new lexicon effective in 2021). It is also included in the Hoot Android app, so you don't need to create it unless you really want to. I'm leaving this post to show how you could create other lexicons.

I've neglected this blog a bit since I started working on the Hoot Android app. Now that the new North American Scrabble word list it out, I feel I should preset a succinct demonstration on how to create a lexicon for OTCWL2018 (OWL4). The first caveat is that it is up to you to get the new word list. It is available to members to download from the NASPA website. It is also worth mentioning that it is copyrighted and may not be legally shared with others.

PART 1 (Getting the list)

You can get the list by going to http://scrabbleplayers.org. Then login (or join if you haven't) and go to Members and then Member Services

Scroll to Downloads and select OTCWL2018 (Windows text)

Remember where you save it...

PART 2 (Creating the lexicon)

Next you will need to have the PC program Hoot installed. If you don't, you can go to http://www.tylerhosting.com/hoot/downloads.html to get the latest version. Download the latest Version 3 Installer, Install and run it.

Phase 1

To create the lexicon, follow these steps

  • Go to Settings > Create Lexicon
  • Select One per line
  • Search and use the file you downloaded
  • Enter OWL4 or OTCWL2018 for Lexicon Name
  • Select en for Language
  • Complete other fields as desired
  • (Under Lexicon Notice, enter Copyright information)
  • Create Lexicon (This should only take a minute or two)
  • Close Window

Phase 2

To show hooks, probability, playability, anagrams, etc, you will need to configure the lexicon. Follow these steps

I use to say wait 30-45 minutes, depending on computer speed. Mine actually took 19 minutes.

Note that if the program doesn't stay in the foreground, the status box may stop being updated, but it is still working. Just wait.

Phase 3 (for Android use)

In order to prepare it for Android use, there is another step. If you forget, the app will do this but it will take longer. Follow these steps.

  • Go to Settings > Configure Lexicons (When Phase 2 is complete Configure for Android Use will be enabled)
  • Select Configure for Android Use
  • Select Begin
  • This also only takes a minute or two

Optionally, you can take additional steps to reduce the size of the database before you put it on your phone. See below 

Alternate Phase 3, PART 3

The Hoot app has improved considerably since this post, so it's much easier to add new lexicons.

Once you have created the lexicon on the desktop, instead of moving the database to the device, you can just export the lexicon to a file. Then in the Android app, go to the dot menue > Tools > Import Lexicon. Select that file, fill in the blanks, and Begin Import. When it's done, you're done. You just have to select the new lexicon in Settings.

Note: You can't export a copyrighted lexicon such as the NWL20 that is included in the Hoot distribution.

PART 3 (Using the database)

To use the database in the Android app you will have to copy it to internal storage, or the emulated SD Card. Hoot can't read from an actual SD Card. This may be the most difficult for some. There are several ways to get it there, including using a file manager app, sending via Bluetooth, or Emailing it. If you use email on your phone, emailing it may be the easiest way.

Send database: You can find the location of the database on your computer by looking at Settings > Databases. Once you find it, right click and Send To: mail recipient and send it to the email on your phone. 

Prepare a location: You will need to decide where to put the database. My suggestion is to find or create the folder Documents and store it there. In a Samsung Galaxy S7 for example, you can run the Files app. It opens first to Downloads. Select the sandwich menu (three lines) and select the emulated SD Card (internal storage). From the three dots menu, select New folder and create the folder Documents.

Save database: Then open the email on your phone to save the database and select this folder.

Select database: Open the Hoot app and from the three dots select Settings, then Database, and find the file you just saved.

Select lexicon: You can then select the lexicon.

Minimize Database Size (Optional)

In order to reduce the size of the database you can take steps in the PC program to delete unused lexicons, and then recover the space they used. If you are using a new database, this may not be necessary.

Go to Settings > Configure Lexicons. For each lexicon you don't want in the database, select and Delete Lexicon

Go to Settings > Databases. Compact Database

 

 

]]>
https://tylerhosting.com/b2e/dbell.php/creating-otcwl2018-for-hoot#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=406
Hoot - the Android app https://tylerhosting.com/b2e/dbell.php/hoot-the-android-app Tue, 09 Oct 2018 21:12:00 +0000 Dana Bell Information Technology Scrabble 405@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<div style="border-style: solid; border-color: #096; padding: 10px 15px 0px 15px; margin-bottom: 5px;"> <p style="padding: 0px; margin: 0px;">New! Two Android apps of <a href="http://www.tylerhosting.com/hoot/" target="_blank">Hoot </a>are now under development. Each app includes a database with the installed lexicon, and the ability to use external databases. <em><strong>Update: </strong></em> The first release of the Hoot app is now available on Google Play. The search screen is a modification of the Combination search in the PC version and has sort options. Click on the link to get the them on Google Play. Please provide feedback with problems, suggestions.<br /><br /></p> <table style="padding: 0px;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <p style="text-align: center;"><strong>North American lexicon</strong></p> <p style="margin: 0px; padding: 0px; text-align: center;"><a href="https://play.google.com/store/apps/details?id=com.tylerhosting.hoot.wj2" target="_blank"><img style="margin: 0px; padding: 0px;" src="http://www.tylerhosting.com/hoot/google-play-badge.png" alt="Get Beta" width="40%" /></a><br /> <span style="margin: 0p; padding: 0px; font-size: smaller;">Google Play and the Google Play logo are trademarks of Google LLC.</span></p> </td> <td> <p style="text-align: center;"><strong>Collins lexicon</strong></p> <p style="margin: 0px; padding: 0px; text-align: center;"><a href="https://play.google.com/store/apps/details?id=com.tylerhosting.hoot.collins" target="_blank"><img style="margin: 0px; padding: 0px;" src="http://www.tylerhosting.com/hoot/google-play-badge.png" alt="Get Beta" width="40%" /></a><br /> <span style="margin: 0p; padding: 0px; font-size: smaller;">Google Play and the Google Play logo are trademarks of Google LLC.</span></p> </td> </tr> </tbody> </table> </div> <p>After two years working on Hoot, the desktop version, I started working on an app for Android. While I've wanted to build one much sooner, the computer limitations prevented me from getting much done. My computer was more than a decade old, and had no upgrade options available. After going from a system with 1.5 GB to one with 32 GB, and other improvements, I decided I could begin work. In the meantime, Android Studio and the emulators have improved so much that getting work done on it was a pleasure and I was able to get the beta ready in just over a month. I have a long list of things I want to do with it so app development will probably continue for another year.</p> <p>Writing an Android app is a lot like creating a dynamic web page. With the web you need to learn formatting with HTML/CSS, and write code in PHP or Javascript. With Android development you need to learn an Android version of <a href="http://www.tellmewhatis.com/xml">XML</a>, and write code in Java. While XML is a simple concept, the language is new and complex, with many caveats. Once I learn it more, I'll begin to appreciate it more. While there is an abundance or resources available for learning Android development, much of it is old and uses out-dated concepts, and deprecated methods. Improving my skill involves both learning what to do and how to do it, as well as learning what not to do and how not to do it, now.</p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/hoot-the-android-app">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>

New! Two Android apps of Hoot are now under development. Each app includes a database with the installed lexicon, and the ability to use external databases. Update: The first release of the Hoot app is now available on Google Play. The search screen is a modification of the Combination search in the PC version and has sort options. Click on the link to get the them on Google Play. Please provide feedback with problems, suggestions.

North American lexicon

Get Beta
Google Play and the Google Play logo are trademarks of Google LLC.

Collins lexicon

Get Beta
Google Play and the Google Play logo are trademarks of Google LLC.

After two years working on Hoot, the desktop version, I started working on an app for Android. While I've wanted to build one much sooner, the computer limitations prevented me from getting much done. My computer was more than a decade old, and had no upgrade options available. After going from a system with 1.5 GB to one with 32 GB, and other improvements, I decided I could begin work. In the meantime, Android Studio and the emulators have improved so much that getting work done on it was a pleasure and I was able to get the beta ready in just over a month. I have a long list of things I want to do with it so app development will probably continue for another year.

Writing an Android app is a lot like creating a dynamic web page. With the web you need to learn formatting with HTML/CSS, and write code in PHP or Javascript. With Android development you need to learn an Android version of XML, and write code in Java. While XML is a simple concept, the language is new and complex, with many caveats. Once I learn it more, I'll begin to appreciate it more. While there is an abundance or resources available for learning Android development, much of it is old and uses out-dated concepts, and deprecated methods. Improving my skill involves both learning what to do and how to do it, as well as learning what not to do and how not to do it, now.

]]>
https://tylerhosting.com/b2e/dbell.php/hoot-the-android-app#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=405
Images in b2evolution https://tylerhosting.com/b2e/dbell.php/images-in-b2evolution Sat, 12 Aug 2017 03:04:00 +0000 Dana Bell Information Technology Site Small Talk Design Computing 394@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<p>Many years ago I started using <a href="http://b2evolution.net/">b2evolution</a> for my blog even though it was not the most popular platform. I'm still using it. Although it is complex, it gives me options that don't exist in other platforms. Now that it has expanded to include other types of collections (photo blogs, manuals, etc), it is even more complex. Unfortunately, the image insertion routines in b2evolution are quite inflexible, and I suspect that is one reason it will never be very popular.</p> <p>The guide says you should attach the image where you want it, but it doesn't include the file in the page markup and instead includes a tag that identifies the image. The logic presented in the on-line forums is that you can adjust the stylesheet and php to apply uniformly to all images. You can put the image in different sections (teaser, cover, in-line) of the post and it supposedly is more efficient that way.</p> <h3>The Issue</h3> <p>Although you have multiple options for placement (vertically) in a post, if it's an in-line image you can't see it in the editor. Instead you see . Additionally you can't modify the formatting of the image. That's where the problems resides. If b2evolution included the code in-line (like it used to) I could modify the HTML/CSS to format the image. </p> <p>Emulating a print publication, I like to wrap text around some images, and like adjusting the size to make it look more balanced. Well, there is a way to include the markup, but it's not intuitive.</p> <h3>The Work Around</h3> <p>I've discovered after inserting all my images that there is a viable workaround to get the code into the post, something that used to be an option in the editor in past versions.</p> <p>1. Go to the b2e Back-office and select Files &gt; Browse and upload the images for the post. I prefer to put them in the root collection folder, not the quick-uploads.<br /> <br />2. From the post, attach any image to the post (ideally an inline). The easiest way is to select Attach existing files and select one. You won't be including that in the post, but you will be using that image to get to other files you would like to insert. If an image tag is inserted into the post you can delete it if you want. </p> <p> <a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/attachimage.png?mtime=1502468848"><img src="http://www.tylerhosting.com/b2e/media/blogs/dbell/attachimage.png?mtime=1502468848" alt="" width="431" height="56" /></a></p> <p>3. Position your cursor at the point in your post where you want to include one of your uploaded images.</p> <p>4. Go to the attached image in the Images and Attachments section and click on the Locate file icon (bull's eye).</p> <div class="image_block" style="float: right; margin-left: 20px;"><a href="http://www.tylerhosting.com/b2e/media/blogs/dbell/locateimage.png?mtime=1502468848"><img class="loadimg" src="http://www.tylerhosting.com/b2e/media/blogs/dbell/locateimage.png?mtime=1502468848" alt="" width="115" height="121" /></a> </div> <p>5. When the Attach files dialog box is displayed find the file you really want. You may have to change folders to find it. Again, I prefer to use images in the root collection folder.</p> <p>6. Check the box for the file to select it. Don't press Attach. </p> <p>7. Finally, at the bottom, with selected files: change the option to Insert IMG/link into post and press Go.</p> <h3>Formatting Images </h3> <p>The main reason I want the code in the post is so I can customize the image. In order to do that switch to Markup view and find the image's code. It'll begin with something like</p> <blockquote> <pre>&lt;div class="image_block"&gt;&lt;a href=".."&gt;</pre> </blockquote> <p>Two of the modifications that I generally make are to position the image and resize the image to look good in the post. By positioning, I generally float it left or right.</p> <h4>Floating Images</h4> <p>In markup, find the image markup as noted above and change the div to add</p> <blockquote> <pre>style="float:right"</pre> </blockquote> <p>so it looks like this</p> <blockquote> <pre>&lt;div class="image_block" style="float:right"&gt;&lt;a href=".."&gt;</pre> </blockquote> <p>If you are floating, it might also be necessary to adjust the margins by changing it to </p> <blockquote> <pre>style="float:right; margin-left:20px"</pre> </blockquote> <h4>Resizing</h4> <p>The image should show the actual size in the img tag and would look something like this.</p> <blockquote> <pre>width="431" height="56" /&gt;</pre> </blockquote> <p>If the size is not appropriate for the post, I simply change the width to a percentage and drop the height so it would look something like this</p> <blockquote> <pre>width="35" /&gt;</pre> </blockquote> <p>I have used b2evolution for many years, and find it useful for multiple blogs, but I guess these kinds of challenges are one reason it is not so popular as a blogging platform.</p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/images-in-b2evolution">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>
Many years ago I started using b2evolution for my blog even though it was not the most popular platform. I'm still using it. Although it is complex, it gives me options that don't exist in other platforms. Now that it has expanded to include other types of collections (photo blogs, manuals, etc), it is even more complex. Unfortunately, the image insertion routines in b2evolution are quite inflexible, and I suspect that is one reason it will never be very popular.

The guide says you should attach the image where you want it, but it doesn't include the file in the page markup and instead includes a tag that identifies the image. The logic presented in the on-line forums is that you can adjust the stylesheet and php to apply uniformly to all images. You can put the image in different sections (teaser, cover, in-line) of the post and it supposedly is more efficient that way.

The Issue

Although you have multiple options for placement (vertically) in a post, if it's an in-line image you can't see it in the editor. Instead you see . Additionally you can't modify the formatting of the image. That's where the problems resides. If b2evolution included the code in-line (like it used to) I could modify the HTML/CSS to format the image. 

Emulating a print publication, I like to wrap text around some images, and like adjusting the size to make it look more balanced. Well, there is a way to include the markup, but it's not intuitive.

The Work Around

I've discovered after inserting all my images that there is a viable workaround to get the code into the post, something that used to be an option in the editor in past versions.

1. Go to the b2e Back-office and select Files > Browse and upload the images for the post. I prefer to put them in the root collection folder, not the quick-uploads.

2. From the post, attach any image to the post (ideally an inline). The easiest way is to select Attach existing files and select one. You won't be including that in the post, but you will be using that image to get to other files you would like to insert. If an image tag is inserted into the post you can delete it if you want. 

 

3. Position your cursor at the point in your post where you want to include one of your uploaded images.

4. Go to the attached image in the Images and Attachments section and click on the Locate file icon (bull's eye).

 

5. When the Attach files dialog box is displayed find the file you really want. You may have to change folders to find it. Again, I prefer to use images in the root collection folder.

6. Check the box for the file to select it. Don't press Attach. 

7. Finally, at the bottom, with selected files: change the option to Insert IMG/link into post and press Go.

Formatting Images 

The main reason I want the code in the post is so I can customize the image. In order to do that switch to Markup view and find the image's code. It'll begin with something like

<div class="image_block"><a href="..">

Two of the modifications that I generally make are to position the image and resize the image to look good in the post. By positioning, I generally float it left or right.

Floating Images

In markup, find the image markup as noted above and change the div to add

style="float:right"

so it looks like this

<div class="image_block" style="float:right"><a href="..">

If you are floating, it might also be necessary to adjust the margins by changing it to 

style="float:right; margin-left:20px"

Resizing

The image should show the actual size in the img tag and would look something like this.

width="431" height="56" />

If the size is not appropriate for the post, I simply change the width to a percentage and drop the height so it would look something like this

width="35" />

I have used b2evolution for many years, and find it useful for multiple blogs, but I guess these kinds of challenges are one reason it is not so popular as a blogging platform.

]]>
https://tylerhosting.com/b2e/dbell.php/images-in-b2evolution#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=394
Taxability of Home Sales https://tylerhosting.com/b2e/dbell.php/taxability-of-home-sales Sun, 30 Jul 2017 02:55:00 +0000 Dana Bell Tax Accounting Financial Planning 390@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<p>While enjoying a round of disc golf this week one of the players was talking about someone who had to live in a house he inherited for three years in order to avoid paying tax on the sale of the house. I may not have all the relevant details but it seemed confusing enough that I thought it would be a good idea to relay some tax information to others concerning home sales and a warning about tax traps.</p> <h2>Home Sale Tax Facts</h2> <p>There are three basic facts you should remember about home sales. The first thing should remember is that you only have to pay tax on the profit from a sale. The profit is based on the difference between the basis and the selling price. Generally, the basis is what the house was purchased for plus amounts paid for improvements. So, if you purchased the house at $75,000 and sold at $100,000, the profit would be only $25,000. It's only natural that you would make a profit on a home sale since inflation and appreciation increases the value of your home.</p> <p>Secondly, current tax law allows owners to exclude $250,000 ($500,000 if married) of gain on a home sale. To qualify, the home must have been owned for two of the last five years, and used as a main home for two years out of the prior five years. So that taxable $25,000 becomes zero. Incidentally, that hasn't always been the case. See <a href="http://www.tylerhosting.com/b2e/dbell.php/income-averaging-and-transitions-in">Income Averaging and Transitions in Tax Law</a> for an interesting comparison with 1964 tax law.</p> <p>Third, property inherited receives a basis equal to the fair market value of the home at the time of the decedent's death (with some exceptions). In this case, the heir would not qualify for the exclusion mentioned above since he didn't live there. However, even though he may not have paid anything for the house he inherited, his basis for calculating profit is the value at death, which should be close to the actual selling price. By definition, it's not likely that someone will purchase the house at very much over the "fair market value", so it should be rare to owe any tax on the sale. It's much more likely that you would be selling below fair market value just to get it sold.</p> <p>Most people probably understand that you only pay tax on the profit, but many will not know about the exclusion or the treatment of inherited property. Of course, there may be other aspects of the sale to consider, but remembering these three facts may come in handy for you or someone you know. </p> <h2>Tax traps</h2> <p>There are many tax traps where you are liable for taxes you didn't know about, but there's probably more "traps" that involve taxes you paid that you didn't have to or credits you didn't claim.</p> <h3>Education Tax Credits</h3> <p>For many years people, including many tax preparers were not aware of the benefits of education credits. You may think that's just for low-income taxpayers, but if you make less than $80,000 ($160,000 joint), you could qualify for up to $2500 in AOTC, often even if you received financial aid, and even if you didn't pay anything out of pocket. Plus, there are several other tax credits.<br />Education Tax Credits were so overlooked that I wrote a book on the subject two years ago. See <a href="http://www.tylerhosting.com/dbell/books/etc.html">Education Tax Credits</a>. A few things have changed (technically) since then, but the credit is essentially the same. For example, you now have to have a 1098T, but the institutions will now have to provide one to you. If they don't you can still claim as if they did. You can see a summary article at <a href="http://www.tylerhosting.com/b2e/dbell.php/education-credits-beyond-the-basics">Education Credits: Beyond the Basics</a>.</p> <h3>Inherited IRAs</h3> <p>One of the basic concepts of inheritance of property is that it gets a step-up in basis which usually means no taxes. Although inherited property gets a step-up in basis, if you receive an IRA as an inheritance, it is taxable and there is a significant penalty for cashing it in. There are other rules related to IRA management, and the institution may not warn you about them. Read more about <a href="http://www.tylerhosting.com/b2e/dbell.php/common-ira-traps">Common IRA Traps</a>. </p> <h3>You can amend</h3> <p>Yet another thing that many people are not aware of is that taxpayers can normally amend (change) their tax returns for up to three years to get benefits they didn't claim when they first filed. Of course, there are some things you can't easily change with an amended return, such as uncashing in an IRA distribution.</p> <p>In many tax cases you can consult a tax professional, but in some cases it may not be enough to consult one or two professionals. If it involves a large amount or tax, research it yourself and ask a lot of questions. Start with googling if you want, but refer to taxpayer <a href="https://www.irs.gov/forms-pubs">publications </a>or the <a href="https://www.law.cornell.edu/uscode/text/26/">tax code</a> to verify what others are saying. Don't blindly rely on a website or even a tax preparer. Many times the tax forms and instructions will guide you through the calculations, while tax preparers way speedily just fill in the blanks.</p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/taxability-of-home-sales">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>
While enjoying a round of disc golf this week one of the players was talking about someone who had to live in a house he inherited for three years in order to avoid paying tax on the sale of the house. I may not have all the relevant details but it seemed confusing enough that I thought it would be a good idea to relay some tax information to others concerning home sales and a warning about tax traps.

Home Sale Tax Facts

There are three basic facts you should remember about home sales. The first thing should remember is that you only have to pay tax on the profit from a sale. The profit is based on the difference between the basis and the selling price. Generally, the basis is what the house was purchased for plus amounts paid for improvements. So, if you purchased the house at $75,000 and sold at $100,000, the profit would be only $25,000. It's only natural that you would make a profit on a home sale since inflation and appreciation increases the value of your home.

Secondly, current tax law allows owners to exclude $250,000 ($500,000 if married) of gain on a home sale. To qualify, the home must have been owned for two of the last five years, and used as a main home for two years out of the prior five years. So that taxable $25,000 becomes zero. Incidentally, that hasn't always been the case. See Income Averaging and Transitions in Tax Law for an interesting comparison with 1964 tax law.

Third, property inherited receives a basis equal to the fair market value of the home at the time of the decedent's death (with some exceptions). In this case, the heir would not qualify for the exclusion mentioned above since he didn't live there. However, even though he may not have paid anything for the house he inherited, his basis for calculating profit is the value at death, which should be close to the actual selling price. By definition, it's not likely that someone will purchase the house at very much over the "fair market value", so it should be rare to owe any tax on the sale. It's much more likely that you would be selling below fair market value just to get it sold.

Most people probably understand that you only pay tax on the profit, but many will not know about the exclusion or the treatment of inherited property. Of course, there may be other aspects of the sale to consider, but remembering these three facts may come in handy for you or someone you know. 

Tax traps

There are many tax traps where you are liable for taxes you didn't know about, but there's probably more "traps" that involve taxes you paid that you didn't have to or credits you didn't claim.

Education Tax Credits

For many years people, including many tax preparers were not aware of the benefits of education credits. You may think that's just for low-income taxpayers, but if you make less than $80,000 ($160,000 joint), you could qualify for up to $2500 in AOTC, often even if you received financial aid, and even if you didn't pay anything out of pocket. Plus, there are several other tax credits.
Education Tax Credits were so overlooked that I wrote a book on the subject two years ago. See Education Tax Credits. A few things have changed (technically) since then, but the credit is essentially the same. For example, you now have to have a 1098T, but the institutions will now have to provide one to you. If they don't you can still claim as if they did. You can see a summary article at Education Credits: Beyond the Basics.

Inherited IRAs

One of the basic concepts of inheritance of property is that it gets a step-up in basis which usually means no taxes. Although inherited property gets a step-up in basis, if you receive an IRA as an inheritance, it is taxable and there is a significant penalty for cashing it in. There are other rules related to IRA management, and the institution may not warn you about them. Read more about Common IRA Traps

You can amend

Yet another thing that many people are not aware of is that taxpayers can normally amend (change) their tax returns for up to three years to get benefits they didn't claim when they first filed. Of course, there are some things you can't easily change with an amended return, such as uncashing in an IRA distribution.

In many tax cases you can consult a tax professional, but in some cases it may not be enough to consult one or two professionals. If it involves a large amount or tax, research it yourself and ask a lot of questions. Start with googling if you want, but refer to taxpayer publications or the tax code to verify what others are saying. Don't blindly rely on a website or even a tax preparer. Many times the tax forms and instructions will guide you through the calculations, while tax preparers way speedily just fill in the blanks.

]]>
https://tylerhosting.com/b2e/dbell.php/taxability-of-home-sales#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=390
Check This Out Too https://tylerhosting.com/b2e/dbell.php/check-this-out-too Thu, 11 May 2017 03:33:00 +0000 Dana Bell Professional Microsoft Office Word 384@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<p>A few months ago J. Carlton Collins, wrote an <a href="http://www.journalofaccountancy.com/issues/2016/nov/checkmark-in-word.html">article </a>in the Journal of Accountancy about adding check marks to a Word document. He was writing in response to a question about getting a decent looking check mark in Word and one suggestion was to use <a href="http://www.copypastecharacter.com/">copypastecharacter.com</a> to accomplish that. That appears to work but you probably don’t have to go outside Word to find what you need. Here’s another way to get decent checkmarks. This works in Windows, but some symbols will not be visible until you have the font installed (OpenSymbol, Wingdings, Symbola).</p> <p><strong>Other Checks</strong></p> <p>You don't have to take special steps and use Flash Player to get a good check mark in Word. Symbol is not the only symbol font in Word. After you "<strong>Insert Symbol, More Symbols...</strong>", you can select a different font to use. One symbol font on my system that has decent check marks is <strong>OpenSymbol</strong>. The check mark can be found near the bottom of the list, along with an X, and a version with both symbols in a box.. oh, and an empty box. And some alternate checks.</p> <p><a href="/b2e/media/blogs/dbell/opensymbolchecks.png?mtime=1494445119"><img class="loadimg" src="/b2e/media/blogs/dbell/opensymbolchecks.png?mtime=1494445119" alt="" width="161" height="32" /></a></p> <p>In my 2007 version of Word there are several other symbol fonts, and they are easy to find since they are at the bottom of the font list. There is Wingdings, Wingdings 2, and Wingdings 3, all from Microsoft. <strong>Wingdings</strong> has the same set of check characters as OpenSymbol.</p> <p>In order to get a list of symbol fonts on your own system, using Windows Explorer and open <strong>C:\Windows\Fonts</strong>. The list of fonts is normally displayed with several columns showing various characteristics of the fonts. Two characteristics are Category and Designed for. Click on the header to sort by Category, and then scroll down to the list of Symbol/Pictograph. Not all designers set these characteristics, so there may be others (like <strong>Symbola</strong>) you can use.</p> <p><a href="/b2e/media/blogs/dbell/symbolfonts.png?mtime=1494445117"><img class="loadimg" style="float: right;" src="/b2e/media/blogs/dbell/symbolfonts.png?mtime=1494445117" alt="" width="1019" height="621" /></a></p> <p>If you don't have many, you could also search the web for Symbol fonts and find some that would be useful to you. Of course, that sounds easy, but most sites only display some of the alphabetic characters which may or may not include symbols so you may not be able to see what symbols are available until you download and install.</p> <p><strong>Word Remembers</strong></p> <p>But wait!! There's more. Once you use a symbol, Word puts it in the list of recently used symbols so you probably won't have to search for it again. Some of them are shown in the main Word screen when you click Symbol. Others are shown at the bottom of the <strong>More Symbols...</strong> dialog box under Recently used symbols. How many? I'm not sure. At first I only saw about a dozen but as you widen the window you can see others. I counted 36 that I've used.</p> <p><a href="/b2e/media/blogs/dbell/recentlyusedsymbols.png?mtime=1494450700"><img class="loadimg" src="/b2e/media/blogs/dbell/recentlyusedsymbols.png?mtime=1494450700" alt="" width="1160" height="83" /></a></p> <p><strong>Embedding</strong></p> <p>One other issue that you may want to consider, whether or not you use symbols, is how your font will be viewed by a recipient of your document. If they don't have the font on their system they may see garbage. In order to embed (or include the font) in your document, select Word Options and Embed fonts under Save.</p> <p><a href="/b2e/media/blogs/dbell/wordoptions.png?mtime=1494445117"><img class="loadimg" src="/b2e/media/blogs/dbell/wordoptions.png?mtime=1494445117" alt="" width="426" height="447" /></a></p> <p><a href="/b2e/media/blogs/dbell/embedfonts.png?mtime=1494445117"><img class="loadimg" src="/b2e/media/blogs/dbell/embedfonts.png?mtime=1494445117" alt="" width="696" height="509" /></a></p> <p>The more you know about how Microsoft Word works the less you will have to take drastic measures to get something to work.</p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/check-this-out-too">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>
A few months ago J. Carlton Collins, wrote an article in the Journal of Accountancy about adding check marks to a Word document. He was writing in response to a question about getting a decent looking check mark in Word and one suggestion was to use copypastecharacter.com to accomplish that. That appears to work but you probably don’t have to go outside Word to find what you need. Here’s another way to get decent checkmarks. This works in Windows, but some symbols will not be visible until you have the font installed (OpenSymbol, Wingdings, Symbola).

Other Checks

You don't have to take special steps and use Flash Player to get a good check mark in Word. Symbol is not the only symbol font in Word. After you "Insert Symbol, More Symbols...", you can select a different font to use. One symbol font on my system that has decent check marks is OpenSymbol. The check mark can be found near the bottom of the list, along with an X, and a version with both symbols in a box.. oh, and an empty box. And some alternate checks.

In my 2007 version of Word there are several other symbol fonts, and they are easy to find since they are at the bottom of the font list. There is Wingdings, Wingdings 2, and Wingdings 3, all from Microsoft. Wingdings has the same set of check characters as OpenSymbol.

In order to get a list of symbol fonts on your own system, using Windows Explorer and open C:\Windows\Fonts. The list of fonts is normally displayed with several columns showing various characteristics of the fonts. Two characteristics are Category and Designed for. Click on the header to sort by Category, and then scroll down to the list of Symbol/Pictograph. Not all designers set these characteristics, so there may be others (like Symbola) you can use.

If you don't have many, you could also search the web for Symbol fonts and find some that would be useful to you. Of course, that sounds easy, but most sites only display some of the alphabetic characters which may or may not include symbols so you may not be able to see what symbols are available until you download and install.

Word Remembers

But wait!! There's more. Once you use a symbol, Word puts it in the list of recently used symbols so you probably won't have to search for it again. Some of them are shown in the main Word screen when you click Symbol. Others are shown at the bottom of the More Symbols... dialog box under Recently used symbols. How many? I'm not sure. At first I only saw about a dozen but as you widen the window you can see others. I counted 36 that I've used.

Embedding

One other issue that you may want to consider, whether or not you use symbols, is how your font will be viewed by a recipient of your document. If they don't have the font on their system they may see garbage. In order to embed (or include the font) in your document, select Word Options and Embed fonts under Save.

The more you know about how Microsoft Word works the less you will have to take drastic measures to get something to work.

]]>
https://tylerhosting.com/b2e/dbell.php/check-this-out-too#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=384
Hoot With a Ribbon, MDI, and Inheritance https://tylerhosting.com/b2e/dbell.php/hoot-with-a-ribbon Sun, 05 Mar 2017 04:55:00 +0000 Dana Bell Information Technology Computing 382@https://tylerhosting.com/b2e/
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 4911

Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 11107

Deprecated: Creation of dynamic property Item::$pages is deprecated in /home4/tylering/public_html/b2e/inc/items/model/_item.class.php on line 2412

Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /home4/tylering/public_html/b2e/inc/settings/model/_abstractsettings.class.php on line 121
<p>I just released a new beta version of <a title="Hoot Scrabble study tools" href="http://www.tylerhosting.com/hoot/" target="_blank">Hoot</a>. While it is fully functioning, it does involve significant changes in the way Hoot works. With version 1.9.0, Hoot employs an MDI (Multiple document interface). Previously, Hoot opened new windows for different types of searches. These windows filled the taskbar and were scattered across the desktop. With MDI all windows are contained in the program's main menu.</p> <p>Another significant difference is the use of inherited forms. While users should not care, it does mean the code is smaller and (theoretically) faster. For me, it means changes can be made to the interface easier.</p> <p>Finally, the new Hoot includes a ribbon, like you might have seen in Microsoft Office applications beginning in 2007. While this ribbon is not from Microsoft, it is a very good look-alike. All of this may sound boring, but for a developer it is a little fascinating, figuring out how things work, as well as how to work around limitations.</p> <h2>Multiple Document Interface</h2> <p>With the MDI I could avoid creating new form for each call and instead open them as child windows. Other than setting the appropriate flags on the parent form, the only thing I had to do different is open the forms appropriately for the MDI. One standard way to open such forms is with code like what I've used. This also cascades the new form over the last active child.</p> <blockquote> <pre>private void OpenChild(Form child)<br /> {<br /> child.MdiParent = this;<br /> Form last = new Form();<br /> if (this.MdiChildren.Count() &gt; 0)<br /> foreach (Form f in this.MdiChildren)<br /> if (f == this.ActiveMdiChild)<br /> {<br /> last = f;<br /> child.Location = new Point(last.Location.X + 25, last.Location.Y + 25);<br /> break;<br /> }<br /> child.Show();<br /> }</pre> </blockquote> <p>If I want to insure only one copy of that form is used I simply check for the form name among the children.</p> <blockquote> <pre>private void OpenOneChild(Form child)<br /> {<br /> if (!(FindChild(child.Name) == null))<br /> {<br /> child.Activate();<br /> return;<br /> }<br /> OpenChild(child);<br /> }</pre> <pre>private Form FindChild(string name)<br /> {<br /> foreach (Form f in this.MdiChildren)<br /> {<br /> if ((string)f.Text == name)<br /> return (f);<br /> }<br /> return null;<br /> }</pre> </blockquote> <p>Of course, if I wanted to open a form from a child window, I would use a different method.</p> <blockquote> <pre>private void OpenSibling(Form child)<br /> {<br /> child.MdiParent = this.ParentForm;<br /> Form last = new Form();<br /> if (this.ParentForm.MdiChildren.Count() &gt; 0)<br /> foreach (Form f in this.ParentForm.MdiChildren)<br /> if (f == this.ParentForm.ActiveMdiChild)<br /> {<br /> last = f;<br /> child.Location = new Point(last.Location.X + 25, last.Location.Y + 25);<br /> break;<br /> }<br /> child.Show();<br /> }</pre> </blockquote> <p> </p> <h2>Inheritance</h2> <p>When I mentioned Inherited forms on one discussion board one of the responses started with "ouch, ouch, ouch". Well, it's not so bad. With inheritance in C# you can't normally pass parameters to an inherited form, so I found a workaround. While inherited forms apparently can't take parameters in their constructors, at least not directly, you can access the controls of the inherited form and force a parameter.</p> <p>1. Add a label named lblTrigger (public or protected)<br />2. Add an event to the label for the TextChanged event</p> <blockquote> <pre>private void lblTrigger_TextChanged(object sender, EventArgs e)<br /> {<br /> switch (lblTrigger.Text)<br /> {<br /> case "Hooks": ShowHooks(); break;<br /> case "Words": HideHooks(); break;<br /> case "Slides": btnSlideShow_Click(sender, e); break;<br /> case "ChangeLanguage": PopulateResources(); break;<br /> }<br /> lblTrigger.Text = "Trigger";<br /> }</pre> </blockquote> <p>3. Change that label from the ribbon or another form</p> <blockquote> <pre>public static void SetTrigger(string text, System.Windows.Forms.Form frm) {<br /> if (frm == null)<br /> return;<br /> foreach (System.Windows.Forms.Control ctl in frm.Controls)<br /> {<br /> if (ctl.Name.Equals("lblTrigger"))<br /> ctl.Text = text;<br /> }<br /> }</pre> </blockquote> <p>You're not limited to one label, either. You can add parameters to use with a different label. That's what I've done using lblParameters included in one of the code segments below. Set the parameters, then "pull" the trigger.</p> <p>In one case "SavedSearch" is the text I set for the trigger.</p> <blockquote> <pre>case "SavedSearch": OpenFromRecent(); break;</pre> </blockquote> <p>That then calls this method which simulates a button click on the form.</p> <blockquote> <pre>private void OpenFromRecent()<br /> {<br /> specs = Utilities.LoadSearch(lblParameters.Text);<br /> if (specs == null)<br /> return;<br /> cboSearchType.SelectedIndex = Array.IndexOf(english, specs.searchtype);<br /> if (!(cboSearchType.SelectedIndex == -1))<br /> {<br /> txtSearch.Text = specs.letters;<br /> cboMin.SelectedIndex = specs.minLen - 1;<br /> cboMax.SelectedIndex = specs.maxLen - 1;<br /> cboBegin.Text = specs.prefix;<br /> cboEnd.Text = specs.suffix;<br /> txtFilter.Text = specs.filter;<br /> }<br /> btnSearch_Click(this, EventArgs.Empty);<br /> }</pre> </blockquote> <h2>Ribbon</h2> <p>The ribbon I am using in this project is the one mentioned in the Code Project article at <a title="C# Ribbon" href="https://www.codeproject.com/articles/364272/easily-add-a-ribbon-into-a-winforms-application-cs" target="_blank">https://www.codeproject.com/articles/364272/easily-add-a-ribbon-into-a-winforms-application-cs</a>. It's a third-party ribbon for C#, not WPF or other Microsoft. While it looks and performs well, there is a limited documentation for it. The intellisense and integration with Windows is good, and many items are similar. One of my biggest challenges was determining how to use the Recent Items list.</p> <h3>Recent items</h3> <p>One thing that was not so easy to understand was the use of the Recent Items list in the Orb menu. Determining how to create recent items dynamically, however, was one of the biggest accomplishments recently. My last blog entry touched on recent items and using the C# .Designer file to figure out how to create them. Actual implementation was a little more difficult. With my implementation I created a new class with properties of the recent item that I would use.</p> <h4>The Recent Item</h4> <blockquote> <pre>public RecentItem(string tag, string text)<br /> {<br /> ItemID = 0;<br /> ItemTag = tag;<br /> ItemText = text;<br /> UserID = Properties.Settings.Default.User;<br /> }</pre> </blockquote> <p>The text is the filename. The tag indicates the type of item since the items are not identified by file extension. ItemID will be updated when saved to the database. The database fields are similar to the class fields.</p> <h4>Loading Items on form load:</h4> <blockquote> <pre>.. <br />List&lt;RecentItem&gt; load = new List&lt;RecentItem&gt;(); <br />load = DBManager.LoadRecentItems(); <br />AddRecentItems(load); // see below <br />ribbonMain.OrbDropDown.RecentItems.Reverse(); <br />..</pre> </blockquote> <p>Reverse is used to put latest items at the top. The ID is set by the database using autonumber so the oldest items have the lowest ID and are loaded first.</p> <blockquote> <pre> private void AddRecentItems(List&lt;RecentItem&gt; recentItems) {<br /> foreach (RecentItem item in recentItems)<br /> DBManager.OrbAddRecentItem(item); // see below<br /> }</pre> </blockquote> <h4>Adds items to Recent Items from database</h4> <blockquote> <pre>public static void OrbAddRecentItem(RecentItem recent)<br /> {<br /> frmHootGold top = (frmHootGold)System.Windows.Forms.Application.OpenForms["frmHootGold"];<br /> RibbonOrbRecentItem adder = new RibbonOrbRecentItem();<br /> adder.Tag = recent.ItemTag;<br /> adder.Text = recent.ItemText;<br /> adder.Value = recent.ItemID.ToString();<br /> top.ribbonMain.OrbDropDown.RecentItems.Add(adder);<br /> adder.Click += new System.EventHandler(top.OrbRecent_Click); // see below<br /> }</pre> </blockquote> <p>When the items are added to the list, either as new items or when loaded from the database, the click event is set.</p> <h4>Calling Form</h4> <p>A separate method is used when actually adding a new item that has one difference to add the new item to the list that has already been sorted in descending order.</p> <blockquote> <pre> public static void OrbInsertRecentItem(RecentItem recent)<br /> ..<br /> top.ribbonMain.OrbDropDown.RecentItems.Insert(0, adder);</pre> </blockquote> <p>That's done from one of the child windows with code segment something like this</p> <blockquote> <pre>RecentItem adder = new RecentItem("SavedSearch", searchFile);<br />DBManager.AddRecentItem(adder);<br />DBManager.OrbInsertRecentItem(adder);</pre> </blockquote> <h4>The Recent Item List</h4> <p>When a user clicks an item on the Recent list, the following method uses the trigger and parameters mentioned earlier to pass that information to a new child form.</p> <blockquote> <pre>public void OrbRecent_Click(object sender, EventArgs e)<br /> {<br /> RibbonOrbRecentItem item = (RibbonOrbRecentItem)sender;<br /> Form form = new Form();<br /> switch (item.Tag.ToString())<br /> {<br /> case "SavedSearch": form = new frmCombo(); break;<br /> case "Textfile": form = new frmTextfiles(); break;<br /> }<br /> OpenChild(form);<br /> MDIUtils.SetParms(item.Text, form);<br /> MDIUtils.SetTrigger((string)item.Tag, form);<br /> }</pre> </blockquote> <p>One of the things I learned about Recent Items is that there is no obvious way to enable user-deletion of items. I notice Word doesn't have that either, nor does Windows, so I decided not to worry about it.</p> <p>If you use this in a program you may notice that the items are added to Windows list of Recent Items, but it's not because of this method. It's simply because they were files that "you" opened. Anyway, this is my contribution to the C# Ribbon knowledge base.</p><div class="item_footer"><p><small><a href="https://tylerhosting.com/b2e/dbell.php/hoot-with-a-ribbon">Original post</a> blogged on <a href="http://www.tylerhosting.com/b2e/">Switched Keys</a>.</small></p></div>
I just released a new beta version of Hoot. While it is fully functioning, it does involve significant changes in the way Hoot works. With version 1.9.0, Hoot employs an MDI (Multiple document interface). Previously, Hoot opened new windows for different types of searches. These windows filled the taskbar and were scattered across the desktop. With MDI all windows are contained in the program's main menu.

Another significant difference is the use of inherited forms. While users should not care, it does mean the code is smaller and (theoretically) faster. For me, it means changes can be made to the interface easier.

Finally, the new Hoot includes a ribbon, like you might have seen in Microsoft Office applications beginning in 2007. While this ribbon is not from Microsoft, it is a very good look-alike. All of this may sound boring, but for a developer it is a little fascinating, figuring out how things work, as well as how to work around limitations.

Multiple Document Interface

With the MDI I could avoid creating new form for each call and instead open them as child windows. Other than setting the appropriate flags on the parent form, the only thing I had to do different is open the forms appropriately for the MDI. One standard way to open such forms is with code like what I've used. This also cascades the new form over the last active child.

private void OpenChild(Form child)
{
child.MdiParent = this;
Form last = new Form();
if (this.MdiChildren.Count() > 0)
foreach (Form f in this.MdiChildren)
if (f == this.ActiveMdiChild)
{
last = f;
child.Location = new Point(last.Location.X + 25, last.Location.Y + 25);
break;
}
child.Show();
}

If I want to insure only one copy of that form is used I simply check for the form name among the children.

private void OpenOneChild(Form child)
{
if (!(FindChild(child.Name) == null))
{
child.Activate();
return;
}
OpenChild(child);
}
private Form FindChild(string name)
{
foreach (Form f in this.MdiChildren)
{
if ((string)f.Text == name)
return (f);
}
return null;
}

Of course, if I wanted to open a form from a child window, I would use a different method.

private void OpenSibling(Form child)
{
child.MdiParent = this.ParentForm;
Form last = new Form();
if (this.ParentForm.MdiChildren.Count() > 0)
foreach (Form f in this.ParentForm.MdiChildren)
if (f == this.ParentForm.ActiveMdiChild)
{
last = f;
child.Location = new Point(last.Location.X + 25, last.Location.Y + 25);
break;
}
child.Show();
}

 

Inheritance

When I mentioned Inherited forms on one discussion board one of the responses started with "ouch, ouch, ouch". Well, it's not so bad. With inheritance in C# you can't normally pass parameters to an inherited form, so I found a workaround. While inherited forms apparently can't take parameters in their constructors, at least not directly, you can access the controls of the inherited form and force a parameter.

1. Add a label named lblTrigger (public or protected)
2. Add an event to the label for the TextChanged event

private void lblTrigger_TextChanged(object sender, EventArgs e)
{
switch (lblTrigger.Text)
{
case "Hooks": ShowHooks(); break;
case "Words": HideHooks(); break;
case "Slides": btnSlideShow_Click(sender, e); break;
case "ChangeLanguage": PopulateResources(); break;
}
lblTrigger.Text = "Trigger";
}

3. Change that label from the ribbon or another form

public static void SetTrigger(string text, System.Windows.Forms.Form frm) {
if (frm == null)
return;
foreach (System.Windows.Forms.Control ctl in frm.Controls)
{
if (ctl.Name.Equals("lblTrigger"))
ctl.Text = text;
}
}

You're not limited to one label, either. You can add parameters to use with a different label. That's what I've done using lblParameters included in one of the code segments below. Set the parameters, then "pull" the trigger.

In one case "SavedSearch" is the text I set for the trigger.

case "SavedSearch": OpenFromRecent(); break;

That then calls this method which simulates a button click on the form.

private void OpenFromRecent()
{
specs = Utilities.LoadSearch(lblParameters.Text);
if (specs == null)
return;
cboSearchType.SelectedIndex = Array.IndexOf(english, specs.searchtype);
if (!(cboSearchType.SelectedIndex == -1))
{
txtSearch.Text = specs.letters;
cboMin.SelectedIndex = specs.minLen - 1;
cboMax.SelectedIndex = specs.maxLen - 1;
cboBegin.Text = specs.prefix;
cboEnd.Text = specs.suffix;
txtFilter.Text = specs.filter;
}
btnSearch_Click(this, EventArgs.Empty);
}

Ribbon

The ribbon I am using in this project is the one mentioned in the Code Project article at https://www.codeproject.com/articles/364272/easily-add-a-ribbon-into-a-winforms-application-cs. It's a third-party ribbon for C#, not WPF or other Microsoft. While it looks and performs well, there is a limited documentation for it. The intellisense and integration with Windows is good, and many items are similar. One of my biggest challenges was determining how to use the Recent Items list.

Recent items

One thing that was not so easy to understand was the use of the Recent Items list in the Orb menu. Determining how to create recent items dynamically, however, was one of the biggest accomplishments recently. My last blog entry touched on recent items and using the C# .Designer file to figure out how to create them. Actual implementation was a little more difficult. With my implementation I created a new class with properties of the recent item that I would use.

The Recent Item

public RecentItem(string tag, string text)
{
ItemID = 0;
ItemTag = tag;
ItemText = text;
UserID = Properties.Settings.Default.User;
}

The text is the filename. The tag indicates the type of item since the items are not identified by file extension. ItemID will be updated when saved to the database. The database fields are similar to the class fields.

Loading Items on form load:

.. 
List<RecentItem> load = new List<RecentItem>();
load = DBManager.LoadRecentItems();
AddRecentItems(load); // see below
ribbonMain.OrbDropDown.RecentItems.Reverse();
..

Reverse is used to put latest items at the top. The ID is set by the database using autonumber so the oldest items have the lowest ID and are loaded first.

 private void AddRecentItems(List<RecentItem> recentItems) {
foreach (RecentItem item in recentItems)
DBManager.OrbAddRecentItem(item); // see below
}

Adds items to Recent Items from database

public static void OrbAddRecentItem(RecentItem recent)
{
frmHootGold top = (frmHootGold)System.Windows.Forms.Application.OpenForms["frmHootGold"];
RibbonOrbRecentItem adder = new RibbonOrbRecentItem();
adder.Tag = recent.ItemTag;
adder.Text = recent.ItemText;
adder.Value = recent.ItemID.ToString();
top.ribbonMain.OrbDropDown.RecentItems.Add(adder);
adder.Click += new System.EventHandler(top.OrbRecent_Click); // see below
}

When the items are added to the list, either as new items or when loaded from the database, the click event is set.

Calling Form

A separate method is used when actually adding a new item that has one difference to add the new item to the list that has already been sorted in descending order.

 public static void OrbInsertRecentItem(RecentItem recent)
..
top.ribbonMain.OrbDropDown.RecentItems.Insert(0, adder);

That's done from one of the child windows with code segment something like this

RecentItem adder = new RecentItem("SavedSearch", searchFile);
DBManager.AddRecentItem(adder);
DBManager.OrbInsertRecentItem(adder);

The Recent Item List

When a user clicks an item on the Recent list, the following method uses the trigger and parameters mentioned earlier to pass that information to a new child form.

public void OrbRecent_Click(object sender, EventArgs e)
{
RibbonOrbRecentItem item = (RibbonOrbRecentItem)sender;
Form form = new Form();
switch (item.Tag.ToString())
{
case "SavedSearch": form = new frmCombo(); break;
case "Textfile": form = new frmTextfiles(); break;
}
OpenChild(form);
MDIUtils.SetParms(item.Text, form);
MDIUtils.SetTrigger((string)item.Tag, form);
}

One of the things I learned about Recent Items is that there is no obvious way to enable user-deletion of items. I notice Word doesn't have that either, nor does Windows, so I decided not to worry about it.

If you use this in a program you may notice that the items are added to Windows list of Recent Items, but it's not because of this method. It's simply because they were files that "you" opened. Anyway, this is my contribution to the C# Ribbon knowledge base.

]]>
https://tylerhosting.com/b2e/dbell.php/hoot-with-a-ribbon#comments https://tylerhosting.com/b2e/dbell.php?tempskin=_rss2&disp=comments&p=382

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 932

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 933

Deprecated: Creation of dynamic property Hit::$is_lynx is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 571

Deprecated: Creation of dynamic property Hit::$is_firefox is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 572

Deprecated: Creation of dynamic property Hit::$is_gecko is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 573

Deprecated: Creation of dynamic property Hit::$is_IE is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 574

Deprecated: Creation of dynamic property Hit::$is_winIE is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 575

Deprecated: Creation of dynamic property Hit::$is_macIE is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 576

Deprecated: Creation of dynamic property Hit::$is_chrome is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 577

Deprecated: Creation of dynamic property Hit::$is_safari is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 578

Deprecated: Creation of dynamic property Hit::$is_opera is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 579

Deprecated: Creation of dynamic property Hit::$is_NS4 is deprecated in /home4/tylering/public_html/b2e/inc/sessions/model/_hit.class.php on line 580