Skip to content

Commit 92ba60d

Browse files
author
George Ciesinski
committed
Merge branch 'release/1.2.0'
2 parents 69f8f69 + 756549b commit 92ba60d

File tree

5 files changed

+143
-29
lines changed

5 files changed

+143
-29
lines changed

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,27 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [Planned Updates]
8+
- Check for duplicate shortcuts & handle
9+
- Ability to correct shortcut typos using arrow keys instead of just backspace
10+
711
## [Unreleased]
812

13+
## [1.2.0] - TBA
14+
### Added
15+
- Support for three directories: default, local, and remote
16+
- Usage statistic printout during program start
17+
918
## [1.1.0] - 2020-01-17
1019
### Added
1120
- Statistics tracking for shortcuts used, total shortcut characters typed, and total textblock characters pasted
1221
- Help and Exit commands have been added
1322

1423
## [1.0.0] - 2020-01-16
1524
### Added
16-
- Debugging print lines removed
1725
- App prints all of the shortcuts and directories during start
26+
### Changed
27+
- Debugging print lines removed
1828
- Better logging to track potential issues
1929

2030
## [0.0.1] - 2020-01-14

Config/config.ini

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
[TEXTSCRIPT]
2-
version = 1.1.0
2+
version = 1.2.0
33

44
[HISTORY]
5-
shortcutsused = 2
6-
shortcutchars = 13
7-
textblockchars = 692
5+
shortcutsused = 0
6+
shortcutchars = 0
7+
textblockchars = 0
88

99
[DIRECTORIES]
1010
defaultdirectory = Textblocks/

Settings.py

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import configparser
22
from Logger import Logger
3+
import glib
34
from os import path
5+
import datetime
46

57

68
class Setup:
@@ -67,15 +69,129 @@ def create_config(self):
6769

6870
self.log.debug(f"{self.config_dir} file created successfully.")
6971

72+
def get_stats(self):
73+
"""
74+
Gets the current usage stats from the config file.
75+
"""
76+
77+
try:
78+
79+
self.config.read(self.config_dir)
80+
81+
shortcuts_used = self.config['HISTORY']['shortcutsused']
82+
shortcut_chars = self.config['HISTORY']['shortcutchars']
83+
textblock_chars = self.config['HISTORY']['textblockchars']
84+
85+
self.print_stats(shortcuts_used, shortcut_chars, textblock_chars)
86+
87+
except:
88+
89+
self.log.exception("Unable to get stats from config file.")
90+
raise
91+
92+
@staticmethod
93+
def print_stats(shortcuts_used, shortcut_chars, textblock_chars):
94+
"""
95+
Prints the usage stats to console.
96+
"""
97+
98+
saved_keystrokes = str(int(textblock_chars) - int(shortcut_chars))
99+
seconds_to_paste = 5
100+
saved_seconds = int(shortcuts_used) * seconds_to_paste
101+
time_saved = datetime.timedelta(seconds=saved_seconds)
102+
103+
print(f"""Your stats:
104+
105+
- Shortcuts used: {shortcuts_used}
106+
- You typed a total of {shortcut_chars} characters
107+
- Text-Script pasted a total of {textblock_chars} characters
108+
- You saved {saved_keystrokes} keystrokes
109+
- If it takes {seconds_to_paste} seconds to copt & paste an item, you saved {time_saved}""")
110+
111+
def shortcut_setup(self, directories):
112+
"""
113+
Extends shortcut_list and file_dir_list from the shortcuts and file_dirs lists.
114+
"""
115+
116+
shortcut_list = []
117+
file_dir_list = []
118+
119+
# For each directory in directories
120+
for directory in directories:
121+
122+
# Appends shortcuts only if directory is not None
123+
if directory is not None:
124+
125+
# Get shortcuts and file_dirs
126+
shortcuts, file_dirs = self.append_directories(directory)
127+
128+
# Print shortcut title
129+
if directory is directories[0]:
130+
print("\nDefault Directory: \n")
131+
self.log.debug("Appending shortcuts from default directory.")
132+
elif directory is directories[1]:
133+
print(f"\nLocal Directory: {directory}\n")
134+
self.log.debug(f"Appending shortcuts from {directory} directory.")
135+
elif directory is directories[2]:
136+
print(f"\nRemote Directory: {directory}\n")
137+
self.log.debug(f"Appending shortcuts from {directory} directory.")
138+
139+
# Print shortcuts
140+
glib.print_shortcuts(file_dirs, shortcuts)
141+
142+
# extends shortcut_list with values in shortcuts
143+
try:
144+
shortcut_list.extend(shortcuts)
145+
except:
146+
self.log.exception("Failed to extend shortcut_list.")
147+
raise
148+
else:
149+
self.log.debug("Successfully extended shortcut_list")
150+
151+
# append file_dirs to file_dir_list
152+
file_dir_list.extend(file_dirs)
153+
154+
self.log.debug("Successfully appended shortcuts and file_dirs.")
155+
156+
return shortcut_list, file_dir_list
157+
70158
def find_directories(self):
71159
"""
72160
Finds the directories in the config file
73161
"""
74162

