Initial commit
This commit is contained in:
		
							
								
								
									
										47
									
								
								tools/Practice Timer.app/Contents/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								tools/Practice Timer.app/Contents/Info.plist
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| <?xml version="1.0" ?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|     <dict> | ||||
|     <key>CFBundleDevelopmentRegion</key> | ||||
|     <string>English</string> | ||||
|  | ||||
|     <key>CFBundleExecutable</key> | ||||
|     <string>Practice_Timer</string> | ||||
|  | ||||
|     <key>CFBundleIconFile</key> | ||||
|     <string>icon.icns</string> | ||||
|  | ||||
|     <key>CFBundleIdentifier</key> | ||||
|     <string>com.zander.practice_timer</string> | ||||
|  | ||||
|     <key>CFBundleDisplayName</key> | ||||
|     <string>Practice Timer</string> | ||||
|  | ||||
|     <key>CFBundleInfoDictionaryVersion</key> | ||||
|     <string>6.0</string> | ||||
|  | ||||
|     <key>CFBundleName</key> | ||||
|     <string>Practice Timer</string> | ||||
|  | ||||
|     <key>CFBundlePackageType</key> | ||||
|     <string>APPL</string> | ||||
|  | ||||
|     <key>NSPrincipalClass</key> | ||||
|     <string>NSApplication</string> | ||||
|     <key>NSHighResolutionCapable</key> | ||||
|     <string>True</string> | ||||
|  | ||||
|     <key>CFBundleShortVersionString</key> | ||||
|     <string>2.2.0</string> | ||||
|  | ||||
|     <key>CFBundleSignature</key> | ||||
|     <string>????</string> | ||||
|  | ||||
|     <key>CFBundleVersion</key> | ||||
|     <string>2.2.0</string> | ||||
|  | ||||
|     <key>NSHumanReadableCopyright</key> | ||||
|     <string>(c) 2021 Alexander Rosenberg</string> | ||||
|  | ||||
|     </dict> | ||||
| </plist> | ||||
							
								
								
									
										
											BIN
										
									
								
								tools/Practice Timer.app/Contents/Resources/icon.icns
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								tools/Practice Timer.app/Contents/Resources/icon.icns
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										39
									
								
								tools/convert.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								tools/convert.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,39 @@ | ||||
| #!/usr/bin/python | ||||
|  | ||||
| import xml.etree.ElementTree as ET | ||||
| import json | ||||
| import fileinput | ||||
| import sys | ||||
|  | ||||
| if len(sys.argv) == 2 and sys.argv[1] == '-h': | ||||
|     print(sys.argv[0], ': Convert Practice Timer 1 data into Praceice Timer 2 data') | ||||
|     print(sys.argv[0], ': usage: ', sys.argv[0], ' <input>') | ||||
|     print(sys.argv[0], ': output will be on stdout. Input can also be read from stdin') | ||||
|     exit(0) | ||||
|  | ||||
| xmlData = "" | ||||
|  | ||||
| for f in fileinput.input(): | ||||
|     xmlData += f | ||||
|  | ||||
| root = ET.fromstring(xmlData) | ||||
|  | ||||
| headers = root[1] | ||||
|  | ||||
| jo = [] | ||||
|  | ||||
| for header in headers: | ||||
|     ho = { | ||||
|         "date": int(round(int(header.get('date')) / 1000)), | ||||
|         "tasks": [] | ||||
|     } | ||||
|     for task in header: | ||||
|         to = { | ||||
|             "name": task.get('name'), | ||||
|             "length": int(task.get('length')), | ||||
|             "start": int(round(int(task.get('start')) / 1000)) | ||||
|         } | ||||
|         ho['tasks'].append(to) | ||||
|     jo.append(ho) | ||||
|  | ||||
| print(json.dumps(jo)) | ||||
							
								
								
									
										36
									
								
								tools/linux/PKGBUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								tools/linux/PKGBUILD
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| # Maintainer: Alexander Rosenberg <zanderpkg at pm dot me> | ||||
|  | ||||
| pkgname=practice-timer | ||||
| pkgver=1 | ||||
| pkgrel=1 | ||||
| pkgdesc="Track and analyze statistics about how long you do various activities" | ||||
| url="https://gitlab.com/zander671/practice-timer" | ||||
| arch=('x86_64') | ||||
| license=('GPL3') | ||||
| depends=('gtk3') | ||||
| makedepends=('cmake' 'make' 'git') | ||||
| optdepends=('plotutils: graphs in the statistics window') | ||||
| source=("git+https://gitlab.com/zander671/practice-timer.git") | ||||
| sha256sums=('SKIP') | ||||
|  | ||||
| pkgver(){ | ||||
|   cd "$pkgname" | ||||
|   git rev-list --count HEAD | ||||
| } | ||||
|  | ||||
| build() { | ||||
|   cd "$pkgname" | ||||
|   cmake -B build | ||||
|   make -C build | ||||
| } | ||||
|  | ||||
| package() { | ||||
|   cd "$pkgname" | ||||
|   install -m755 -D build/Practice_Timer "$pkgdir/usr/bin/practice-timer" | ||||
|   install -m644 -D LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" | ||||
|   install -m644 -D README.md "$pkgdir/usr/share/doc/$pkgname/README" | ||||
|   install -m644 -D tools/linux/practice-timer.xpm "$pkgdir/usr/share/pixmaps/practice-timer.xpm" | ||||
|   install -m644 -D tools/linux/practice-timer.png "$pkgdir/usr/share/icons/hicolor/48x48/apps/practice-timer.png" | ||||
|   install -m644 -D tools/linux/practice-timer.svg "$pkgdir/usr/share/icons/hicolor/scalable/apps/practice-timer.svg" | ||||
|   install -m644 -D tools/linux/practice-timer.desktop "$pkgdir/usr/share/applications/practice-timer.desktop" | ||||
| } | ||||
							
								
								
									
										11
									
								
								tools/linux/practice-timer.desktop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								tools/linux/practice-timer.desktop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| [Desktop Entry] | ||||
