first commit
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.idea
|
||||||
|
venv
|
||||||
|
new_20231010/.idea
|
||||||
37
new_20231010/20231010_test.spec
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['20231010_test.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='20231010_test',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
BIN
new_20231010/__pycache__/mysql.cpython-39.pyc
Normal file
3080
new_20231010/build/main/Analysis-00.toc
Normal file
2874
new_20231010/build/main/EXE-00.toc
Normal file
2852
new_20231010/build/main/PKG-00.toc
Normal file
BIN
new_20231010/build/main/PYZ-00.pyz
Normal file
247
new_20231010/build/main/PYZ-00.toc
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
('D:\\python_project\\new_20231010\\build\\main\\PYZ-00.pyz',
|
||||||
|
[('_compat_pickle',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_compat_pickle.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_compression',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_compression.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_py_abc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_py_abc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_pydecimal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_pydecimal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_strptime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_strptime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_threading_local',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_threading_local.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('argparse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\argparse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('base64',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\base64.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('bisect',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\bisect.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('bz2',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\bz2.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('calendar',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\calendar.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('configparser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\configparser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('contextlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\contextlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('contextvars',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\contextvars.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('copy',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('csv',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\csv.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('datetime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\datetime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('decimal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\decimal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._encoded_words',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_encoded_words.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._header_value_parser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_header_value_parser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._parseaddr',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_parseaddr.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._policybase',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_policybase.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.base64mime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\base64mime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.charset',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\charset.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.contentmanager',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\contentmanager.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.encoders',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\encoders.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.errors',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\errors.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.feedparser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\feedparser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.generator',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\generator.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.header',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\header.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.headerregistry',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\headerregistry.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.iterators',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\iterators.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.message',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\message.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.parser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\parser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.policy',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\policy.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.quoprimime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\quoprimime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.utils',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\utils.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('fnmatch',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\fnmatch.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('fractions',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\fractions.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('getopt',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\getopt.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('gettext',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\gettext.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('gzip',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\gzip.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('hashlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\hashlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib._bootstrap',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\_bootstrap.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib._bootstrap_external',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\_bootstrap_external.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.abc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\abc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.machinery',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\machinery.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.metadata',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\metadata.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.util',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\util.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('logging',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\logging\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('lzma',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\lzma.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('numbers',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\numbers.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('optparse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\optparse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pathlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pathlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pickle',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pickle.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pprint',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pprint.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('py_compile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\py_compile.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('quopri',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\quopri.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('random',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\random.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('selectors',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\selectors.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('shutil',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\shutil.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('signal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\signal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('socket',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\socket.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('statistics',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\statistics.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('string',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\string.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('stringprep',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\stringprep.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('subprocess',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\subprocess.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tarfile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tarfile.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('textwrap',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\textwrap.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('threading',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\threading.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter.constants',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\constants.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('token',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\token.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tokenize',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tokenize.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tracemalloc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tracemalloc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('typing',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\typing.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('urllib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\urllib\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('urllib.parse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\urllib\\parse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('uu',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\uu.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('zipfile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\zipfile.py',
|
||||||
|
'PYMODULE')])
|
||||||
2494
new_20231010/build/main/Tree-00.toc
Normal file
265
new_20231010/build/main/Tree-01.toc
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
('C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6',
|
||||||
|
'tk',
|
||||||
|
['demos', '*.lib', 'tkConfig.sh'],
|
||||||
|
'DATA',
|
||||||
|
[('tk\\bgerror.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\bgerror.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\button.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\button.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\choosedir.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\choosedir.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\clrpick.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\clrpick.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\comdlg.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\comdlg.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\console.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\console.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\dialog.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\dialog.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\entry.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\entry.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\focus.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\focus.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\fontchooser.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\fontchooser.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\iconlist.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\iconlist.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\icons.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\icons.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\license.terms',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\license.terms',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\listbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\listbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\megawidget.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\megawidget.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\menu.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\menu.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\mkpsenc.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\mkpsenc.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\obsolete.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\obsolete.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\optMenu.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\optMenu.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\palette.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\palette.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\panedwindow.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\panedwindow.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\pkgIndex.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\pkgIndex.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\safetk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\safetk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\scale.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\scale.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\scrlbar.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\scrlbar.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\spinbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\spinbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tclIndex',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tclIndex',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tearoff.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tearoff.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\text.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\text.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tkfbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tkfbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\unsupported.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\unsupported.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\xmfbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\xmfbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\altTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\altTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\aquaTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\aquaTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\button.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\button.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\clamTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\clamTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\classicTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\classicTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\combobox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\combobox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\cursors.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\cursors.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\defaults.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\defaults.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\entry.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\entry.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\fonts.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\fonts.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\menubutton.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\menubutton.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\notebook.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\notebook.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\panedwindow.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\panedwindow.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\progress.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\progress.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\scale.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\scale.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\scrollbar.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\scrollbar.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\sizegrip.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\sizegrip.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\spinbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\spinbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\treeview.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\treeview.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\ttk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\ttk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\utils.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\utils.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\vistaTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\vistaTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\winTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\winTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\xpTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\xpTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\cs.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\cs.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\da.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\da.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\de.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\de.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\el.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\el.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\en.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\en.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\en_gb.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\en_gb.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\eo.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\eo.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\es.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\es.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\fr.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\fr.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\hu.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\hu.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\it.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\it.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\nl.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\nl.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\pl.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\pl.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\pt.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\pt.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\ru.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\ru.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\sv.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\sv.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo.eps',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo.eps',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo100.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo100.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo64.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo64.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logoLarge.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logoLarge.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logoMed.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logoMed.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo.eps',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo.eps',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo100.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo100.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo150.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo150.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo175.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo175.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo200.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo200.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo75.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo75.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\README',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\README',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\tai-ku.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\tai-ku.gif',
|
||||||
|
'DATA')])
|
||||||
19
new_20231010/build/main/Tree-02.toc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
('C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8',
|
||||||
|
'tcl8',
|
||||||
|
[],
|
||||||
|
'DATA',
|
||||||
|
[('tcl8\\8.6\\http-2.9.5.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.6\\http-2.9.5.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.4\\platform-1.0.18.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform-1.0.18.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||||
|
'DATA')])
|
||||||
BIN
new_20231010/build/main/base_library.zip
Normal file
BIN
new_20231010/build/main/localpycs/pyimod01_archive.pyc
Normal file
BIN
new_20231010/build/main/localpycs/pyimod02_importers.pyc
Normal file
BIN
new_20231010/build/main/localpycs/pyimod03_ctypes.pyc
Normal file
BIN
new_20231010/build/main/localpycs/pyimod04_pywin32.pyc
Normal file
BIN
new_20231010/build/main/localpycs/struct.pyc
Normal file
BIN
new_20231010/build/main/main.pkg
Normal file
26
new_20231010/build/main/warn-main.txt
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
This file lists modules PyInstaller was not able to find. This does not
|
||||||
|
necessarily mean this module is required for running your program. Python and
|
||||||
|
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||||
|
example the module 'ntpath' only exists on Windows, whereas the module
|
||||||
|
'posixpath' only exists on Posix systems.
|
||||||
|
|
||||||
|
Types if import:
|
||||||
|
* top-level: imported at the top-level - look at these first
|
||||||
|
* conditional: imported within an if-statement
|
||||||
|
* delayed: imported within a function
|
||||||
|
* optional: imported within a try-except-statement
|
||||||
|
|
||||||
|
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||||
|
tracking down the missing module yourself. Thanks!
|
||||||
|
|
||||||
|
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional)
|
||||||
|
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional)
|
||||||
|
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional)
|
||||||
|
missing module named pep517 - imported by importlib.metadata (delayed)
|
||||||
|
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
|
||||||
|
missing module named resource - imported by posix (top-level)
|
||||||
|
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional)
|
||||||
|
missing module named 'org.python' - imported by copy (optional)
|
||||||
|
missing module named org - imported by pickle (optional)
|
||||||
|
missing module named _posixsubprocess - imported by subprocess (optional)
|
||||||
6533
new_20231010/build/main/xref-main.html
Normal file
3086
new_20231010/build/test/Analysis-00.toc
Normal file
2874
new_20231010/build/test/EXE-00.toc
Normal file
2852
new_20231010/build/test/PKG-00.toc
Normal file
BIN
new_20231010/build/test/PYZ-00.pyz
Normal file
253
new_20231010/build/test/PYZ-00.toc
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
('D:\\python_project\\new_20231010\\build\\test\\PYZ-00.pyz',
|
||||||
|
[('_compat_pickle',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_compat_pickle.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_compression',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_compression.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_py_abc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_py_abc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_pydecimal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_pydecimal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_strptime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_strptime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('_threading_local',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_threading_local.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('argparse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\argparse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('base64',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\base64.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('bisect',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\bisect.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('bz2',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\bz2.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('calendar',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\calendar.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('configparser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\configparser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('contextlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\contextlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('contextvars',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\contextvars.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('copy',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('csv',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\csv.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('datetime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\datetime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('decimal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\decimal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._encoded_words',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_encoded_words.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._header_value_parser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_header_value_parser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._parseaddr',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_parseaddr.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email._policybase',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\_policybase.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.base64mime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\base64mime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.charset',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\charset.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.contentmanager',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\contentmanager.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.encoders',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\encoders.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.errors',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\errors.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.feedparser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\feedparser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.generator',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\generator.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.header',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\header.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.headerregistry',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\headerregistry.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.iterators',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\iterators.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.message',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\message.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.parser',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\parser.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.policy',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\policy.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.quoprimime',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\quoprimime.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('email.utils',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\email\\utils.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('fnmatch',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\fnmatch.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('fractions',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\fractions.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('getopt',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\getopt.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('gettext',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\gettext.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('gzip',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\gzip.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('hashlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\hashlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib._bootstrap',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\_bootstrap.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib._bootstrap_external',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\_bootstrap_external.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.abc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\abc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.machinery',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\machinery.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.metadata',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\metadata.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('importlib.util',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\importlib\\util.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('logging',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\logging\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('lzma',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\lzma.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('numbers',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\numbers.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('optparse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\optparse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pathlib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pathlib.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pickle',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pickle.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pprint',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pprint.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('py_compile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\py_compile.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('quopri',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\quopri.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('random',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\random.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('selectors',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\selectors.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('shutil',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\shutil.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('signal',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\signal.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('socket',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\socket.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('statistics',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\statistics.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('string',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\string.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('stringprep',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\stringprep.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('subprocess',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\subprocess.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tarfile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tarfile.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('textwrap',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\textwrap.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('threading',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\threading.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter.commondialog',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\commondialog.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter.constants',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\constants.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tkinter.messagebox',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\messagebox.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('token',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\token.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tokenize',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tokenize.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('tracemalloc',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tracemalloc.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('typing',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\typing.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('urllib',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\urllib\\__init__.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('urllib.parse',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\urllib\\parse.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('uu',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\uu.py',
|
||||||
|
'PYMODULE'),
|
||||||
|
('zipfile',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\lib\\zipfile.py',
|
||||||
|
'PYMODULE')])
|
||||||
2494
new_20231010/build/test/Tree-00.toc
Normal file
265
new_20231010/build/test/Tree-01.toc
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
('C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6',
|
||||||
|
'tk',
|
||||||
|
['demos', '*.lib', 'tkConfig.sh'],
|
||||||
|
'DATA',
|
||||||
|
[('tk\\bgerror.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\bgerror.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\button.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\button.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\choosedir.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\choosedir.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\clrpick.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\clrpick.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\comdlg.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\comdlg.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\console.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\console.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\dialog.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\dialog.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\entry.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\entry.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\focus.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\focus.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\fontchooser.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\fontchooser.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\iconlist.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\iconlist.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\icons.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\icons.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\license.terms',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\license.terms',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\listbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\listbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\megawidget.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\megawidget.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\menu.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\menu.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\mkpsenc.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\mkpsenc.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\obsolete.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\obsolete.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\optMenu.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\optMenu.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\palette.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\palette.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\panedwindow.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\panedwindow.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\pkgIndex.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\pkgIndex.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\safetk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\safetk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\scale.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\scale.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\scrlbar.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\scrlbar.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\spinbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\spinbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tclIndex',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tclIndex',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tearoff.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tearoff.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\text.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\text.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\tkfbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\tkfbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\unsupported.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\unsupported.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\xmfbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\xmfbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\altTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\altTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\aquaTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\aquaTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\button.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\button.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\clamTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\clamTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\classicTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\classicTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\combobox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\combobox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\cursors.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\cursors.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\defaults.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\defaults.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\entry.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\entry.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\fonts.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\fonts.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\menubutton.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\menubutton.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\notebook.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\notebook.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\panedwindow.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\panedwindow.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\progress.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\progress.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\scale.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\scale.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\scrollbar.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\scrollbar.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\sizegrip.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\sizegrip.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\spinbox.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\spinbox.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\treeview.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\treeview.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\ttk.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\ttk.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\utils.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\utils.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\vistaTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\vistaTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\winTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\winTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\ttk\\xpTheme.tcl',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\ttk\\xpTheme.tcl',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\cs.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\cs.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\da.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\da.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\de.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\de.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\el.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\el.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\en.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\en.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\en_gb.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\en_gb.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\eo.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\eo.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\es.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\es.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\fr.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\fr.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\hu.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\hu.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\it.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\it.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\nl.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\nl.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\pl.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\pl.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\pt.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\pt.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\ru.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\ru.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\msgs\\sv.msg',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\msgs\\sv.msg',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo.eps',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo.eps',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo100.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo100.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logo64.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logo64.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logoLarge.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logoLarge.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\logoMed.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\logoMed.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo.eps',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo.eps',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo100.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo100.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo150.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo150.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo175.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo175.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo200.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo200.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\pwrdLogo75.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\pwrdLogo75.gif',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\README',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\README',
|
||||||
|
'DATA'),
|
||||||
|
('tk\\images\\tai-ku.gif',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tk8.6\\images\\tai-ku.gif',
|
||||||
|
'DATA')])
|
||||||
19
new_20231010/build/test/Tree-02.toc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
('C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8',
|
||||||
|
'tcl8',
|
||||||
|
[],
|
||||||
|
'DATA',
|
||||||
|
[('tcl8\\8.6\\http-2.9.5.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.6\\http-2.9.5.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.4\\platform-1.0.18.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform-1.0.18.tm',
|
||||||
|
'DATA'),
|
||||||
|
('tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||||
|
'C:\\Users\\IMI_CTO\\AppData\\Local\\Programs\\Python\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||||
|
'DATA')])
|
||||||
BIN
new_20231010/build/test/base_library.zip
Normal file
BIN
new_20231010/build/test/localpycs/pyimod01_archive.pyc
Normal file
BIN
new_20231010/build/test/localpycs/pyimod02_importers.pyc
Normal file
BIN
new_20231010/build/test/localpycs/pyimod03_ctypes.pyc
Normal file
BIN
new_20231010/build/test/localpycs/pyimod04_pywin32.pyc
Normal file
BIN
new_20231010/build/test/localpycs/struct.pyc
Normal file
BIN
new_20231010/build/test/test.pkg
Normal file
26
new_20231010/build/test/warn-test.txt
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
This file lists modules PyInstaller was not able to find. This does not
|
||||||
|
necessarily mean this module is required for running your program. Python and
|
||||||
|
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||||
|
example the module 'ntpath' only exists on Windows, whereas the module
|
||||||
|
'posixpath' only exists on Posix systems.
|
||||||
|
|
||||||
|
Types if import:
|
||||||
|
* top-level: imported at the top-level - look at these first
|
||||||
|
* conditional: imported within an if-statement
|
||||||
|
* delayed: imported within a function
|
||||||
|
* optional: imported within a try-except-statement
|
||||||
|
|
||||||
|
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||||
|
tracking down the missing module yourself. Thanks!
|
||||||
|
|
||||||
|
missing module named 'org.python' - imported by copy (optional)
|
||||||
|
missing module named _posixsubprocess - imported by subprocess (optional)
|
||||||
|
missing module named grp - imported by subprocess (optional), shutil (optional), tarfile (optional), pathlib (delayed, optional)
|
||||||
|
missing module named pwd - imported by posixpath (delayed, conditional), subprocess (optional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional)
|
||||||
|
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional)
|
||||||
|
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional)
|
||||||
|
missing module named pep517 - imported by importlib.metadata (delayed)
|
||||||
|
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
|
||||||
|
missing module named resource - imported by posix (top-level)
|
||||||
|
missing module named org - imported by pickle (optional)
|
||||||
6571
new_20231010/build/test/xref-test.html
Normal file
BIN
new_20231010/chromedriver.exe
Normal file
12
new_20231010/config.ini
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[User]
|
||||||
|
adminid = 74575be0b77e64db6a5711285efba4715bc5a470f2a5e1e0cd7354c0ddce675c
|
||||||
|
adminpass = fbc47c2d2ca7935af8865adf579a5ea33eaa87b344b4397b1de142df7477356e
|
||||||
|
|
||||||
|
[General]
|
||||||
|
log_level = INFO
|
||||||
|
|
||||||
|
[Mysql]
|
||||||
|
database = ""
|
||||||
|
user=""
|
||||||
|
passwd=""
|
||||||
|
host=""
|
||||||
6
new_20231010/dist/config.ini
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[User]
|
||||||
|
adminid = 74575be0b77e64db6a5711285efba4715bc5a470f2a5e1e0cd7354c0ddce675c
|
||||||
|
adminpass = fbc47c2d2ca7935af8865adf579a5ea33eaa87b344b4397b1de142df7477356e
|
||||||
|
|
||||||
|
[General]
|
||||||
|
log_level = INFO
|
||||||
BIN
new_20231010/dist/main.exe
vendored
Normal file
BIN
new_20231010/dist/test.exe
vendored
Normal file
1
new_20231010/file2.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
이성노홍길동김길동
|
||||||
BIN
new_20231010/google.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
138
new_20231010/itemmania.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
from tkinter import *
|
||||||
|
from selenium import webdriver
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.chrome.service import Service as ChromeService
|
||||||
|
from selenium.webdriver.chrome.options import Options as ChromeOptions
|
||||||
|
from webdriver_manager.chrome import ChromeDriverManager
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
# id pw log.login
|
||||||
|
|
||||||
|
win=Tk()
|
||||||
|
win.geometry("400x300")
|
||||||
|
win.title('아이템매니아로그인')
|
||||||
|
win.option_add("*Font","궁서 20")
|
||||||
|
|
||||||
|
#로고
|
||||||
|
lab_logo = Label(win)
|
||||||
|
img = PhotoImage(file="./itemmania_logo.gif", master=win)
|
||||||
|
#img = img.subsample(2)
|
||||||
|
lab_logo.config(image=img)
|
||||||
|
lab_logo.pack()
|
||||||
|
|
||||||
|
#id 라벨
|
||||||
|
lab1 = Label(win)
|
||||||
|
lab1.config(text="아이디")
|
||||||
|
lab1.pack()
|
||||||
|
|
||||||
|
#pw 입력창
|
||||||
|
ent1 = Entry(win)
|
||||||
|
ent1.insert(0,"sungro815")
|
||||||
|
ent1.bind()
|
||||||
|
ent1.pack()
|
||||||
|
|
||||||
|
#pw 라벨
|
||||||
|
lab2 = Label(win)
|
||||||
|
lab2.config(text="비밀번호")
|
||||||
|
lab2.pack()
|
||||||
|
|
||||||
|
#pw 입력창
|
||||||
|
ent2 = Entry(win)
|
||||||
|
ent2.config(show="*")
|
||||||
|
ent2.insert(0,"tjekdfl")
|
||||||
|
ent2.pack()
|
||||||
|
|
||||||
|
#로그인버튼
|
||||||
|
btn = Button(win)
|
||||||
|
btn.config(text='로그인')
|
||||||
|
|
||||||
|
def login():
|
||||||
|
my_id = ent1.get()
|
||||||
|
my_pass = ent2.get()
|
||||||
|
|
||||||
|
options = ChromeOptions()
|
||||||
|
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
|
||||||
|
options.add_argument('user-agent=' + user_agent)
|
||||||
|
options.add_argument("lang=ko_KR")
|
||||||
|
options.add_argument('window-size=1920x1080')
|
||||||
|
options.add_argument("disable-gpu")
|
||||||
|
options.add_experimental_option("detach", True)
|
||||||
|
|
||||||
|
service = ChromeService(executable_path=ChromeDriverManager().install())
|
||||||
|
driver = webdriver.Chrome(service=service, options=options)
|
||||||
|
url = "https://www.itemmania.com/portal/user/p_login_form.html"
|
||||||
|
driver.get(url)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
|
||||||
|
xpath1 = "//input[@name='user_id']"
|
||||||
|
driver.find_element(By.XPATH, xpath1).send_keys(my_id)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
xpath2 = "//input[@name='user_password']"
|
||||||
|
driver.find_element(By.XPATH, xpath2).send_keys(my_pass)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
xpath3 = "//button[@class='btn btn_blue']"
|
||||||
|
driver.find_element(By.XPATH, xpath3).click()
|
||||||
|
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
lab3.config(text='[메세지]로그인성공')
|
||||||
|
|
||||||
|
# 모든 팝업 창 핸들 가져오기
|
||||||
|
popup_handles = driver.window_handles
|
||||||
|
|
||||||
|
# 부모 창 핸들 가져오기
|
||||||
|
parent_handle = driver.current_window_handle
|
||||||
|
|
||||||
|
# 모든 팝업 창 닫기 (부모 창 제외)
|
||||||
|
for handle in popup_handles:
|
||||||
|
if handle != parent_handle:
|
||||||
|
driver.switch_to.window(handle)
|
||||||
|
driver.close()
|
||||||
|
|
||||||
|
# 다시 부모 창으로 돌아가기
|
||||||
|
driver.switch_to.window(parent_handle)
|
||||||
|
driver.get("https://trade.itemmania.com/index.html")
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
|
||||||
|
xpath3 = "//input[@name='searchGameServer']"
|
||||||
|
driver.find_element(By.XPATH, xpath3).click()
|
||||||
|
|
||||||
|
page_content = driver.page_source
|
||||||
|
soup = BeautifulSoup(page_content, 'html.parser')
|
||||||
|
|
||||||
|
# <ul> 태그 중에서 속성을 가져올 요소 선택
|
||||||
|
selected_ul = soup.find('ul')
|
||||||
|
|
||||||
|
# 선택한 <ul> 요소의 모든 속성 가져오기
|
||||||
|
attributes = selected_ul.attrs
|
||||||
|
|
||||||
|
# 속성 출력
|
||||||
|
print(attributes)
|
||||||
|
|
||||||
|
# element = soup.find('ul', {'class': 'popular_list'})
|
||||||
|
# print(element.text)
|
||||||
|
#
|
||||||
|
# # 전체 HTML 데이터 가져오기
|
||||||
|
# html_data = element.prettify()
|
||||||
|
#
|
||||||
|
# # HTML 데이터 출력
|
||||||
|
# print(html_data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#인기게임확인
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
btn.config(command=login)
|
||||||
|
btn.pack()
|
||||||
|
|
||||||
|
#메세지라벨
|
||||||
|
lab3 = Label(win)
|
||||||
|
lab3.pack()
|
||||||
|
|
||||||
|
win.mainloop()
|
||||||
BIN
new_20231010/itemmania_logo.gif
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
54
new_20231010/main.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
from tkinter import *
|
||||||
|
import random
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
win=Tk()
|
||||||
|
win.geometry("550x150")
|
||||||
|
win.title('AIM_GAME')
|
||||||
|
win.option_add("*Font","궁서 20")
|
||||||
|
|
||||||
|
#라벨
|
||||||
|
lab = Label(win)
|
||||||
|
lab.config(text='표적 개수')
|
||||||
|
lab.grid(column=0,row=0,padx=20, pady=20)
|
||||||
|
|
||||||
|
ent = Entry(win)
|
||||||
|
ent.grid(column=1,row=0,padx=20, pady=20)
|
||||||
|
|
||||||
|
k=1
|
||||||
|
def cc():
|
||||||
|
global k
|
||||||
|
if k < num_t:
|
||||||
|
k +=1
|
||||||
|
btn.destroy()
|
||||||
|
ran_btn()
|
||||||
|
else :
|
||||||
|
fin = datetime.now()
|
||||||
|
sec = (fin-starttime).total_seconds()
|
||||||
|
btn.destroy()
|
||||||
|
lab = Label(win)
|
||||||
|
lab.config(text='Clear : '+str(sec)+"초",height=50)
|
||||||
|
lab.pack(pady=230)
|
||||||
|
def ran_btn():
|
||||||
|
global btn
|
||||||
|
btn=Button(win)
|
||||||
|
btn.config(bg='red')
|
||||||
|
btn.config(command=cc)
|
||||||
|
btn.config(text=k)
|
||||||
|
btn.place(relx=random.random(), rely=random.random())
|
||||||
|
def btn_f():
|
||||||
|
global num_t
|
||||||
|
num_t = int(ent.get())
|
||||||
|
for wg in win.grid_slaves():
|
||||||
|
wg.destroy()
|
||||||
|
win.geometry("500x500")
|
||||||
|
ran_btn()
|
||||||
|
global starttime
|
||||||
|
starttime = datetime.now();
|
||||||
|
|
||||||
|
btn = Button(win)
|
||||||
|
btn.config(text='시작')
|
||||||
|
btn.config(command=btn_f)
|
||||||
|
btn.grid(column=0,row=1, columnspan=2)
|
||||||
|
|
||||||
|
win.mainloop()
|
||||||
37
new_20231010/main.spec
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['main.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='main',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
50
new_20231010/mysql.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import pymysql
|
||||||
|
|
||||||
|
class db_con:
|
||||||
|
host="syye.net"
|
||||||
|
user="pythonUser"
|
||||||
|
password="Tjekdfl1324%^"
|
||||||
|
database="pythonDB"
|
||||||
|
char='utf8'
|
||||||
|
|
||||||
|
# MySQL 서버 연결 설정
|
||||||
|
conn = pymysql.connect(
|
||||||
|
host="syye.net",
|
||||||
|
user="pythonUser",
|
||||||
|
password="Tjekdfl1324%^",
|
||||||
|
db="pythonDB",
|
||||||
|
charset='utf8',
|
||||||
|
autocommit=True)
|
||||||
|
|
||||||
|
# 커서 생성
|
||||||
|
curs = conn.cursor(pymysql.cursors.DictCursor)
|
||||||
|
|
||||||
|
#조회
|
||||||
|
sql ="SELECT * FROM books"
|
||||||
|
curs.execute(sql)
|
||||||
|
rows = curs.fetchall()
|
||||||
|
for data in rows:
|
||||||
|
title=data['title']
|
||||||
|
author = data['author']
|
||||||
|
print(title, author)
|
||||||
|
|
||||||
|
#입력
|
||||||
|
# insert_query = "INSERT INTO books (title, author) VALUES (%s, %s)"
|
||||||
|
# data = ("책임름 111", "저자1")
|
||||||
|
# curs.execute(insert_query, data)
|
||||||
|
|
||||||
|
#수정
|
||||||
|
# update_query = "UPDATE books set title=%s, author=%s where id=5"
|
||||||
|
# data = ("책임름 222", "저자2")
|
||||||
|
# curs.execute(update_query, data)
|
||||||
|
|
||||||
|
#삭제
|
||||||
|
#delete_query = "DELETE FROM books WHERE id=5"
|
||||||
|
#curs.execute(delete_query)
|
||||||
|
|
||||||
|
# 변경사항을 커밋
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
# 연결 및 커서 닫기
|
||||||
|
curs.close()
|
||||||
|
conn.close()
|
||||||
200
new_20231010/newfile.txt
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
#################################################################################################
|
||||||
|
# 배치 start #####################################################################################
|
||||||
|
from tkinter import *
|
||||||
|
|
||||||
|
# 배치 place ###
|
||||||
|
# win = Tk()
|
||||||
|
# win.geometry("500x300")
|
||||||
|
# win.title("pack")
|
||||||
|
# win.option_add("*Font","궁서 20")
|
||||||
|
#
|
||||||
|
# # 배치 grid ###
|
||||||
|
# btn = Button(win)
|
||||||
|
# btn.config(text='new')
|
||||||
|
# btn.place(x=10, y=10)
|
||||||
|
#
|
||||||
|
# btn2 = Button(win)
|
||||||
|
# btn2.config(text='new2')
|
||||||
|
# btn2.place(x=100, y=100)
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# btn3 = Button(win)
|
||||||
|
# btn3.config(text='new')
|
||||||
|
# btn3.place(relx=0.5, rely=0.5)
|
||||||
|
#
|
||||||
|
# btn4 = Button(win)
|
||||||
|
# btn4.config(text='new2')
|
||||||
|
# btn4.place(x=0.8, rely=0.8)
|
||||||
|
# 배치 place ###
|
||||||
|
|
||||||
|
# 배치 grid ###
|
||||||
|
# btn_list = []
|
||||||
|
# col_num =4
|
||||||
|
# row_num =3
|
||||||
|
#
|
||||||
|
# for j in range(0,row_num):
|
||||||
|
# for i in range(0,col_num):
|
||||||
|
# btn = Button(win)
|
||||||
|
# btn.config(text='({},{})'.format(i,j), padx=10)
|
||||||
|
# btn.grid(column=i, row=j, padx=10, pady=10)
|
||||||
|
# btn_list.append(btn)
|
||||||
|
#
|
||||||
|
# btn = Button(win)
|
||||||
|
# btn.config(text='new',width=5, height=4)
|
||||||
|
# btn.grid(column=3, row=0, rowspan=2)
|
||||||
|
#
|
||||||
|
# btn2 = Button(win)
|
||||||
|
# btn2.config(text='new2')
|
||||||
|
# btn2.grid(column=1, row=2, columnspan=2)
|
||||||
|
# 배치 grid ###
|
||||||
|
|
||||||
|
|
||||||
|
# 배치 pack ###
|
||||||
|
# ent=Entry(win)
|
||||||
|
# ent.pack(side='top')
|
||||||
|
#
|
||||||
|
# btn = Button(win)
|
||||||
|
# btn.config(text='button')
|
||||||
|
# def aa():
|
||||||
|
# btn.pack(pady=ent.get())
|
||||||
|
#
|
||||||
|
# btn.config(command=aa)
|
||||||
|
# btn.pack()
|
||||||
|
#
|
||||||
|
# btn2 = Button(win)
|
||||||
|
# btn2.config(text='temp')
|
||||||
|
# btn2.pack()
|
||||||
|
# 배치 pack ###
|
||||||
|
|
||||||
|
win.mainloop()
|
||||||
|
# 배치 end #####################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# 버튼 입력폼 연동 크롤링 start ####################################################################
|
||||||
|
|
||||||
|
from tkinter import *
|
||||||
|
from datetime import datetime
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import requests
|
||||||
|
|
||||||
|
win=Tk()
|
||||||
|
win.geometry("600x100")
|
||||||
|
win.title('테스트 GUI')
|
||||||
|
win.option_add("*Font","궁서 20")
|
||||||
|
def lotto_p():
|
||||||
|
n=ent.get()
|
||||||
|
url = "https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo={}".format(n)
|
||||||
|
req = requests.get(url)
|
||||||
|
soup = BeautifulSoup(req.text, "html.parser")
|
||||||
|
txt=soup.find("div", attrs={"class","win_result"}).get_text()
|
||||||
|
title = txt.split("\n")[1:3]
|
||||||
|
numlist = txt.split("\n")[7:13]
|
||||||
|
bonus = txt.split("\n")[-4]
|
||||||
|
print(title)
|
||||||
|
print(numlist)
|
||||||
|
print(bonus)
|
||||||
|
|
||||||
|
|
||||||
|
btn = Button(win)
|
||||||
|
btn.config(text='로또당첨번호 확인')
|
||||||
|
#btn.config(width=10, height=1)
|
||||||
|
btn.config(command=lotto_p)
|
||||||
|
btn.pack()
|
||||||
|
|
||||||
|
ent=Entry(win)
|
||||||
|
ent.pack()
|
||||||
|
|
||||||
|
|
||||||
|
win.mainloop()
|
||||||
|
|
||||||
|
# 버튼 입력폼 연동 크롤링 end ####################################################################
|
||||||
|
|
||||||
|
# 로그인폼 브라우저 데이터 전송 자동로그인 start#####################################################
|
||||||
|
from tkinter import *
|
||||||
|
from selenium import webdriver
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.chrome.service import Service as ChromeService
|
||||||
|
from selenium.webdriver.chrome.options import Options as ChromeOptions
|
||||||
|
from webdriver_manager.chrome import ChromeDriverManager
|
||||||
|
|
||||||
|
# id pw log.login
|
||||||
|
|
||||||
|
win=Tk()
|
||||||
|
win.geometry("400x300")
|
||||||
|
win.title('다음로그인')
|
||||||
|
win.option_add("*Font","궁서 20")
|
||||||
|
btn = Button(win)
|
||||||
|
|
||||||
|
#로고
|
||||||
|
lab_logo = Label(win)
|
||||||
|
img = PhotoImage(file="./google.png", master=win)
|
||||||
|
img = img.subsample(2)
|
||||||
|
lab_logo.config(image=img)
|
||||||
|
lab_logo.pack()
|
||||||
|
|
||||||
|
#id 라벨
|
||||||
|
lab1 = Label(win)
|
||||||
|
lab1.config(text="아이디")
|
||||||
|
lab1.pack()
|
||||||
|
|
||||||
|
#pw 입력창
|
||||||
|
ent1 = Entry(win)
|
||||||
|
ent1.insert(0,"test@test.com")
|
||||||
|
def clear(event):
|
||||||
|
if ent1.get() == "test@test.com":
|
||||||
|
ent1.delete(0, len(ent1.get()))
|
||||||
|
|
||||||
|
ent1.bind("<Button-1>", clear)
|
||||||
|
ent1.pack()
|
||||||
|
|
||||||
|
#pw 라벨
|
||||||
|
lab2 = Label(win)
|
||||||
|
lab2.config(text="비밀번호")
|
||||||
|
lab2.pack()
|
||||||
|
|
||||||
|
#pw 입력창
|
||||||
|
ent2 = Entry(win)
|
||||||
|
ent2.config(show="*")
|
||||||
|
ent2.pack()
|
||||||
|
|
||||||
|
#로그인버튼
|
||||||
|
btn = Button(win)
|
||||||
|
btn.config(text='로그인')
|
||||||
|
def login():
|
||||||
|
my_id = ent1.get()
|
||||||
|
my_pass = ent2.get()
|
||||||
|
|
||||||
|
options = ChromeOptions()
|
||||||
|
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
|
||||||
|
options.add_argument('user-agent=' + user_agent)
|
||||||
|
options.add_argument("lang=ko_KR")
|
||||||
|
options.add_argument('window-size=1920x1080')
|
||||||
|
options.add_argument("disable-gpu")
|
||||||
|
options.add_experimental_option("detach", True)
|
||||||
|
|
||||||
|
service = ChromeService(executable_path=ChromeDriverManager().install())
|
||||||
|
driver = webdriver.Chrome(service=service, options=options)
|
||||||
|
url = "https://accounts.kakao.com/login/?continue=https%3A%2F%2Flogins.daum.net%2Faccounts%2Fksso.do%3Frescue%3Dtrue%26url%3Dhttps%253A%252F%252Fwww.daum.net#login"
|
||||||
|
driver.get(url)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
|
||||||
|
xpath1 = "//input[@name='loginId']"
|
||||||
|
driver.find_element(By.XPATH, xpath1).send_keys(my_id)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
xpath2 = "//input[@name='password']"
|
||||||
|
driver.find_element(By.XPATH, xpath2).send_keys(my_pass)
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
xpath3 = "//button[@class='btn_g highlight submit']"
|
||||||
|
driver.find_element(By.XPATH, xpath3).click()
|
||||||
|
lab3.config(text='[메세지]로그인성공')
|
||||||
|
|
||||||
|
btn.config(command=login)
|
||||||
|
btn.pack()
|
||||||
|
|
||||||
|
#메세지라벨
|
||||||
|
lab3 = Label(win)
|
||||||
|
lab3.pack()
|
||||||
|
|
||||||
|
win.mainloop()
|
||||||
|
|
||||||
|
# 로그인폼 브라우저 데이터 전송 자동로그인 end#######################################################
|
||||||
80
new_20231010/test.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import tkinter as tk
|
||||||
|
import hashlib
|
||||||
|
import configparser
|
||||||
|
from tkinter import Label, Entry, Button, messagebox
|
||||||
|
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read('config.ini')
|
||||||
|
|
||||||
|
adminid = config['User']['adminid']
|
||||||
|
adminpw = config['User']['adminpass']
|
||||||
|
|
||||||
|
def hashcryto(txt):
|
||||||
|
original_string = txt
|
||||||
|
# SHA-256 해시 객체 생성
|
||||||
|
hash_object = hashlib.sha256()
|
||||||
|
# 문자열을 바이트로 변환하여 해싱
|
||||||
|
original_bytes = original_string.encode('utf-8')
|
||||||
|
hash_object.update(original_bytes)
|
||||||
|
|
||||||
|
# 해시된 결과를 16진수로 표시
|
||||||
|
hashed_string = hash_object.hexdigest()
|
||||||
|
return hashed_string
|
||||||
|
|
||||||
|
# 로그인 버튼 클릭 시 실행할 함수
|
||||||
|
def login():
|
||||||
|
username = username_entry.get()
|
||||||
|
password = password_entry.get()
|
||||||
|
|
||||||
|
if hashcryto(username) == adminid and hashcryto(password) == adminpw:
|
||||||
|
messagebox.showinfo("로그인 성공", "로그인에 성공했습니다!")
|
||||||
|
# 로그인 성공 시, 새로운 창을 열고 메인 창을 숨깁니다.
|
||||||
|
main_window.withdraw() # 메인 창 숨김
|
||||||
|
welcome_window.geometry("500x300")
|
||||||
|
welcome_window.deiconify() # 로그인 성공 페이지 표시
|
||||||
|
else:
|
||||||
|
messagebox.showerror("로그인 실패", "잘못된 사용자 이름 또는 비밀번호입니다.")
|
||||||
|
|
||||||
|
# 로그아웃 버튼 클릭 시 실행할 함수
|
||||||
|
def logout():
|
||||||
|
welcome_window.withdraw() # 로그인 성공 페이지 숨김
|
||||||
|
main_window.deiconify() # 메인 창 표시
|
||||||
|
|
||||||
|
# 메인 윈도우 생성
|
||||||
|
main_window = tk.Tk()
|
||||||
|
main_window.title("로그인 폼")
|
||||||
|
|
||||||
|
# 사용자 이름 레이블과 엔트리 위젯
|
||||||
|
username_label = Label(main_window, text="사용자 이름:")
|
||||||
|
username_label.pack()
|
||||||
|
username_entry = Entry(main_window)
|
||||||
|
username_entry.pack()
|
||||||
|
|
||||||
|
# 비밀번호 레이블과 엔트리 위젯
|
||||||
|
password_label = Label(main_window, text="비밀번호:")
|
||||||
|
password_label.pack()
|
||||||
|
password_entry = Entry(main_window, show="*") # 비밀번호 필드를 표시하지 않음
|
||||||
|
password_entry.pack()
|
||||||
|
|
||||||
|
# 로그인 버튼
|
||||||
|
login_button = Button(main_window, text="로그인", command=login)
|
||||||
|
login_button.pack()
|
||||||
|
|
||||||
|
# 로그인 성공 페이지
|
||||||
|
welcome_window = tk.Toplevel(main_window)
|
||||||
|
welcome_window.title("환영합니다!")
|
||||||
|
|
||||||
|
welcome_label = Label(welcome_window, text="로그인에 성공했습니다!")
|
||||||
|
welcome_label.pack()
|
||||||
|
|
||||||
|
# 로그아웃 버튼
|
||||||
|
logout_button = Button(welcome_window, text="로그아웃", command=logout)
|
||||||
|
logout_button.pack()
|
||||||
|
|
||||||
|
# 처음에는 로그인 성공 페이지 숨김
|
||||||
|
welcome_window.withdraw()
|
||||||
|
|
||||||
|
# 메인 루프 시작
|
||||||
|
main_window.geometry("500x300")
|
||||||
|
main_window.resizable(False, False) # 창 크기 조절 불가능
|
||||||
|
main_window.mainloop()
|
||||||
37
new_20231010/test.spec
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['test.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='test',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
211
phpchet/public_html/Chat.php
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
<?php
|
||||||
|
class Chat{
|
||||||
|
private $host = '192.168.0.43';
|
||||||
|
private $user = 'pythonUser';
|
||||||
|
private $password = "Tjekdfl1324%^";
|
||||||
|
private $database = "chatphp";
|
||||||
|
private $chatTable = 'chat';
|
||||||
|
private $chatUsersTable = 'chat_users';
|
||||||
|
private $chatLoginDetailsTable = 'chat_login_details';
|
||||||
|
private $dbConnect = false;
|
||||||
|
public function __construct(){
|
||||||
|
if(!$this->dbConnect){
|
||||||
|
$conn = new mysqli($this->host, $this->user, $this->password, $this->database);
|
||||||
|
if($conn->connect_error){
|
||||||
|
die("Error failed to connect to MySQL: " . $conn->connect_error);
|
||||||
|
}else{
|
||||||
|
$this->dbConnect = $conn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private function getData($sqlQuery) {
|
||||||
|
$result = mysqli_query($this->dbConnect, $sqlQuery);
|
||||||
|
if(!$result){
|
||||||
|
die('Error in query: '. mysqli_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$data= array();
|
||||||
|
while ($row = mysqli_fetch_array($result)) {
|
||||||
|
$data[]=$row;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
private function getNumRows($sqlQuery) {
|
||||||
|
$result = mysqli_query($this->dbConnect, $sqlQuery);
|
||||||
|
if(!$result){
|
||||||
|
die('Error in query: '. mysqli_error());
|
||||||
|
}
|
||||||
|
$numRows = mysqli_num_rows($result);
|
||||||
|
return $numRows;
|
||||||
|
}
|
||||||
|
public function loginUsers($username, $password){
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT userid, username
|
||||||
|
FROM ".$this->chatUsersTable."
|
||||||
|
WHERE userid='".$username."' AND password='".$password."'";
|
||||||
|
return $this->getData($sqlQuery);
|
||||||
|
}
|
||||||
|
public function chatUsers($userid){
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT * FROM ".$this->chatUsersTable."
|
||||||
|
WHERE userid != '$userid'";
|
||||||
|
return $this->getData($sqlQuery);
|
||||||
|
}
|
||||||
|
public function getUserDetails($userid){
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT * FROM ".$this->chatUsersTable."
|
||||||
|
WHERE userid = '$userid'";
|
||||||
|
return $this->getData($sqlQuery);
|
||||||
|
}
|
||||||
|
public function getUserAvatar($userid){
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT avatar
|
||||||
|
FROM ".$this->chatUsersTable."
|
||||||
|
WHERE userid = '$userid'";
|
||||||
|
$userResult = $this->getData($sqlQuery);
|
||||||
|
$userAvatar = '';
|
||||||
|
foreach ($userResult as $user) {
|
||||||
|
$userAvatar = $user['avatar'];
|
||||||
|
}
|
||||||
|
return $userAvatar;
|
||||||
|
}
|
||||||
|
public function updateUserOnline($userId, $online) {
|
||||||
|
$sqlUserUpdate = "
|
||||||
|
UPDATE ".$this->chatUsersTable."
|
||||||
|
SET online = '".$online."'
|
||||||
|
WHERE userid = '".$userId."'";
|
||||||
|
mysqli_query($this->dbConnect, $sqlUserUpdate);
|
||||||
|
}
|
||||||
|
public function insertChat($reciever_userid, $user_id, $chat_message) {
|
||||||
|
$sqlInsert = "
|
||||||
|
INSERT INTO ".$this->chatTable."
|
||||||
|
(reciever_userid, sender_userid, message, status)
|
||||||
|
VALUES ('".$reciever_userid."', '".$user_id."', '".$chat_message."', '1')";
|
||||||
|
$result = mysqli_query($this->dbConnect, $sqlInsert);
|
||||||
|
if(!$result){
|
||||||
|
return ('Error in query: '. mysqli_error());
|
||||||
|
} else {
|
||||||
|
$conversation = $this->getUserChat($user_id, $reciever_userid);
|
||||||
|
$data = array(
|
||||||
|
"conversation" => $conversation
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function getUserChat($from_user_id, $to_user_id) {
|
||||||
|
$fromUserAvatar = $this->getUserAvatar($from_user_id);
|
||||||
|
$toUserAvatar = $this->getUserAvatar($to_user_id);
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT * FROM ".$this->chatTable."
|
||||||
|
WHERE (sender_userid = '".$from_user_id."'
|
||||||
|
AND reciever_userid = '".$to_user_id."')
|
||||||
|
OR (sender_userid = '".$to_user_id."'
|
||||||
|
AND reciever_userid = '".$from_user_id."')
|
||||||
|
ORDER BY timestamp ASC";
|
||||||
|
$userChat = $this->getData($sqlQuery);
|
||||||
|
$conversation = '<ul>';
|
||||||
|
foreach($userChat as $chat){
|
||||||
|
$user_name = '';
|
||||||
|
if($chat["sender_userid"] == $from_user_id) {
|
||||||
|
$conversation .= '<li class="sent">';
|
||||||
|
$conversation .= '<img width="22px" height="22px" src="userpics/'.$fromUserAvatar.'" alt="" />';
|
||||||
|
} else {
|
||||||
|
$conversation .= '<li class="replies">';
|
||||||
|
$conversation .= '<img width="22px" height="22px" src="userpics/'.$toUserAvatar.'" alt="" />';
|
||||||
|
}
|
||||||
|
$conversation .= '<p>'.$chat["message"].'</p>';
|
||||||
|
$conversation .= '</li>';
|
||||||
|
}
|
||||||
|
$conversation .= '</ul>';
|
||||||
|
return $conversation;
|
||||||
|
}
|
||||||
|
public function showUserChat($from_user_id, $to_user_id) {
|
||||||
|
$userDetails = $this->getUserDetails($to_user_id);
|
||||||
|
$toUserAvatar = '';
|
||||||
|
foreach ($userDetails as $user) {
|
||||||
|
$toUserAvatar = $user['avatar'];
|
||||||
|
$userSection = '<img src="userpics/'.$user['avatar'].'" alt="" />
|
||||||
|
<p>'.$user['username'].'</p>
|
||||||
|
<div class="social-media">
|
||||||
|
<i class="fa fa-facebook" aria-hidden="true"></i>
|
||||||
|
<i class="fa fa-twitter" aria-hidden="true"></i>
|
||||||
|
<i class="fa fa-instagram" aria-hidden="true"></i>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
// get user conversation
|
||||||
|
$conversation = $this->getUserChat($from_user_id, $to_user_id);
|
||||||
|
// update chat user read status
|
||||||
|
$sqlUpdate = "
|
||||||
|
UPDATE ".$this->chatTable."
|
||||||
|
SET status = '0'
|
||||||
|
WHERE sender_userid = '".$to_user_id."' AND reciever_userid = '".$from_user_id."' AND status = '1'";
|
||||||
|
mysqli_query($this->dbConnect, $sqlUpdate);
|
||||||
|
// update users current chat session
|
||||||
|
$sqlUserUpdate = "
|
||||||
|
UPDATE ".$this->chatUsersTable."
|
||||||
|
SET current_session = '".$to_user_id."'
|
||||||
|
WHERE userid = '".$from_user_id."'";
|
||||||
|
mysqli_query($this->dbConnect, $sqlUserUpdate);
|
||||||
|
$data = array(
|
||||||
|
"userSection" => $userSection,
|
||||||
|
"conversation" => $conversation
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
public function getUnreadMessageCount($senderUserid, $recieverUserid) {
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT * FROM ".$this->chatTable."
|
||||||
|
WHERE sender_userid = '$senderUserid' AND reciever_userid = '$recieverUserid' AND status = '1'";
|
||||||
|
$numRows = $this->getNumRows($sqlQuery);
|
||||||
|
$output = '';
|
||||||
|
if($numRows > 0){
|
||||||
|
$output = $numRows;
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
public function updateTypingStatus($is_type, $loginDetailsId) {
|
||||||
|
$sqlUpdate = "
|
||||||
|
UPDATE ".$this->chatLoginDetailsTable."
|
||||||
|
SET is_typing = '".$is_type."'
|
||||||
|
WHERE id = '".$loginDetailsId."'";
|
||||||
|
mysqli_query($this->dbConnect, $sqlUpdate);
|
||||||
|
}
|
||||||
|
public function fetchIsTypeStatus($userId){
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT is_typing FROM ".$this->chatLoginDetailsTable."
|
||||||
|
WHERE userid = '".$userId."' ORDER BY last_activity DESC LIMIT 1";
|
||||||
|
$result = $this->getData($sqlQuery);
|
||||||
|
$output = '';
|
||||||
|
foreach($result as $row) {
|
||||||
|
if($row["is_typing"] == 'yes'){
|
||||||
|
$output = ' - <small><em>Typing...</em></small>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
public function insertUserLoginDetails($userId) {
|
||||||
|
$sqlInsert = "
|
||||||
|
INSERT INTO ".$this->chatLoginDetailsTable."(userid)
|
||||||
|
VALUES ('".$userId."')";
|
||||||
|
mysqli_query($this->dbConnect, $sqlInsert);
|
||||||
|
$lastInsertId = mysqli_insert_id($this->dbConnect);
|
||||||
|
return $lastInsertId;
|
||||||
|
}
|
||||||
|
public function updateLastActivity($loginDetailsId) {
|
||||||
|
$sqlUpdate = "
|
||||||
|
UPDATE ".$this->chatLoginDetailsTable."
|
||||||
|
SET last_activity = now()
|
||||||
|
WHERE id = '".$loginDetailsId."'";
|
||||||
|
mysqli_query($this->dbConnect, $sqlUpdate);
|
||||||
|
}
|
||||||
|
public function getUserLastActivity($userId) {
|
||||||
|
$sqlQuery = "
|
||||||
|
SELECT last_activity FROM ".$this->chatLoginDetailsTable."
|
||||||
|
WHERE userid = '$userId' ORDER BY last_activity DESC LIMIT 1";
|
||||||
|
$result = $this->getData($sqlQuery);
|
||||||
|
foreach($result as $row) {
|
||||||
|
return $row['last_activity'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
13
phpchet/public_html/ReadMe.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Running Server :
|
||||||
|
|
||||||
|
1. Change host address in index.php and server.php
|
||||||
|
|
||||||
|
2. Go to your shell command-line interface
|
||||||
|
|
||||||
|
3. type:
|
||||||
|
php -q c:\path\server.php
|
||||||
|
|
||||||
|
4. Using browser, navigate to index.php location to open chat page, have fun!
|
||||||
|
|
||||||
|
@Tutorial : http://www.sanwebe.com/2013/05/chat-using-websocket-php-socket
|
||||||
|
@License : http://opensource.org/licenses/MIT
|
||||||
42
phpchet/public_html/chat_action.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
include ('Chat.php');
|
||||||
|
$chat = new Chat();
|
||||||
|
if($_POST['action'] == 'update_user_list') {
|
||||||
|
$chatUsers = $chat->chatUsers($_SESSION['userid']);
|
||||||
|
$data = array(
|
||||||
|
"profileHTML" => $chatUsers,
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'insert_chat') {
|
||||||
|
$chat->insertChat($_POST['to_user_id'], $_SESSION['userid'], $_POST['chat_message']);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'show_chat') {
|
||||||
|
$chat->showUserChat($_SESSION['userid'], $_POST['to_user_id']);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'update_user_chat') {
|
||||||
|
$conversation = $chat->getUserChat($_SESSION['userid'], $_POST['to_user_id']);
|
||||||
|
$data = array(
|
||||||
|
"conversation" => $conversation
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'update_unread_message') {
|
||||||
|
$count = $chat->getUnreadMessageCount($_POST['to_user_id'], $_SESSION['userid']);
|
||||||
|
$data = array(
|
||||||
|
"count" => $count
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'update_typing_status') {
|
||||||
|
$chat->updateTypingStatus($_POST["is_type"], $_SESSION["login_details_id"]);
|
||||||
|
}
|
||||||
|
if($_POST['action'] == 'show_typing_status') {
|
||||||
|
$message = $chat->fetchIsTypeStatus($_POST['to_user_id']);
|
||||||
|
$data = array(
|
||||||
|
"message" => $message
|
||||||
|
);
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
?>
|
||||||
26
phpchet/public_html/container.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
</head>
|
||||||
|
<body class="">
|
||||||
|
<div role="navigation" class="navbar navbar-default navbar-static-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button data-target=".navbar-collapse" data-toggle="collapse" class="navbar-toggle" type="button">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a href="http://www.phpzag.com" class="navbar-brand">ONE.SYYE.NET</a>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="navbar-collapse collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="active"><a href="http://www.phpzag.com">Home</a></li>
|
||||||
|
|
||||||
|
</ul>-->
|
||||||
|
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container" style="min-height:500px;">
|
||||||
|
<div class=''>
|
||||||
|
</div>
|
||||||
725
phpchet/public_html/css/style.css
Normal file
@ -0,0 +1,725 @@
|
|||||||
|
.chat {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: #c8e8d6;
|
||||||
|
font-family: "proxima-nova", "Source Sans Pro", sans-serif;
|
||||||
|
/*font-size: 1em;*/
|
||||||
|
letter-spacing: 0.1px;
|
||||||
|
color: #32465a;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
#frame {
|
||||||
|
width: 95%;
|
||||||
|
min-width: 360px;
|
||||||
|
max-width: 1000px;
|
||||||
|
height: 92vh;
|
||||||
|
min-height: 300px;
|
||||||
|
max-height: 720px;
|
||||||
|
background: #E6EAEA;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 360px) {
|
||||||
|
#frame {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel {
|
||||||
|
float: left;
|
||||||
|
min-width: 280px;
|
||||||
|
max-width: 340px;
|
||||||
|
width: 40%;
|
||||||
|
height: 100%;
|
||||||
|
background: #2c3e50;
|
||||||
|
color: #f5f5f5;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel {
|
||||||
|
width: 58px;
|
||||||
|
min-width: 58px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile {
|
||||||
|
width: 80%;
|
||||||
|
margin: 25px auto;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 5px 0 0 0;
|
||||||
|
background: #32465a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile.expanded .wrap {
|
||||||
|
height: 210px;
|
||||||
|
line-height: initial;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile.expanded .wrap p {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile.expanded .wrap i.expand-button {
|
||||||
|
-moz-transform: scaleY(-1);
|
||||||
|
-o-transform: scaleY(-1);
|
||||||
|
-webkit-transform: scaleY(-1);
|
||||||
|
transform: scaleY(-1);
|
||||||
|
filter: FlipH;
|
||||||
|
-ms-filter: "FlipH";
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap {
|
||||||
|
height: 60px;
|
||||||
|
line-height: 60px;
|
||||||
|
overflow: hidden;
|
||||||
|
-moz-transition: 0.3s height ease;
|
||||||
|
-o-transition: 0.3s height ease;
|
||||||
|
-webkit-transition: 0.3s height ease;
|
||||||
|
transition: 0.3s height ease;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap {
|
||||||
|
height: 55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap img {
|
||||||
|
width: 50px;
|
||||||
|
border-radius: 50%;
|
||||||
|
padding: 3px;
|
||||||
|
border: 2px solid #e74c3c;
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
cursor: pointer;
|
||||||
|
-moz-transition: 0.3s border ease;
|
||||||
|
-o-transition: 0.3s border ease;
|
||||||
|
-webkit-transition: 0.3s border ease;
|
||||||
|
transition: 0.3s border ease;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap img {
|
||||||
|
width: 40px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap img.online {
|
||||||
|
border: 2px solid #2ecc71;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap img.away {
|
||||||
|
border: 2px solid #f1c40f;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap img.busy {
|
||||||
|
border: 2px solid #e74c3c;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap img.offline {
|
||||||
|
border: 2px solid #95a5a6;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap p {
|
||||||
|
float: left;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap p {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap i.expand-button {
|
||||||
|
float: right;
|
||||||
|
margin-top: 23px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #435f7a;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap i.expand-button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
width: 150px;
|
||||||
|
margin: 70px 0 0 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
z-index: 99;
|
||||||
|
line-height: initial;
|
||||||
|
background: #435f7a;
|
||||||
|
-moz-transition: 0.3s all ease;
|
||||||
|
-o-transition: 0.3s all ease;
|
||||||
|
-webkit-transition: 0.3s all ease;
|
||||||
|
transition: 0.3s all ease;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options {
|
||||||
|
width: 58px;
|
||||||
|
margin-top: 57px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options.active {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
margin: 75px 0 0 0;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options.active {
|
||||||
|
margin-top: 62px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options:before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 8px solid #435f7a;
|
||||||
|
margin: -8px 0 0 24px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options:before {
|
||||||
|
margin-left: 23px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul {
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li {
|
||||||
|
padding: 15px 0 30px 18px;
|
||||||
|
display: block;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li {
|
||||||
|
padding: 15px 0 35px 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li:hover {
|
||||||
|
background: #496886;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li span.status-circle {
|
||||||
|
position: absolute;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li span.status-circle {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li span.status-circle:before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
margin: -3px 0 0 -3px;
|
||||||
|
background: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li span.status-circle:before {
|
||||||
|
height: 18px;
|
||||||
|
width: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li p {
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li p {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-online span.status-circle {
|
||||||
|
background: #2ecc71;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-online.active span.status-circle:before {
|
||||||
|
border: 1px solid #2ecc71;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-away span.status-circle {
|
||||||
|
background: #f1c40f;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-away.active span.status-circle:before {
|
||||||
|
border: 1px solid #f1c40f;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-busy span.status-circle {
|
||||||
|
background: #e74c3c;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-busy.active span.status-circle:before {
|
||||||
|
border: 1px solid #e74c3c;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-offline span.status-circle {
|
||||||
|
background: #95a5a6;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #status-options ul li#status-offline.active span.status-circle:before {
|
||||||
|
border: 1px solid #95a5a6;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #expanded {
|
||||||
|
padding: 100px 0 0 0;
|
||||||
|
display: block;
|
||||||
|
line-height: initial !important;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #expanded label {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
margin: 0 8px 5px 0;
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #expanded input {
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
background: #32465a;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #f5f5f5;
|
||||||
|
padding: 7px;
|
||||||
|
width: calc(100% - 43px);
|
||||||
|
}
|
||||||
|
#frame #sidepanel #profile .wrap #expanded input:focus {
|
||||||
|
outline: none;
|
||||||
|
background: #435f7a;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search {
|
||||||
|
border-top: 1px solid #32465a;
|
||||||
|
border-bottom: 1px solid #32465a;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #search {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search label {
|
||||||
|
position: absolute;
|
||||||
|
margin: 10px 0 0 20px;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input {
|
||||||
|
font-family: "proxima-nova", "Source Sans Pro", sans-serif;
|
||||||
|
padding: 10px 0 10px 46px;
|
||||||
|
width: calc(100% - 25px);
|
||||||
|
border: none;
|
||||||
|
background: #32465a;
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input:focus {
|
||||||
|
outline: none;
|
||||||
|
background: #435f7a;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input::-webkit-input-placeholder {
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input::-moz-placeholder {
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input:-ms-input-placeholder {
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #search input:-moz-placeholder {
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts {
|
||||||
|
height: calc(100% - 177px);
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #contacts {
|
||||||
|
height: calc(100% - 149px);
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts.expanded {
|
||||||
|
height: calc(100% - 334px);
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
background: #2c3e50;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #243140;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact {
|
||||||
|
position: relative;
|
||||||
|
padding: 10px 0 15px 0;
|
||||||
|
font-size: 0.9em;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #contacts ul li.contact {
|
||||||
|
padding: 6px 0 46px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact:hover {
|
||||||
|
background: #32465a;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact.active {
|
||||||
|
background: #32465a;
|
||||||
|
border-right: 5px solid #435f7a;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact.active span.contact-status {
|
||||||
|
border: 2px solid #32465a !important;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap {
|
||||||
|
width: 88%;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap span {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
margin: -2px 0 0 -2px;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 2px solid #2c3e50;
|
||||||
|
background: #95a5a6;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap span.online {
|
||||||
|
background: #2ecc71;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap span.away {
|
||||||
|
background: #f1c40f;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap span.busy {
|
||||||
|
background: #e74c3c;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap span.unread {
|
||||||
|
background:red;
|
||||||
|
position: relative;
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap img {
|
||||||
|
width: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
float: left;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap img {
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap .meta {
|
||||||
|
padding: 5px 0 0 0;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap .meta {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap .meta .name {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap .meta .preview {
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
padding: 0 0 1px;
|
||||||
|
font-weight: 400;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-moz-transition: 1s all ease;
|
||||||
|
-o-transition: 1s all ease;
|
||||||
|
-webkit-transition: 1s all ease;
|
||||||
|
transition: 1s all ease;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #contacts ul li.contact .wrap .meta .preview span {
|
||||||
|
position: initial;
|
||||||
|
border-radius: initial;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 0 2px 0 0;
|
||||||
|
margin: 0 0 0 1px;
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar button {
|
||||||
|
float: left;
|
||||||
|
border: none;
|
||||||
|
width: 50%;
|
||||||
|
padding: 10px 0;
|
||||||
|
background: #32465a;
|
||||||
|
color: #f5f5f5;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-family: "proxima-nova", "Source Sans Pro", sans-serif;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #bottom-bar button {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
padding: 15px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar button:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar button:nth-child(1) {
|
||||||
|
border-right: 1px solid #2c3e50;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #bottom-bar button:nth-child(1) {
|
||||||
|
border-right: none;
|
||||||
|
border-bottom: 1px solid #2c3e50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar button:hover {
|
||||||
|
background: #435f7a;
|
||||||
|
}
|
||||||
|
#frame #sidepanel #bottom-bar button i {
|
||||||
|
margin-right: 3px;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #bottom-bar button i {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame #sidepanel #bottom-bar button span {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content {
|
||||||
|
float: right;
|
||||||
|
width: 60%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame .content {
|
||||||
|
width: calc(100% - 58px);
|
||||||
|
min-width: 300px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 900px) {
|
||||||
|
#frame .content {
|
||||||
|
width: calc(100% - 340px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
line-height: 60px;
|
||||||
|
background: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile img {
|
||||||
|
width: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
float: left;
|
||||||
|
margin: 9px 12px 0 9px;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile p {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile .social-media {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile .social-media i {
|
||||||
|
margin-left: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile .social-media i:nth-last-child(1) {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
#frame .content .contact-profile .social-media i:hover {
|
||||||
|
color: #435f7a;
|
||||||
|
}
|
||||||
|
#frame .content .messages {
|
||||||
|
height: auto;
|
||||||
|
min-height: calc(100% - 93px);
|
||||||
|
max-height: calc(100% - 93px);
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame .content .messages {
|
||||||
|
max-height: calc(100% - 105px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .messages::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
#frame .content .messages::-webkit-scrollbar-thumb {
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li {
|
||||||
|
display: inline-block;
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
margin: 15px 15px 5px 15px;
|
||||||
|
width: calc(100% - 25px);
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li:nth-last-child(1) {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li.sent img {
|
||||||
|
margin: 6px 8px 0 0;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li.sent p {
|
||||||
|
background: #435f7a;
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li.replies img {
|
||||||
|
float: right;
|
||||||
|
margin: 6px 0 0 8px;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li.replies p {
|
||||||
|
background: #f5f5f5;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li img {
|
||||||
|
width: 22px;
|
||||||
|
border-radius: 50%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
#frame .content .messages ul li p {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 10px 15px;
|
||||||
|
border-radius: 20px;
|
||||||
|
max-width: 205px;
|
||||||
|
line-height: 130%;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 735px) {
|
||||||
|
#frame .content .messages ul li p {
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .message-input {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap input {
|
||||||
|
font-family: "proxima-nova", "Source Sans Pro", sans-serif;
|
||||||
|
float: left;
|
||||||
|
border: none;
|
||||||
|
width: calc(100% - 90px);
|
||||||
|
padding: 11px 32px 10px 8px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
color: #32465a;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame .content .message-input .wrap input {
|
||||||
|
padding: 15px 32px 16px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap .attachment {
|
||||||
|
position: absolute;
|
||||||
|
right: 60px;
|
||||||
|
z-index: 4;
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
color: #435f7a;
|
||||||
|
opacity: .5;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame .content .message-input .wrap .attachment {
|
||||||
|
margin-top: 17px;
|
||||||
|
right: 65px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap .attachment:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap button {
|
||||||
|
float: right;
|
||||||
|
border: none;
|
||||||
|
width: 50px;
|
||||||
|
padding: 12px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #32465a;
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 735px) {
|
||||||
|
#frame .content .message-input .wrap button {
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap button:hover {
|
||||||
|
background: #435f7a;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap button:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
ol, ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.fa {
|
||||||
|
display: inline-block;
|
||||||
|
text-rendering: auto;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
font: normal normal normal normal normal normal normal 1 FontAwesome;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap .attachment {
|
||||||
|
position: absolute;
|
||||||
|
right: 60px;
|
||||||
|
z-index: 4;
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
color: #435f7a;
|
||||||
|
opacity: .5;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#frame .content .message-input .wrap button {
|
||||||
|
float: right;
|
||||||
|
border: none;
|
||||||
|
width: 50px;
|
||||||
|
padding: 12px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #32465a;
|
||||||
|
color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.isTyping {
|
||||||
|
font-size:12px;
|
||||||
|
}
|
||||||
|
.badge-notify {
|
||||||
|
background: red;
|
||||||
|
position: relative;
|
||||||
|
top: -20px;
|
||||||
|
left: -35px;
|
||||||
|
}
|
||||||
|
.badge {
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 10px;
|
||||||
|
padding: 3px 7px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #fff;
|
||||||
|
line-height: 1;
|
||||||
|
vertical-align: baseline;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #999;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
73
phpchet/public_html/database.sql
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
--
|
||||||
|
-- Table structure for table `chat_users`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `chat_users` (
|
||||||
|
`userid` int(11) NOT NULL,
|
||||||
|
`username` varchar(255) NOT NULL,
|
||||||
|
`password` varchar(255) NOT NULL,
|
||||||
|
`avatar` varchar(255) NOT NULL,
|
||||||
|
`current_session` int(11) NOT NULL,
|
||||||
|
`online` int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `chat_users`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `chat_users` (`userid`, `username`, `password`, `avatar`, `current_session`, `online`) VALUES
|
||||||
|
(1, '이성노', '761127', 'user1.jpg', 3, 1),
|
||||||
|
(2, '이윤영', '820316', 'user2.jpg', 1, 0),
|
||||||
|
(3, '이윤서', '081111', 'user3.jpg', 1, 1),
|
||||||
|
(4, '이은지', '010127', 'user4.jpg', 0, 0),
|
||||||
|
(5, 'katrina', '123', 'user5.jpg', 0, 0),
|
||||||
|
(6, 'Rhodes', '123', 'user6.jpg', 0, 0);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `chat_users`
|
||||||
|
--
|
||||||
|
ALTER TABLE `chat_users`
|
||||||
|
ADD PRIMARY KEY (`userid`);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `chat`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `chat` (
|
||||||
|
`chatid` int(11) NOT NULL,
|
||||||
|
`sender_userid` int(11) NOT NULL,
|
||||||
|
`reciever_userid` int(11) NOT NULL,
|
||||||
|
`message` text NOT NULL,
|
||||||
|
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`status` int(1) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `chat`
|
||||||
|
--
|
||||||
|
ALTER TABLE `chat`
|
||||||
|
ADD PRIMARY KEY (`chatid`);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `chat_login_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `chat_login_details` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`userid` int(11) NOT NULL,
|
||||||
|
`last_activity` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`is_typing` enum('no','yes') NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `chat_login_details`
|
||||||
|
--
|
||||||
|
ALTER TABLE `chat_login_details`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
|
||||||
6
phpchet/public_html/footer.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<div class="insert-post-ads1" style="margin-top:20px;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body></html>
|
||||||
|
|
||||||
9
phpchet/public_html/header.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||||
|
<!-- jQuery -->
|
||||||
131
phpchet/public_html/index.php
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
<?php
|
||||||
|
error_reporting( E_ALL );
|
||||||
|
ini_set( "display_errors", 1 );
|
||||||
|
?>
|
||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
include('./header.php');
|
||||||
|
?>
|
||||||
|
<title></title>
|
||||||
|
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.2/css/font-awesome.min.css'>
|
||||||
|
<link href="css/style.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="js/chat.js"></script>
|
||||||
|
<style>
|
||||||
|
.modal-dialog {
|
||||||
|
width: 400px;
|
||||||
|
margin: 30px auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<?php include('container.php'); var_dump($_SESSION);?>
|
||||||
|
<div class="container">
|
||||||
|
<br>
|
||||||
|
<?php if(isset($_SESSION['userid']) && $_SESSION['userid']) { ?>
|
||||||
|
<div class="chat">
|
||||||
|
<div id="frame">
|
||||||
|
<div id="sidepanel">
|
||||||
|
<div id="profile">
|
||||||
|
<?php
|
||||||
|
include ('Chat.php');
|
||||||
|
$chat = new Chat();
|
||||||
|
$loggedUser = $chat->getUserDetails($_SESSION['userid']);
|
||||||
|
echo '<div class="wrap">';
|
||||||
|
$currentSession = '';
|
||||||
|
foreach ($loggedUser as $user) {
|
||||||
|
$currentSession = $user['current_session'];
|
||||||
|
echo '<img id="profile-img" src="userpics/'.$user['avatar'].'" class="online" alt="" />';
|
||||||
|
echo '<p>'.$user['username'].'</p>';
|
||||||
|
echo '<i class="fa fa-chevron-down expand-button" aria-hidden="true"></i>';
|
||||||
|
echo '<div id="status-options">';
|
||||||
|
echo '<ul>';
|
||||||
|
echo '<li id="status-online" class="active"><span class="status-circle"></span> <p>Online</p></li>';
|
||||||
|
echo '<li id="status-away"><span class="status-circle"></span> <p>Away</p></li>';
|
||||||
|
echo '<li id="status-busy"><span class="status-circle"></span> <p>Busy</p></li>';
|
||||||
|
echo '<li id="status-offline"><span class="status-circle"></span> <p>Offline</p></li>';
|
||||||
|
echo '</ul>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '<div id="expanded">';
|
||||||
|
echo '<a href="logout.php">Logout</a>';
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
echo '</div>';
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div id="search">
|
||||||
|
<label for=""><i class="fa fa-search" aria-hidden="true"></i></label>
|
||||||
|
<input type="text" placeholder="Search contacts..." />
|
||||||
|
</div>
|
||||||
|
<div id="contacts">
|
||||||
|
<?php
|
||||||
|
echo '<ul>';
|
||||||
|
$chatUsers = $chat->chatUsers($_SESSION['userid']);
|
||||||
|
foreach ($chatUsers as $user) {
|
||||||
|
$status = 'offline';
|
||||||
|
if($user['online']) {
|
||||||
|
$status = 'online';
|
||||||
|
}
|
||||||
|
$activeUser = '';
|
||||||
|
if($user['userid'] == $currentSession) {
|
||||||
|
$activeUser = "active";
|
||||||
|
}
|
||||||
|
echo '<li id="'.$user['userid'].'" class="contact '.$activeUser.'" data-touserid="'.$user['userid'].'" data-tousername="'.$user['username'].'">';
|
||||||
|
echo '<div class="wrap">';
|
||||||
|
echo '<span id="status_'.$user['userid'].'" class="contact-status '.$status.'"></span>';
|
||||||
|
echo '<img src="userpics/'.$user['avatar'].'" alt="" />';
|
||||||
|
echo '<div class="meta">';
|
||||||
|
echo '<p class="name">'.$user['username'].'<span id="unread_'.$user['userid'].'" class="unread">'.$chat->getUnreadMessageCount($user['userid'], $_SESSION['userid']).'</span></p>';
|
||||||
|
echo '<p class="preview"><span id="isTyping_'.$user['userid'].'" class="isTyping"></span></p>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</li>';
|
||||||
|
}
|
||||||
|
echo '</ul>';
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div id="bottom-bar">
|
||||||
|
<button id="addcontact"><i class="fa fa-user-plus fa-fw" aria-hidden="true"></i> <span>Add contact</span></button>
|
||||||
|
<button id="settings"><i class="fa fa-cog fa-fw" aria-hidden="true"></i> <span>Settings</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content" id="content">
|
||||||
|
<div class="contact-profile" id="userSection">
|
||||||
|
<?php
|
||||||
|
$userDetails = $chat->getUserDetails($currentSession);
|
||||||
|
foreach ($userDetails as $user) {
|
||||||
|
echo '<img src="userpics/'.$user['avatar'].'" alt="" />';
|
||||||
|
echo '<p>'.$user['username'].'</p>';
|
||||||
|
echo '<div class="social-media">';
|
||||||
|
echo '<i class="fa fa-facebook" aria-hidden="true"></i>';
|
||||||
|
echo '<i class="fa fa-twitter" aria-hidden="true"></i>';
|
||||||
|
echo '<i class="fa fa-instagram" aria-hidden="true"></i>';
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div class="messages" id="conversation">
|
||||||
|
<?php
|
||||||
|
echo $chat->getUserChat($_SESSION['userid'], $currentSession);
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div class="message-input" id="replySection">
|
||||||
|
<div class="message-input" id="replyContainer">
|
||||||
|
<div class="wrap">
|
||||||
|
<input type="text" class="chatMessage" id="chatMessage<?php echo $currentSession; ?>" placeholder="Write your message..." />
|
||||||
|
<button class="submit chatButton" id="chatButton<?php echo $currentSession; ?>"><i class="fa fa-paper-plane" aria-hidden="true"></i></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php } else { echo("<script>location.replace('login.php');</script>"); ?>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<strong><a href="login.php"><h3>Login To Access Chat System</h3></a></strong>
|
||||||
|
<?php } ?>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<div style="margin:50px 0px 0px 0px;">
|
||||||
|
<a class="btn btn-default read-more" style="background:#3399ff;color:white" href="http://www.phpzag.com/build-live-chat-system-with-ajax-php-mysql/">Back to Tutorial</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php include('./footer.php');?>
|
||||||
171
phpchet/public_html/js/chat.js
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
$(document).ready(function(){
|
||||||
|
setInterval(function(){
|
||||||
|
updateUserList();
|
||||||
|
updateUnreadMessageCount();
|
||||||
|
}, 60000);
|
||||||
|
setInterval(function(){
|
||||||
|
showTypingStatus();
|
||||||
|
updateUserChat();
|
||||||
|
}, 5000);
|
||||||
|
$(".messages").animate({
|
||||||
|
scrollTop: $(document).height()
|
||||||
|
}, "fast");
|
||||||
|
$(document).on("click", '#profile-img', function(event) {
|
||||||
|
$("#status-options").toggleClass("active");
|
||||||
|
});
|
||||||
|
$(document).on("click", '.expand-button', function(event) {
|
||||||
|
$("#profile").toggleClass("expanded");
|
||||||
|
$("#contacts").toggleClass("expanded");
|
||||||
|
});
|
||||||
|
$(document).on("click", '#status-options ul li', function(event) {
|
||||||
|
$("#profile-img").removeClass();
|
||||||
|
$("#status-online").removeClass("active");
|
||||||
|
$("#status-away").removeClass("active");
|
||||||
|
$("#status-busy").removeClass("active");
|
||||||
|
$("#status-offline").removeClass("active");
|
||||||
|
$(this).addClass("active");
|
||||||
|
if($("#status-online").hasClass("active")) {
|
||||||
|
$("#profile-img").addClass("online");
|
||||||
|
} else if ($("#status-away").hasClass("active")) {
|
||||||
|
$("#profile-img").addClass("away");
|
||||||
|
} else if ($("#status-busy").hasClass("active")) {
|
||||||
|
$("#profile-img").addClass("busy");
|
||||||
|
} else if ($("#status-offline").hasClass("active")) {
|
||||||
|
$("#profile-img").addClass("offline");
|
||||||
|
} else {
|
||||||
|
$("#profile-img").removeClass();
|
||||||
|
};
|
||||||
|
$("#status-options").removeClass("active");
|
||||||
|
});
|
||||||
|
$(document).on('click', '.contact', function(){
|
||||||
|
$('.contact').removeClass('active');
|
||||||
|
$(this).addClass('active');
|
||||||
|
var to_user_id = $(this).data('touserid');
|
||||||
|
showUserChat(to_user_id);
|
||||||
|
$(".chatMessage").attr('id', 'chatMessage'+to_user_id);
|
||||||
|
$(".chatButton").attr('id', 'chatButton'+to_user_id);
|
||||||
|
});
|
||||||
|
$(document).on("click", '.submit', function(event) {
|
||||||
|
var to_user_id = $(this).attr('id');
|
||||||
|
to_user_id = to_user_id.replace(/chatButton/g, "");
|
||||||
|
sendMessage(to_user_id);
|
||||||
|
});
|
||||||
|
$(document).on('focus', '.message-input', function(){
|
||||||
|
var is_type = 'yes';
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{is_type:is_type, action:'update_typing_status'},
|
||||||
|
success:function(){
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$(document).on('blur', '.message-input', function(){
|
||||||
|
var is_type = 'no';
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{is_type:is_type, action:'update_typing_status'},
|
||||||
|
success:function() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
function updateUserList() {
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
dataType: "json",
|
||||||
|
data:{action:'update_user_list'},
|
||||||
|
success:function(response){
|
||||||
|
var obj = response.profileHTML;
|
||||||
|
Object.keys(obj).forEach(function(key) {
|
||||||
|
// update user online/offline status
|
||||||
|
if($("#"+obj[key].userid).length) {
|
||||||
|
if(obj[key].online == 1 && !$("#status_"+obj[key].userid).hasClass('online')) {
|
||||||
|
$("#status_"+obj[key].userid).addClass('online');
|
||||||
|
} else if(obj[key].online == 0){
|
||||||
|
$("#status_"+obj[key].userid).removeClass('online');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function sendMessage(to_user_id) {
|
||||||
|
message = $(".message-input input").val();
|
||||||
|
$('.message-input input').val('');
|
||||||
|
if($.trim(message) == '') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{to_user_id:to_user_id, chat_message:message, action:'insert_chat'},
|
||||||
|
dataType: "json",
|
||||||
|
success:function(response) {
|
||||||
|
var resp = $.parseJSON(response);
|
||||||
|
$('#conversation').html(resp.conversation);
|
||||||
|
$(".messages").animate({ scrollTop: $('.messages').height() }, "fast");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function showUserChat(to_user_id){
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{to_user_id:to_user_id, action:'show_chat'},
|
||||||
|
dataType: "json",
|
||||||
|
success:function(response){
|
||||||
|
$('#userSection').html(response.userSection);
|
||||||
|
$('#conversation').html(response.conversation);
|
||||||
|
$('#unread_'+to_user_id).html('');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function updateUserChat() {
|
||||||
|
$('li.contact.active').each(function(){
|
||||||
|
var to_user_id = $(this).attr('data-touserid');
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{to_user_id:to_user_id, action:'update_user_chat'},
|
||||||
|
dataType: "json",
|
||||||
|
success:function(response){
|
||||||
|
$('#conversation').html(response.conversation);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function updateUnreadMessageCount() {
|
||||||
|
$('li.contact').each(function(){
|
||||||
|
if(!$(this).hasClass('active')) {
|
||||||
|
var to_user_id = $(this).attr('data-touserid');
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{to_user_id:to_user_id, action:'update_unread_message'},
|
||||||
|
dataType: "json",
|
||||||
|
success:function(response){
|
||||||
|
if(response.count) {
|
||||||
|
$('#unread_'+to_user_id).html(response.count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function showTypingStatus() {
|
||||||
|
$('li.contact.active').each(function(){
|
||||||
|
var to_user_id = $(this).attr('data-touserid');
|
||||||
|
$.ajax({
|
||||||
|
url:"chat_action.php",
|
||||||
|
method:"POST",
|
||||||
|
data:{to_user_id:to_user_id, action:'show_typing_status'},
|
||||||
|
dataType: "json",
|
||||||
|
success:function(response){
|
||||||
|
$('#isTyping_'+to_user_id).html(response.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
66
phpchet/public_html/login.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
error_reporting( 1 );
|
||||||
|
ini_set( "display_errors", 1 );
|
||||||
|
?>
|
||||||
|
<?php
|
||||||
|
SESSION_START();
|
||||||
|
include('./header.php');
|
||||||
|
$loginError = '';
|
||||||
|
if (!empty($_POST['username']) && !empty($_POST['pwd'])) {
|
||||||
|
include ('Chat.php');
|
||||||
|
$chat = new Chat();
|
||||||
|
$user = $chat->loginUsers($_POST['username'], $_POST['pwd']);
|
||||||
|
|
||||||
|
//var_Dump($user);
|
||||||
|
|
||||||
|
if(!empty($user)) {
|
||||||
|
$_SESSION['username'] = $user[0]['username'];
|
||||||
|
$_SESSION['userid'] = $user[0]['userid'];
|
||||||
|
$chat->updateUserOnline($user[0]['userid'], 1);
|
||||||
|
$lastInsertId = $chat->insertUserLoginDetails($user[0]['userid']);
|
||||||
|
$_SESSION['login_details_id'] = $lastInsertId;
|
||||||
|
header("Location:index.php");
|
||||||
|
} else {
|
||||||
|
$loginError = "Invalid username or password!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<title>Home</title>
|
||||||
|
<?php include('./container.php');?>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h4>Chat Login:</h4>
|
||||||
|
<form method="post">
|
||||||
|
<div class="form-group">
|
||||||
|
<?php if ($loginError ) { ?>
|
||||||
|
<div class="alert alert-warning"><?php echo $loginError; ?></div>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="username">User:</label>
|
||||||
|
<select type="username" class="form-control input-lg" name="username" required>
|
||||||
|
<option value="1">이성노</option>>
|
||||||
|
<option value="2">이윤영</option>>
|
||||||
|
<option value="3">이윤서</option>>
|
||||||
|
<option value="4">이은지</option>>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="pwd">Password:</label>
|
||||||
|
<input type="password" class="form-control input-lg" name="pwd" required>
|
||||||
|
</div>
|
||||||
|
<button type="submit" name="login" class="btn btn-info btn-lg">Login</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php include('./footer.php');?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
16
phpchet/public_html/logout.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
SESSION_START();
|
||||||
|
include ('Chat.php');
|
||||||
|
$chat = new Chat();
|
||||||
|
$chat->updateUserOnline($_SESSION['userid'], 0);
|
||||||
|
$_SESSION['username'] = "";
|
||||||
|
$_SESSION['userid'] = "";
|
||||||
|
$_SESSION['login_details_id']= "";
|
||||||
|
header("Location:index.php");
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2
phpchet/public_html/phpinfo.php
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
phpinfo();
|
||||||
150
phpchet/public_html/server.php
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<?php
|
||||||
|
$host = 'localhost'; //host
|
||||||
|
$port = '9000'; //port
|
||||||
|
$null = NULL; //null var
|
||||||
|
|
||||||
|
//Create TCP/IP sream socket
|
||||||
|
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||||
|
//reuseable port
|
||||||
|
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
|
||||||
|
|
||||||
|
//bind socket to specified host
|
||||||
|
socket_bind($socket, 0, $port);
|
||||||
|
|
||||||
|
//listen to port
|
||||||
|
socket_listen($socket);
|
||||||
|
|
||||||
|
//create & add listning socket to the list
|
||||||
|
$clients = array($socket);
|
||||||
|
|
||||||
|
//start endless loop, so that our script doesn't stop
|
||||||
|
while (true) {
|
||||||
|
//manage multipal connections
|
||||||
|
$changed = $clients;
|
||||||
|
//returns the socket resources in $changed array
|
||||||
|
socket_select($changed, $null, $null, 0, 10);
|
||||||
|
|
||||||
|
//check for new socket
|
||||||
|
if (in_array($socket, $changed)) {
|
||||||
|
$socket_new = socket_accept($socket); //accpet new socket
|
||||||
|
$clients[] = $socket_new; //add socket to client array
|
||||||
|
|
||||||
|
$header = socket_read($socket_new, 1024); //read data sent by the socket
|
||||||
|
perform_handshaking($header, $socket_new, $host, $port); //perform websocket handshake
|
||||||
|
|
||||||
|
socket_getpeername($socket_new, $ip); //get ip address of connected socket
|
||||||
|
$response = mask(json_encode(array('type'=>'system', 'message'=>$ip.' connected'))); //prepare json data
|
||||||
|
send_message($response); //notify all users about new connection
|
||||||
|
|
||||||
|
//make room for new socket
|
||||||
|
$found_socket = array_search($socket, $changed);
|
||||||
|
unset($changed[$found_socket]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//loop through all connected sockets
|
||||||
|
foreach ($changed as $changed_socket) {
|
||||||
|
|
||||||
|
//check for any incomming data
|
||||||
|
while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
|
||||||
|
{
|
||||||
|
$received_text = unmask($buf); //unmask data
|
||||||
|
$tst_msg = json_decode($received_text, true); //json decode
|
||||||
|
$user_name = $tst_msg['name']; //sender name
|
||||||
|
$user_message = $tst_msg['message']; //message text
|
||||||
|
$user_color = $tst_msg['color']; //color
|
||||||
|
|
||||||
|
//prepare data to be sent to client
|
||||||
|
$response_text = mask(json_encode(array('type'=>'usermsg', 'name'=>$user_name, 'message'=>$user_message, 'color'=>$user_color)));
|
||||||
|
send_message($response_text); //send data
|
||||||
|
break 2; //exist this loop
|
||||||
|
}
|
||||||
|
|
||||||
|
$buf = @socket_read($changed_socket, 1024, PHP_NORMAL_READ);
|
||||||
|
if ($buf === false) { // check disconnected client
|
||||||
|
// remove client for $clients array
|
||||||
|
$found_socket = array_search($changed_socket, $clients);
|
||||||
|
socket_getpeername($changed_socket, $ip);
|
||||||
|
unset($clients[$found_socket]);
|
||||||
|
|
||||||
|
//notify all users about disconnected connection
|
||||||
|
$response = mask(json_encode(array('type'=>'system', 'message'=>$ip.' disconnected')));
|
||||||
|
send_message($response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// close the listening socket
|
||||||
|
socket_close($socket);
|
||||||
|
|
||||||
|
function send_message($msg)
|
||||||
|
{
|
||||||
|
global $clients;
|
||||||
|
foreach($clients as $changed_socket)
|
||||||
|
{
|
||||||
|
@socket_write($changed_socket,$msg,strlen($msg));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Unmask incoming framed message
|
||||||
|
function unmask($text) {
|
||||||
|
$length = ord($text[1]) & 127;
|
||||||
|
if($length == 126) {
|
||||||
|
$masks = substr($text, 4, 4);
|
||||||
|
$data = substr($text, 8);
|
||||||
|
}
|
||||||
|
elseif($length == 127) {
|
||||||
|
$masks = substr($text, 10, 4);
|
||||||
|
$data = substr($text, 14);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$masks = substr($text, 2, 4);
|
||||||
|
$data = substr($text, 6);
|
||||||
|
}
|
||||||
|
$text = "";
|
||||||
|
for ($i = 0; $i < strlen($data); ++$i) {
|
||||||
|
$text .= $data[$i] ^ $masks[$i%4];
|
||||||
|
}
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Encode message for transfer to client.
|
||||||
|
function mask($text)
|
||||||
|
{
|
||||||
|
$b1 = 0x80 | (0x1 & 0x0f);
|
||||||
|
$length = strlen($text);
|
||||||
|
|
||||||
|
if($length <= 125)
|
||||||
|
$header = pack('CC', $b1, $length);
|
||||||
|
elseif($length > 125 && $length < 65536)
|
||||||
|
$header = pack('CCn', $b1, 126, $length);
|
||||||
|
elseif($length >= 65536)
|
||||||
|
$header = pack('CCNN', $b1, 127, $length);
|
||||||
|
return $header.$text;
|
||||||
|
}
|
||||||
|
|
||||||
|
//handshake new client.
|
||||||
|
function perform_handshaking($receved_header,$client_conn, $host, $port)
|
||||||
|
{
|
||||||
|
$headers = array();
|
||||||
|
$lines = preg_split("/\r\n/", $receved_header);
|
||||||
|
foreach($lines as $line)
|
||||||
|
{
|
||||||
|
$line = chop($line);
|
||||||
|
if(preg_match('/\A(\S+): (.*)\z/', $line, $matches))
|
||||||
|
{
|
||||||
|
$headers[$matches[1]] = $matches[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$secKey = $headers['Sec-WebSocket-Key'];
|
||||||
|
$secAccept = base64_encode(pack('H*', sha1($secKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
|
||||||
|
//hand shaking header
|
||||||
|
$upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .
|
||||||
|
"Upgrade: websocket\r\n" .
|
||||||
|
"Connection: Upgrade\r\n" .
|
||||||
|
"WebSocket-Origin: $host\r\n" .
|
||||||
|
"WebSocket-Location: ws://$host:$port/demo/shout.php\r\n".
|
||||||
|
"Sec-WebSocket-Accept:$secAccept\r\n\r\n";
|
||||||
|
socket_write($client_conn,$upgrade,strlen($upgrade));
|
||||||
|
}
|
||||||
BIN
phpchet/public_html/userpics/user1.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
phpchet/public_html/userpics/user2.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
phpchet/public_html/userpics/user3.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
phpchet/public_html/userpics/user4.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
phpchet/public_html/userpics/user5.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
phpchet/public_html/userpics/user6.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |