HurleyShanabarger Posted June 7, 2017 Posted June 7, 2017 Hey guys, I wanted to have a small ToDo list for my computer but I didn't really find what I needed. Maybe somebody else has use for it. Spoiler expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Version=Beta #AutoIt3Wrapper_Icon=ToDo.ico #AutoIt3Wrapper_Outfile=..\ToDo.exe #AutoIt3Wrapper_Outfile_x64=..\ToDo.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Comment=ToDoList #AutoIt3Wrapper_Res_Description=ToDoList #AutoIt3Wrapper_Res_Fileversion=1.1.0.0 #AutoIt3Wrapper_Res_ProductVersion=1.1.0.0 #Tidy_Parameters=/reel /sf /ri #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #Region Includes ;|----------------------------------------------------------------------------------------------------------------| ;|---------------------------------------------- Standard includes -----------------------------------------------| ;|----------------------------------------------------------------------------------------------------------------| #include <File.au3> #include <Date.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <ListViewConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <FontConstants.au3> #EndRegion Includes #Region Variables ;|----------------------------------------------------------------------------------------------------------------| ;|---------------------------------------- Global variables and constants ----------------------------------------| ;|----------------------------------------------------------------------------------------------------------------| Opt("GUIResizeMode", $GUI_DOCKALL) ;|-------------| ;| Script data | ;|-------------| Global Const $_gc_sScriptName = StringLeft(@ScriptName, StringInStr(@ScriptName, ".", 0, -1) - 1) Global Const $_gc_sDir_Dropbox = @ScriptDir Global Const $_gc_sFile = $_gc_sDir_Dropbox & "\_Settings\" & $_gc_sScriptName & ".dat" Global Const $_gc_hClr_Green = 0x267F00, $_gc_hClr_Black = 0x000000 Global $_gv_hLV #EndRegion Variables #Region _GUI_Main() Func _GUI_Main() Local $_lv_iSysDPI = _SysGetDPI() Local $_lv_hGUI = GUICreate("SysControl_ToDo", 400, 400, @DesktopWidth - 410, 10, BitOR($WS_POPUP, 0), BitOR($WS_EX_TOOLWINDOW, $WS_EX_LAYERED)) GUISetFont(8.5 / $_lv_iSysDPI) GUISetBkColor(0x123456) Local $_lv_iBttn_Mns = GUICtrlCreateButton("-", 2, 2, 21, 21) Local $_lv_iBttn_Pls = GUICtrlCreateButton("+", 25, 2, 21, 21) Local $_lv_iInpt_Hdr = GUICtrlCreateInput("", 48, 2, 347, 21) Local $_lv_iLV = GUICtrlCreateListView("#|Date|Text|Entry", 2, 25, 396, 250, BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $WS_TABSTOP, $WS_VISIBLE, $WS_CHILD, $WS_CLIPSIBLINGS), BitOR($LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT)) $_gv_hLV = GUICtrlGetHandle($_lv_iLV) Local $_lv_hLV_Hdr = _GUICtrlListView_GetHeader($_gv_hLV) GUIRegisterMsg($WM_NOTIFY, "GUI_msg_LV") ; Load file Local $_lv_aFile, $_lv_aItem _FileReadToArray($_gc_sFile, $_lv_aFile, 2, ChrW(160)) For $_lv_iData = 0 To UBound($_lv_aFile) - 1 $_lv_aItem = $_lv_aFile[$_lv_iData] $_lv_aItem[0] = Execute($_lv_aItem[0]) $_lv_aItem[3] = StringReplace($_lv_aItem[3], ChrW(161), @CRLF) $_lv_sData = _ArrayToString($_lv_aItem, "|", 1) GUICtrlCreateListViewItem($_lv_sData, $_lv_iLV) _GUICtrlListView_SetItemChecked($_gv_hLV, $_lv_iData, $_lv_aItem[0]) Next $_lv_aData = "" _GUICtrlListView_SetColumnWidth($_gv_hLV, 0, 50) _GUICtrlListView_SetColumnWidth($_gv_hLV, 1, 120) _GUICtrlListView_HideColumn($_gv_hLV, 2) _GUICtrlListView_SetColumnWidth($_gv_hLV, 3, $LVSCW_AUTOSIZE_USEHEADER) ControlDisable($_lv_hGUI, "", $_lv_hLV_Hdr) Local $_lv_iEdt_Nmbr = GUICtrlCreateEdit("1", 2, 280, 25, 118, BitOR($ES_RIGHT, $ES_AUTOVSCROLL, $ES_READONLY)) Local $_lv_iEdt_Bdy = GUICtrlCreateEdit("", 26, 280, 371, 118, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _WinAPI_SetLayeredWindowAttributes($_lv_hGUI, 0x123456) GUISetState() GUICtrlSetFont($_lv_iEdt_Nmbr, Default, Default, Default, "Courier New") GUICtrlSetFont($_lv_iEdt_Bdy, Default, Default, Default, "Courier New") Local $_lv_boLV_Slctn_Chngd Local $_lv_iMsg, $_lv_iTxt_Hdr Local $_lv_iLV_Slctd = -1 Local $_lv_iTmr = TimerInit() Local $_lv_sFile = "", $_lv_sText = "" While 1 $_lv_boLV_Slctn_Chngd = _GUICtrlListView_GetSelectedIndices($_gv_hLV) <> $_lv_iLV_Slctd If $_lv_boLV_Slctn_Chngd Then $_lv_iLV_Slctd = _GUICtrlListView_GetSelectedIndices($_gv_hLV) $_lv_iMsg = GUIGetMsg() $_lv_iTxt_Hdr = GUICtrlRead($_lv_iInpt_Hdr) Switch $_lv_iMsg Case $GUI_EVENT_CLOSE ; Save comment and call line number drawing If _GUICtrlEdit_GetModify($_lv_iEdt_Bdy) Then $_lv_iTxt_Bdy = GUICtrlRead($_lv_iEdt_Bdy) _GUICtrlListView_SetItemText($_gv_hLV, $_lv_iLV_Slctd, $_lv_iTxt_Bdy, 2) _GUI_ev_LineNumbers($_lv_iEdt_Nmbr, $_lv_iEdt_Bdy) EndIf $_lv_iCount = _GUICtrlListView_GetItemCount($_gv_hLV) - 1 $_lv_aState = _GUICtrlListView_GetItemCheckedState($_gv_hLV, $_lv_iCount) $_lv_sFile = "" For $_lv_iItem = 0 To $_lv_iCount $_lv_aData = _GUICtrlListView_GetItemTextArray($_gv_hLV, $_lv_iItem) $_lv_aData[0] = $_lv_aState[$_lv_iItem] $_lv_aData[3] = StringReplace($_lv_aData[3], @CRLF, ChrW(161)) If $_lv_sFile Then $_lv_sFile &= @CRLF $_lv_sFile &= _ArrayToString($_lv_aData, ChrW(160)) Next $_lv_hFile = FileOpen($_gc_sFile, 2 + 8 + 256) FileWrite($_lv_hFile, $_lv_sFile) FileClose($_lv_hFile) Exit Case $_lv_iBttn_Pls _GUICtrlListView_BeginUpdate($_gv_hLV) $_lv_iNumber = StringFormat("%03d", _GUICtrlListView_GetItemCount($_gv_hLV) + 1) GUICtrlCreateListViewItem($_lv_iNumber & "|" & _Now() & "|" & "|" & $_lv_iTxt_Hdr, $_lv_iLV) GUICtrlSetData($_lv_iInpt_Hdr, "") _GUICtrlListView_HideColumn($_gv_hLV, 2) _GUICtrlListView_SetColumnWidth($_gv_hLV, 3, $LVSCW_AUTOSIZE_USEHEADER) _GUICtrlListView_EndUpdate($_gv_hLV) Case $_lv_iBttn_Mns _GUICtrlListView_BeginUpdate($_gv_hLV) _GUICtrlListView_DeleteItemsSelected($_gv_hLV) _GUICtrlListView_EndUpdate($_gv_hLV) EndSwitch ; Check item selection If $_lv_boLV_Slctn_Chngd Then $_lv_sText = _GUICtrlListView_GetItemText($_gv_hLV, $_lv_iLV_Slctd, 2) GUICtrlSetData($_lv_iEdt_Bdy, $_lv_sText) _GUI_ev_LineNumbers($_lv_iEdt_Nmbr, $_lv_iEdt_Bdy) If Not $_lv_iLV_Slctd Then WinMove($_lv_hGUI, "", @DesktopWidth - 410, 10, 400, 277) Else WinMove($_lv_hGUI, "", @DesktopWidth - 410, 10, 400, 400) EndIf EndIf If $_lv_iLV_Slctd = "" Then GUICtrlSetData($_lv_iEdt_Bdy, "") ; Handle state of controls _GUICtrl_SetEnableDisable($_lv_iBttn_Pls, GUICtrlRead($_lv_iInpt_Hdr)) _GUICtrl_SetEnableDisable($_lv_iEdt_Bdy, Not ($_lv_iLV_Slctd = "")) _GUICtrl_SetEnableDisable($_lv_iBttn_Mns, Not ($_lv_iLV_Slctd = "")) ; Save comment and call line number drawing If _GUICtrlEdit_GetModify($_lv_iEdt_Bdy) Then $_lv_iTxt_Bdy = GUICtrlRead($_lv_iEdt_Bdy) _GUICtrlListView_SetItemText($_gv_hLV, $_lv_iLV_Slctd, $_lv_iTxt_Bdy, 2) _GUI_ev_LineNumbers($_lv_iEdt_Nmbr, $_lv_iEdt_Bdy) EndIf WEnd EndFunc ;==>_GUI_Main #EndRegion #Region Helper Func _GUI_ev_LineNumbers($_fp_hCtrl_Cnt, $_fp_hCtrl_Edt) ;|---------------------------------------------------------| ;| _GUI_ev_LineNumbers | ;|---------------------------------------------------------| ;| $_fp_hCtrl_Cnt = Handle to the line number edit control | ;| $_fp_hCtrl_Edt = Handle to the edit control | ;|---------------------------------------------------------| Local $_lv_iLine, $_lv_iLines = _GUICtrlEdit_GetLineCount($_fp_hCtrl_Edt) Local $_lv_iVsbl_Edt, $_lv_iVsbl_Cnt Local $_lv_Index = 1 Local $_lv_sTxt_Cnt = "1" & @CRLF For $_lv_iLine = 1 To $_lv_iLines - 1 $_lv_iCharIndex = _GUICtrlEdit_LineIndex($_fp_hCtrl_Edt, $_lv_iLine) If StringMid(GUICtrlRead($_fp_hCtrl_Edt), $_lv_iCharIndex - 1, 2) = @CRLF Then $_lv_Index += 1 $_lv_sTxt_Cnt &= $_lv_Index & @CRLF Else If $_lv_iLine < $_lv_iLines - 1 Then $_lv_sTxt_Cnt &= @CRLF EndIf Next GUICtrlSetData($_fp_hCtrl_Cnt, $_lv_sTxt_Cnt) $_lv_iVsbl_Edt = _GUICtrlEdit_GetFirstVisibleLine($_fp_hCtrl_Edt) $_lv_iVsbl_Cnt = _GUICtrlEdit_GetFirstVisibleLine($_fp_hCtrl_Cnt) If $_lv_iVsbl_Edt <> $_lv_iVsbl_Cnt Then _GUICtrlEdit_LineScroll($_fp_hCtrl_Cnt, 0, $_lv_iVsbl_Edt - $_lv_iVsbl_Cnt) EndIf _GUICtrlEdit_SetModify($_fp_hCtrl_Edt, False) _GUICtrlEdit_SetModify($_fp_hCtrl_Cnt, False) EndFunc ;==>_GUI_ev_LineNumbers Func _GUICtrl_ListView_DrawItem(ByRef $_fb_hDC, ByRef $_fb_tCustDraw, $_fp_sFont, $_fp_iSize, $_fp_iWeight, $_fp_hClr_Txt, $_fp_hClr_BK, $_fp_boStrike = False) ;|----------------------------------------| ;| _GUICtrl_ListView_DrawItem | ;|----------------------------------------| ;| $_fb_hDC = Handle | ;| $_fb_tCustDraw = Custom draw structure | ;| $_fp_sFont = Font name | ;| $_fp_iSize = Font size | ;| $_fp_iWeight = Font weight | ;| $_fp_hClr_Txt = Color of text | ;| $_fp_hClr_BK = Color of background | ;| $_fp_boStrike = Strikethrough | ;|----------------------------------------| If $_fp_sFont = Default Then $_fp_sFont = "Segoe UI" Local $_lv_hFont = _WinAPI_CreateFont($_fp_iSize, 0, 0, 0, $_fp_iWeight, False, False, $_fp_boStrike, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, $FIXED_PITCH) ;, $_fp_sFont) $_fb_hDC = DllStructGetData($_fb_tCustDraw, 'hdc') DllStructSetData($_fb_tCustDraw, 'clrText', _RGB2BGR($_fp_hClr_Txt)) DllStructSetData($_fb_tCustDraw, 'clrTextBk', _RGB2BGR($_fp_hClr_BK)) _WinAPI_SelectObject($_fb_hDC, $_lv_hFont) _WinAPI_DeleteObject($_lv_hFont) EndFunc ;==>_GUICtrl_ListView_DrawItem Func _GUICtrl_SetDisable($_fp_iControl) ;|-----------------------------------| ;| _GUICtrl_SetDisable | ;|-----------------------------------| ;| $_fp_iControl = ID of the control | ;|-----------------------------------| If BitAND(GUICtrlGetState($_fp_iControl), $GUI_DISABLE) Then Return True GUICtrlSetState($_fp_iControl, $GUI_DISABLE) Return False EndFunc ;==>_GUICtrl_SetDisable Func _GUICtrl_SetEnable($_fp_iControl) ;|-----------------------------------| ;| _GUICtrl_SetEnable | ;|-----------------------------------| ;| $_fp_iControl = ID of the control | ;|-----------------------------------| If BitAND(GUICtrlGetState($_fp_iControl), $GUI_ENABLE) Then Return True GUICtrlSetState($_fp_iControl, $GUI_ENABLE) Return False EndFunc ;==>_GUICtrl_SetEnable Func _GUICtrl_SetEnableDisable($_fp_iControl, $_fc_boState) ;|------------------------------------------------------| ;| _GUICtrl_SetEnableDisable | ;|------------------------------------------------------| ;| $_fp_iControl = ID of the control | ;| $_fc_boState = State to check for enabling/disabling | ;|------------------------------------------------------| If $_fc_boState Then _GUICtrl_SetEnable($_fp_iControl) Else _GUICtrl_SetDisable($_fp_iControl) EndIf EndFunc ;==>_GUICtrl_SetEnableDisable Func _GUICtrlListView_GetItemCheckedState(Const $_fc_hWnd, Const $_fc_iItems) ;|------------------------------------------| ;| _GUICtrlListView_GetItemCheckedState | ;|------------------------------------------| ;| $_fc_hWnd = Handle to the listview | ;| $_fc_iItems = Count of items in listview | ;|------------------------------------------| If Not IsHWnd($_fc_hWnd) Then Return SetError(1) Local $_lv_bUnicode = _GUICtrlListView_GetUnicodeFormat($_fc_hWnd) Local $_lv_tLVITEM = DllStructCreate($tagLVITEM) Local $_lv_iSize = DllStructGetSize($_lv_tLVITEM) If @error Then Return SetError($LV_ERR, $LV_ERR, False) DllStructSetData($_lv_tLVITEM, "Mask", $LVIF_STATE) DllStructSetData($_lv_tLVITEM, "StateMask", 0xffff) Local $_lv_aItems[$_fc_iItems + 1] Local $_lv_tMemMap Local $_lv_pMemory For $_lv_iItem = 0 To $_fc_iItems DllStructSetData($_lv_tLVITEM, "Item", $_lv_iItem) If _WinAPI_InProcess($_fc_hWnd, $__g_hLVLastWnd) Then _SendMessage($_fc_hWnd, $LVM_GETITEMW, 0, $_lv_tLVITEM, 0, "wparam", "struct*") Else $_lv_pMemory = _MemInit($_fc_hWnd, $_lv_iSize, $_lv_tMemMap) _MemWrite($_lv_tMemMap, $_lv_tLVITEM) If $_lv_bUnicode Then _SendMessage($_fc_hWnd, $LVM_GETITEMW, 0, $_lv_pMemory, 0, "wparam", "ptr") Else _SendMessage($_fc_hWnd, $LVM_GETITEMA, 0, $_lv_pMemory, 0, "wparam", "ptr") EndIf _MemRead($_lv_tMemMap, $_lv_pMemory, $_lv_tLVITEM, $_lv_iSize) _MemFree($_lv_tMemMap) EndIf $_lv_aItems[$_lv_iItem] = BitAND(DllStructGetData($_lv_tLVITEM, "State"), 0x2000) <> 0 Next Return $_lv_aItems EndFunc ;==>_GUICtrlListView_GetItemCheckedState Func GUI_msg_LV($_fp_hWnd, $_fp_iMsg, $_fp_wParam, $_fp_lParam) ;|-------------------------------------------------------------------| ;| GUI_msg_LV | ;|-------------------------------------------------------------------| ;| $_fp_hWnd = Window handle of the GUI in which the message appears | ;| $_fp_iMsg = Windows message ID | ;| $_fp_wParam = First message parameter as hex value | ;| $_fp_lParam = Second message parameter as hex value | ;|-------------------------------------------------------------------| Local $_lv_hWndFrom, $_lv_iCode, $_lv_tNMHDR $_lv_tNMHDR = DllStructCreate($tagNMHDR, $_fp_lParam) $_lv_hWndFrom = HWnd(DllStructGetData($_lv_tNMHDR, "hWndFrom")) $_lv_iCode = DllStructGetData($_lv_tNMHDR, "Code") If $_lv_hWndFrom <> $_gv_hLV Then Return $GUI_RUNDEFMSG If $_lv_iCode <> $NM_CUSTOMDRAW Then Return $GUI_RUNDEFMSG If Not _GUICtrlListView_GetViewDetails($_lv_hWndFrom) Then Return $GUI_RUNDEFMSG Local $_lv_tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $_fp_lParam) Local $_lv_iDrawState = DllStructGetData($_lv_tCustDraw, 'dwDrawStage'), $_lv_iItem, $_lv_iSubItem, $_lv_hDC Switch $_lv_iDrawState Case $CDDS_ITEMPREPAINT Return $CDRF_NOTIFYSUBITEMDRAW Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM) $_lv_iItem = DllStructGetData($_lv_tCustDraw, 'dwItemSpec') $_lv_iSubItem = DllStructGetData($_lv_tCustDraw, 'iSubItem') Local $_lv_hClr_Txt = 0x000000, $_lv_hClr_BK = 0xFFFFFF, $_lv_iSize = 14, $_lv_sFont = Default, $_lv_iWeight = $FW_NORMAL, $_lv_boStrike = False If _GUICtrlListView_GetItemChecked($_gv_hLV, $_lv_iItem) Then $_lv_hClr_Txt = $_gc_hClr_Green $_lv_boStrike = True Else $_lv_hClr_Txt = $_gc_hClr_Black EndIf _GUICtrl_ListView_DrawItem($_lv_hDC, $_lv_tCustDraw, $_lv_sFont, $_lv_iSize, $_lv_iWeight, $_lv_hClr_Txt, $_lv_hClr_BK, $_lv_boStrike) Return $CDRF_NEWFONT EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>GUI_msg_LV #EndRegion Helper #Region Functions - Helper Func _RGB2BGR($_fp_iColor) ;|-------------------------------------------------------| ;| _RGB2BGR | ;|-------------------------------------------------------| ;| $_fp_iColor = Color to convert from RGB format to BGR | ;|-------------------------------------------------------| Return BitAND(BitShift(String(Binary($_fp_iColor)), 8), 0xFFFFFF) EndFunc ;==>_RGB2BGR Func _SysGetDPI() Local $_lv_aDPI[3] Local $_lv_iDPI, $_lv_iDPIRat, $_lv_iLogPixelsY = 90, $_lv_hWnd = 0 Local $_lv_hDC = DllCall("user32.dll", "long", "GetDC", "long", $_lv_hWnd) Local $_lv_aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $_lv_hDC[0], "long", $_lv_iLogPixelsY) $_lv_hDC = DllCall("user32.dll", "long", "ReleaseDC", "long", $_lv_hWnd, "long", $_lv_hDC) $_lv_iDPI = $_lv_aRet[0] Select Case $_lv_iDPI = 0 $_lv_iDPI = 96 $_lv_iDPIRat = 94 Case $_lv_iDPI < 84 $_lv_iDPIRat = $_lv_iDPI / 105 Case $_lv_iDPI < 121 $_lv_iDPIRat = $_lv_iDPI / 96 Case $_lv_iDPI < 145 $_lv_iDPIRat = $_lv_iDPI / 95 Case Else $_lv_iDPIRat = $_lv_iDPI / 94 EndSelect $_lv_aDPI[0] = 2 $_lv_aDPI[1] = $_lv_iDPI $_lv_aDPI[2] = $_lv_iDPIRat Return $_lv_iDPIRat EndFunc ;==>_SysGetDPI #EndRegion Functions - Helper coffeeturtle 1
marcgforce Posted June 14, 2017 Posted June 14, 2017 Nice script, really usefull, but missing a context menu or button to minimize or send to tray, because it takes a very big part of screen. Thanks for your job
TheSpannish Posted June 15, 2017 Posted June 15, 2017 Agree with macgforce, also I will recomend a resize button and as an extra a countdown to know how much time you spend on each entry Codding its just my life! :thumbsup:
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now