| Name=Practice Timer | ||||
| GenericName=Activity Log | ||||
| Comment=Track and analyze statistics about how long you do various activities | ||||
| Exec=practice-timer | ||||
| Icon=practice-timer | ||||
| Type=Application | ||||
| Terminal=false | ||||
| Categories=Graphics;Utility; | ||||
| StartupWMClass=PracticeTimer | ||||
| Keywords=Practice Timer;Timer;Log; | ||||
							
								
								
									
										
											BIN
										
									
								
								tools/linux/practice-timer.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								tools/linux/practice-timer.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										103
									
								
								tools/linux/practice-timer.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								tools/linux/practice-timer.svg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,103 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    width="500" | ||||
|    height="500" | ||||
|    viewBox="0 0 132.29166 132.29167" | ||||
|    version="1.1" | ||||
|    id="svg5" | ||||
|    inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" | ||||
|    sodipodi:docname="practice-timer.svg" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg"> | ||||
|   <sodipodi:namedview | ||||
|      id="namedview7" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#999999" | ||||
|      borderopacity="1" | ||||
|      inkscape:pageshadow="0" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pagecheckerboard="0" | ||||
|      inkscape:document-units="mm" | ||||
|      showgrid="false" | ||||
|      units="px" | ||||
|      width="500px" | ||||
|      inkscape:snap-smooth-nodes="false" | ||||
|      inkscape:zoom="0.94964927" | ||||
|      inkscape:cx="265.88764" | ||||
|      inkscape:cy="255.88394" | ||||
|      inkscape:window-width="1280" | ||||
|      inkscape:window-height="739" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="0" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:current-layer="layer3" /> | ||||
|   <defs | ||||
|      id="defs2" /> | ||||
|   <g | ||||
|      id="layer2" | ||||
|      inkscape:label="Background" | ||||
|      sodipodi:insensitive="true" | ||||
|      inkscape:groupmode="layer" | ||||
|      style="display:inline"> | ||||
|     <circle | ||||
|        style="opacity:0.996191;fill:#484848;fill-opacity:1;stroke-width:24.375;stroke-linejoin:round" | ||||
|        id="path980" | ||||
|        cx="66.145836" | ||||
|        cy="66.145836" | ||||
|        r="66.145836" | ||||
|        inkscape:label="outer-border" /> | ||||
|     <circle | ||||
|        style="opacity:0.996191;fill:#808080;fill-opacity:1;stroke-width:19.9876;stroke-linejoin:round" | ||||
|        id="path980-3" | ||||
|        cx="66.145836" | ||||
|        cy="66.145836" | ||||
|        r="54.239582" | ||||
|        inkscape:label="inner-border" /> | ||||
|   </g> | ||||
|   <g | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer3" | ||||
|      inkscape:label="Hands" | ||||
|      style="display:inline"> | ||||
|     <rect | ||||
|        style="opacity:0.996191;fill:#000000;fill-opacity:1;stroke-width:9.01714;stroke-linejoin:round" | ||||
|        id="rect3422-6" | ||||
|        width="5.3008456" | ||||
|        height="26.504229" | ||||
|        x="22.885847" | ||||
|        y="-119.15646" | ||||
|        transform="rotate(120)" | ||||
|        inkscape:label="small-hand" /> | ||||
|     <rect | ||||
|        style="opacity:0.996191;fill:#000000;fill-opacity:1;stroke-width:14.0031;stroke-linejoin:round" | ||||
|        id="rect3422" | ||||
|        width="3.96875" | ||||
|        height="39.6875" | ||||
|        x="64.161461" | ||||
|        y="26.458334" | ||||
|        inkscape:label="large-hand" /> | ||||
|     <circle | ||||
|        style="opacity:0.996191;fill:#000000;fill-opacity:1;stroke-width:11.1485;stroke-linejoin:round" | ||||
|        id="path3120" | ||||
|        cx="66.145836" | ||||
|        cy="66.145836" | ||||
|        r="6.6145835" | ||||
|        inkscape:label="center" /> | ||||
|   </g> | ||||
|   <g | ||||
|      inkscape:label="Time Marks" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      sodipodi:insensitive="true"> | ||||
|     <path | ||||
|        id="rect5894-7-3-6-0-6-2" | ||||
|        style="opacity:0.996191;stroke-width:50.0001;stroke-linejoin:round" | ||||
|        d="m 245,65 v 45.01758 c 3.33361,-0.0323 6.66832,0.056 10,0.25586 V 65 Z m -83.16992,22.285156 -8.66016,5 22.13477,38.337894 c 2.80559,-1.843 5.66192,-3.56452 8.57226,-5.15039 z m 176.33984,0 -22.89648,39.658204 c 2.96389,1.53286 5.87971,3.15331 8.73047,4.87891 l 22.82617,-39.537114 z m -245.884764,65.884764 -5,8.66016 37.929684,21.89844 c 1.52688,-2.95808 3.17761,-5.85665 4.93946,-8.69532 z m 315.429684,0 -38.66796,22.32617 c 1.76932,2.81381 3.41493,5.71528 4.96093,8.68164 l 38.70703,-22.34765 z M 65,245 v 10 h 45.16602 c -0.14901,-3.33279 -0.1868,-6.66745 -0.11524,-10 z m 324.79102,0 c 0.0551,1.59738 0.0942,3.19459 0.0937,4.79297 0.0762,1.74427 0.10446,3.47897 0.10546,5.20703 H 435 v -10 z m -16.0254,70.68164 c -1.63934,2.90452 -3.38331,5.74875 -5.23437,8.52539 l 39.18359,22.62305 5,-8.66016 z m -247.78515,0.14844 -38.695314,22.33984 5,8.66016 38.550784,-22.25781 c -1.71971,-2.85556 -3.34481,-5.76802 -4.85547,-8.74219 z m 197.5957,51.60742 c -2.82988,1.76315 -5.72182,3.42626 -8.66015,5.00195 l 23.2539,40.27539 8.66016,-5 z m -148.04492,1.54492 -22.36133,38.73242 8.66016,5 22.55859,-39.07226 c -3.04457,-1.4412 -5.99191,-3.00194 -8.85742,-4.66016 z M 255,389.74414 c -3.32798,0.19999 -6.66259,0.28465 -10,0.23242 V 435 h 10 z" | ||||
|        transform="scale(0.26458333)" | ||||
|        inkscape:label="time-marks" /> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 4.2 KiB | 
							
								
								
									
										84
									
								
								tools/linux/practice-timer.xpm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								tools/linux/practice-timer.xpm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,84 @@ | ||||