75163
self.config.read(self.config_dir)
76164
default_directory = self.config['DIRECTORIES']['defaultdirectory']
165+
local_directory = self.config['DIRECTORIES']['localdirectory']
166+
remote_directory = self.config['DIRECTORIES']['remotedirectory']
167+
168+
if default_directory == "None" or default_directory == "":
169+
default_directory = None
170+
self.log.debug("Default directory is set to None.")
171+
if local_directory == "None" or local_directory == "":
172+
local_directory = None
173+
self.log.debug("Local directory is set to None.")
174+
if remote_directory == "None" or remote_directory == "":
175+
remote_directory = None
176+
self.log.debug("Remote directory is set to None.")
177+
178+
directories = [default_directory, local_directory, remote_directory]
179+
self.log.debug(f"Retrieved the following directories from config: {directories}")
180+
181+
return directories
182+
183+
@staticmethod
184+
def append_directories(directory):
185+
"""
186+
Creates shortcuts and file_dirs
187+
"""
188+
189+
files, file_dirs = glib.list_files(directory)
190+
191+
# Creates shortcut list with the same index
192+
shortcuts = glib.list_shortcuts(files)
77193

78-
return default_directory
194+
return shortcuts, file_dirs
79195

80196

81197
class UpdateConfig:

app.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,6 @@
33
from Logger import Logger
44
from TextController import WordCatcher, KeyboardEmulator
55

6-
7-
def shortcut_setup():
8-
"""
9-
Creates shortcut_list and file_dir_list
10-
"""
11-
12-
file_list, file_dir_list = glib.list_files(textblock_dir)
13-
14-
# Creates shortcut list with the same index
15-
shortcut_list = glib.list_shortcuts(file_list)
16-
17-
glib.print_shortcuts(file_dir_list, shortcut_list)
18-
19-
return shortcut_list, file_dir_list
20-
21-
226
if __name__ == "__main__":
237

248
# Current app version / / Ensure this is correct during updates
@@ -43,14 +27,18 @@ def shortcut_setup():
4327
# Check if config file exists
4428
setup.config_exists()
4529

46-
# Gets file_list and file_dir_list
47-
textblock_dir = setup.find_directories()
30+
# Print stats to console
31+
setup.get_stats()
32+
33+
# Gets a list with default, local, and remote directories
34+
directories = setup.find_directories()
4835

4936
"""
5037
Initialize Text Controller
5138
"""
5239

53-
shortcut_list, file_dir_list = shortcut_setup()
40+
# Load shortcuts and file directories
41+
shortcut_list, file_dir_list = setup.shortcut_setup(directories)
5442

5543
# Initializes KeyboardEmulator instance
5644
k = KeyboardEmulator(L)

glib.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ def list_shortcuts(file_list):
6161
return shortcut_list
6262

6363

64-
def print_shortcuts(file_dir_list, shortcut_list):
64+
def print_shortcuts(file_dirs, shortcuts):
6565

66-
for file_dir in file_dir_list:
67-
index = file_dir_list.index(file_dir)
68-
print(f"Shortcut: {shortcut_list[index]} - - - Directory: {file_dir}")
66+
for file_dir in file_dirs:
67+
index = file_dirs.index(file_dir)
68+
print(f"Shortcut: {shortcuts[index]} - - - Directory: {file_dir}")
6969

7070

7171
if __name__ == "__main__":

0 commit comments

Comments
 (0)