| /* XPM */ | ||||
| static char *practice_timer[] = { | ||||
| /* columns rows colors chars-per-pixel */ | ||||
| "32 32 46 1 ", | ||||
| "  c None", | ||||
| ". c black", | ||||
| "X c #030303", | ||||
| "o c #090909", | ||||
| "O c #0B0B0B", | ||||
| "+ c #0F0F0F", | ||||
| "@ c #1E1E1E", | ||||
| "# c #242424", | ||||
| "$ c #262626", | ||||
| "% c #272727", | ||||
| "& c #383838", | ||||
| "* c #393939", | ||||
| "= c #424242", | ||||
| "- c #434343", | ||||
| "; c #454545", | ||||
| ": c #484848", | ||||
| "> c #494949", | ||||
| ", c #4A4A4A", | ||||
| "< c #4B4B4B", | ||||
| "1 c #4E4E4E", | ||||
| "2 c #505050", | ||||
| "3 c #535353", | ||||
| "4 c #575757", | ||||
| "5 c #5A5A5A", | ||||
| "6 c #5C5C5C", | ||||
| "7 c #5D5D5D", | ||||
| "8 c #5E5E5E", | ||||
| "9 c #626262", | ||||
| "0 c #666666", | ||||
| "q c #696969", | ||||
| "w c #6A6A6A", | ||||
| "e c #6B6B6B", | ||||
| "r c #6C6C6C", | ||||
| "t c #6E6E6E", | ||||
| "y c #707070", | ||||
| "u c #717171", | ||||
| "i c #727272", | ||||
| "p c #787878", | ||||
| "a c #797979", | ||||
| "s c #7A7A7A", | ||||
| "d c #7B7B7B", | ||||
| "f c #7C7C7C", | ||||
| "g c #7D7D7D", | ||||
| "h c #7E7E7E", | ||||
| "j c #7F7F7F", | ||||
| "k c #808080", | ||||
| /* pixels */ | ||||
| "            ::::::::            ", | ||||
| "         ::::::::::::::         ", | ||||
| "       ::::::::11::::::::       ", | ||||
| "      :::::5rskkkksr5:::::      ", | ||||
| "     ::::8skkkk88kkkks8::::     ", | ||||
| "    :::1igrkkkk44kkkkrgi1:::    ", | ||||
| "   :::2skg%gkkk::kkkg%gks2:::   ", | ||||
| "  :::1skkk8;kkk--kkk;8kkks1:::  ", | ||||
| "  :::ikkkkkrkkk--kkk0kkkkki:::  ", | ||||
| " :::8ggkkkkkkkk--kkkkkkkkgg8::: ", | ||||
| " :::sr%8kkkkkkk--kkkkkkk8%ws::: ", | ||||
| " ::5kkg;ikkkkkk--kkkkkkw;gkk5:: ", | ||||
| ":::rkkkkkkkkkkk--kkkkkkkkkkkr:::", | ||||
| ":::skkkkkkkkkkk--kkkkkkkkkkks:::", | ||||
| ":::kkkkkkkkkkkg%%gkkkkkkkkkkk:::", | ||||
| "::1k844gkkkkkk-..-kkkkkkg448k1::", | ||||
| "::1k844gkkkkkk-..%skkkkkg448k1::", | ||||
| ":::kkkkkkkkkkkg-&O+2gkkkkkkkk:::", | ||||
| ":::skkkkkkkkkkkkks&.@0kkkkkks:::", | ||||
| ":::rkkkkkkkkkkkkkkkr%Oskkkkkr:::", | ||||
| " ::5kkg;rkkkkkkkkkkkkikw;gkk5:: ", | ||||
| " :::sr%8kkkkkkkkkkkkkkkk8%ws::: ", | ||||
| " :::8ggkkkkkkkkkkkkkkkkkkgg8::: ", | ||||
| "  :::ikkkkkwkkkkkkkk9kkkkki:::  ", | ||||
| "  :::1skkk8;kkkggkkk;8kkks1:::  ", | ||||
| "   :::2skg%gkkk44kkkg%gks2:::   ", | ||||
| "    :::1igrkkkk44kkkkwgi1:::    ", | ||||
| "     ::::8skkkk88kkkks8::::     ", | ||||
| "      :::::5rskkkksr5:::::      ", | ||||
| "       ::::::::11::::::::       ", | ||||
| "         ::::::::::::::         ", | ||||
| "            ::::::::            " | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user