Fixed
This commit is contained in:
parent
f57f3a2783
commit
e988091cbe
231
.idea/workspace.xml
generated
231
.idea/workspace.xml
generated
@ -2,14 +2,13 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="d703f139-38f3-455d-a086-a2da561870b5" name="Default Changelist" comment="">
|
<list default="true" id="d703f139-38f3-455d-a086-a2da561870b5" name="Default Changelist" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/change.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/branchmanager.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/info.py" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/sshtool.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/change.py" beforeDir="false" afterPath="$PROJECT_DIR$/change.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/git.py" beforeDir="false" afterPath="$PROJECT_DIR$/git.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/git.py" beforeDir="false" afterPath="$PROJECT_DIR$/git.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/keygen.py" beforeDir="false" afterPath="$PROJECT_DIR$/keygen.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/info.py" beforeDir="false" afterPath="$PROJECT_DIR$/info.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/window.py" beforeDir="false" afterPath="$PROJECT_DIR$/window.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/sshtool.py" beforeDir="false" afterPath="$PROJECT_DIR$/sshtool.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@ -18,10 +17,11 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="CoverageDataManager">
|
<component name="CoverageDataManager">
|
||||||
<SUITE FILE_PATH="coverage/giteasy$main.coverage" NAME="main Coverage Results" MODIFIED="1552383036027" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/giteasy$main.coverage" NAME="main Coverage Results" MODIFIED="1552453031291" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/giteasy$Debug.coverage" NAME="Debug Coverage Results" MODIFIED="1552305147101" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/giteasy$Debug.coverage" NAME="Debug Coverage Results" MODIFIED="1552305147101" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/giteasy$ssh.coverage" NAME="ssh Coverage Results" MODIFIED="1552191792390" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/giteasy$ssh.coverage" NAME="ssh Coverage Results" MODIFIED="1552191792390" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/giteasy$window.coverage" NAME="window Coverage Results" MODIFIED="1552378199288" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/giteasy$window.coverage" NAME="window Coverage Results" MODIFIED="1552378199288" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
|
<SUITE FILE_PATH="coverage/giteasy$branchmanager.coverage" NAME="branchmanager Coverage Results" MODIFIED="1552413252082" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
<SUITE FILE_PATH="coverage/giteasy$keygen.coverage" NAME="keygen Coverage Results" MODIFIED="1552305621065" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/giteasy$keygen.coverage" NAME="keygen Coverage Results" MODIFIED="1552305621065" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="DatabaseView">
|
<component name="DatabaseView">
|
||||||
@ -42,44 +42,44 @@
|
|||||||
<session id="46200952">
|
<session id="46200952">
|
||||||
<usages-collector id="statistics.lifecycle.project">
|
<usages-collector id="statistics.lifecycle.project">
|
||||||
<counts>
|
<counts>
|
||||||
|
<entry key="project.closed" value="1" />
|
||||||
<entry key="project.open.time.0" value="1" />
|
<entry key="project.open.time.0" value="1" />
|
||||||
<entry key="project.opened" value="1" />
|
<entry key="project.open.time.16" value="1" />
|
||||||
|
<entry key="project.opened" value="2" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
<usages-collector id="statistics.file.extensions.edit">
|
<usages-collector id="statistics.file.extensions.edit">
|
||||||
<counts>
|
<counts>
|
||||||
<entry key="py" value="8499" />
|
<entry key="py" value="11673" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
<usages-collector id="statistics.file.types.edit">
|
<usages-collector id="statistics.file.types.edit">
|
||||||
<counts>
|
<counts>
|
||||||
<entry key="Python" value="8499" />
|
<entry key="Python" value="11673" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
<usages-collector id="statistics.file.extensions.open">
|
<usages-collector id="statistics.file.extensions.open">
|
||||||
<counts>
|
<counts>
|
||||||
<entry key="py" value="6" />
|
<entry key="py" value="7" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
<usages-collector id="statistics.file.types.open">
|
<usages-collector id="statistics.file.types.open">
|
||||||
<counts>
|
<counts>
|
||||||
<entry key="Python" value="6" />
|
<entry key="Python" value="7" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
</session>
|
</session>
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/git.py">
|
<entry file="file://$PROJECT_DIR$/git.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="170">
|
<state relative-caret-position="285">
|
||||||
<caret line="157" column="47" lean-forward="true" selection-start-line="157" selection-start-column="47" selection-end-line="157" selection-end-column="47" />
|
<caret line="305" column="38" selection-start-line="305" selection-start-column="38" selection-end-line="305" selection-end-column="38" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#9#0" expanded="true" />
|
<element signature="e#0#9#0" expanded="true" />
|
||||||
<marker date="1552379614982" expanded="true" signature="3753:3944" ph="..." />
|
<marker date="1552453029448" expanded="true" signature="13269:13995" ph="..." />
|
||||||
<marker date="1552379614982" expanded="true" signature="9429:10463" ph="..." />
|
|
||||||
<marker date="1552379614982" expanded="true" signature="12571:12747" ph="..." />
|
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/ssh.py">
|
<entry file="file://$PROJECT_DIR$/ssh.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="199">
|
<state relative-caret-position="60">
|
||||||
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -98,7 +98,7 @@
|
|||||||
<entry file="file://$PROJECT_DIR$/keygen.py">
|
<entry file="file://$PROJECT_DIR$/keygen.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="120">
|
<state relative-caret-position="120">
|
||||||
<caret line="27" column="27" lean-forward="true" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
<caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#10#0" expanded="true" />
|
<element signature="e#0#10#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -109,7 +109,7 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/window.py">
|
<entry file="file://$PROJECT_DIR$/window.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="54">
|
<state relative-caret-position="45">
|
||||||
<caret line="7" column="15" selection-start-line="7" selection-start-column="8" selection-end-line="7" selection-end-column="15" />
|
<caret line="7" column="15" selection-start-line="7" selection-start-column="8" selection-end-line="7" selection-end-column="15" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
@ -118,14 +118,14 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="302">
|
<state relative-caret-position="194">
|
||||||
<caret line="66" column="25" selection-start-line="66" selection-start-column="25" selection-end-line="66" selection-end-column="25" />
|
<caret line="274" column="33" selection-start-line="274" selection-start-column="33" selection-end-line="274" selection-end-column="33" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
<marker date="1552383034754" expanded="true" signature="14292:14619" ph="..." />
|
<marker date="1552452986156" expanded="true" signature="15540:15546" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -134,8 +134,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/info.py">
|
<entry file="file://$PROJECT_DIR$/info.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="105">
|
<state relative-caret-position="120">
|
||||||
<caret line="7" column="32" lean-forward="true" selection-start-line="7" selection-start-column="32" selection-end-line="7" selection-end-column="32" />
|
<caret line="8" column="27" lean-forward="true" selection-start-line="8" selection-start-column="27" selection-end-line="8" selection-end-column="27" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -146,8 +146,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/change.py">
|
<entry file="file://$PROJECT_DIR$/change.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="161">
|
<state relative-caret-position="26">
|
||||||
<caret line="56" column="13" lean-forward="true" selection-start-line="56" selection-start-column="13" selection-end-line="56" selection-end-column="13" />
|
<caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -158,12 +158,30 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/sshtool.py">
|
<entry file="file://$PROJECT_DIR$/sshtool.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="301">
|
<state relative-caret-position="-331">
|
||||||
<caret line="46" column="40" lean-forward="true" selection-start-line="46" selection-start-column="40" selection-end-line="46" selection-end-column="40" />
|
<caret line="6" lean-forward="true" selection-start-line="6" selection-end-line="6" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
<marker date="1552382171651" expanded="true" signature="163:2035" ph="..." />
|
<marker date="1552409960112" expanded="true" signature="1144:1635" ph="..." />
|
||||||
<marker date="1552382171651" expanded="true" signature="1108:1599" ph="..." />
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/branchmanager.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="30">
|
||||||
|
<caret line="66" column="24" lean-forward="true" selection-start-line="66" selection-start-column="24" selection-end-line="66" selection-end-column="24" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="178:183" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="2638:3140" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3158:3361" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3378:3493" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3519:3983" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="4005:4694" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="5012:5663" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -182,6 +200,8 @@
|
|||||||
<findStrings>
|
<findStrings>
|
||||||
<find>self.remotes</find>
|
<find>self.remotes</find>
|
||||||
<find>save</find>
|
<find>save</find>
|
||||||
|
<find>do_save</find>
|
||||||
|
<find>print</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
@ -194,13 +214,14 @@
|
|||||||
<option value="$PROJECT_DIR$/venv/ssh.py" />
|
<option value="$PROJECT_DIR$/venv/ssh.py" />
|
||||||
<option value="$PROJECT_DIR$/ssh.py" />
|
<option value="$PROJECT_DIR$/ssh.py" />
|
||||||
<option value="$PROJECT_DIR$/server.py" />
|
<option value="$PROJECT_DIR$/server.py" />
|
||||||
<option value="$PROJECT_DIR$/info.py" />
|
|
||||||
<option value="$PROJECT_DIR$/git.py" />
|
|
||||||
<option value="$PROJECT_DIR$/window.py" />
|
<option value="$PROJECT_DIR$/window.py" />
|
||||||
<option value="$PROJECT_DIR$/keygen.py" />
|
<option value="$PROJECT_DIR$/keygen.py" />
|
||||||
<option value="$PROJECT_DIR$/sshtool.py" />
|
|
||||||
<option value="$PROJECT_DIR$/change.py" />
|
<option value="$PROJECT_DIR$/change.py" />
|
||||||
|
<option value="$PROJECT_DIR$/sshtool.py" />
|
||||||
|
<option value="$PROJECT_DIR$/info.py" />
|
||||||
|
<option value="$PROJECT_DIR$/branchmanager.py" />
|
||||||
<option value="$PROJECT_DIR$/main.py" />
|
<option value="$PROJECT_DIR$/main.py" />
|
||||||
|
<option value="$PROJECT_DIR$/git.py" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@ -220,7 +241,6 @@
|
|||||||
<foldersAlwaysOnTop value="true" />
|
<foldersAlwaysOnTop value="true" />
|
||||||
</navigator>
|
</navigator>
|
||||||
<panes>
|
<panes>
|
||||||
<pane id="Scope" />
|
|
||||||
<pane id="ProjectPane">
|
<pane id="ProjectPane">
|
||||||
<subPane>
|
<subPane>
|
||||||
<expand>
|
<expand>
|
||||||
@ -228,11 +248,6 @@
|
|||||||
<item name="giteasy" type="b2602c69:ProjectViewProjectNode" />
|
<item name="giteasy" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="giteasy" type="462c0819:PsiDirectoryNode" />
|
<item name="giteasy" type="462c0819:PsiDirectoryNode" />
|
||||||
</path>
|
</path>
|
||||||
<path>
|
|
||||||
<item name="giteasy" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="giteasy" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="bin" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
<path>
|
||||||
<item name="giteasy" type="b2602c69:ProjectViewProjectNode" />
|
<item name="giteasy" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
|
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
|
||||||
@ -241,6 +256,7 @@
|
|||||||
<select />
|
<select />
|
||||||
</subPane>
|
</subPane>
|
||||||
</pane>
|
</pane>
|
||||||
|
<pane id="Scope" />
|
||||||
</panes>
|
</panes>
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
@ -314,6 +330,28 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration name="branchmanager" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||||
|
<module name="giteasy" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="$PROJECT_DIR$/bin/python" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/branchmanager.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
<configuration name="keygen" type="PythonConfigurationType" factoryName="Python">
|
<configuration name="keygen" type="PythonConfigurationType" factoryName="Python">
|
||||||
<module name="giteasy" />
|
<module name="giteasy" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@ -385,10 +423,12 @@
|
|||||||
<item itemvalue="Python.keygen" />
|
<item itemvalue="Python.keygen" />
|
||||||
<item itemvalue="Python.window" />
|
<item itemvalue="Python.window" />
|
||||||
<item itemvalue="Python.main" />
|
<item itemvalue="Python.main" />
|
||||||
|
<item itemvalue="Python.branchmanager" />
|
||||||
</list>
|
</list>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.main" />
|
<item itemvalue="Python.main" />
|
||||||
|
<item itemvalue="Python.branchmanager" />
|
||||||
<item itemvalue="Python.window" />
|
<item itemvalue="Python.window" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
@ -419,28 +459,35 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1552328916410</updated>
|
<updated>1552328916410</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="3" />
|
<task id="LOCAL-00003" summary="Fixed and Added.">
|
||||||
|
<created>1552383089132</created>
|
||||||
|
<option name="number" value="00003" />
|
||||||
|
<option name="presentableId" value="LOCAL-00003" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1552383089132</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="4" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TimeTrackingManager">
|
<component name="TimeTrackingManager">
|
||||||
<option name="totallyTimeSpent" value="21133000" />
|
<option name="totallyTimeSpent" value="21133000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="0" y="23" width="1440" height="811" extended-state="6" />
|
<frame x="0" y="23" width="1440" height="811" extended-state="0" />
|
||||||
<editor active="true" />
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info id="Favorites" order="0" side_tool="true" />
|
<window_info id="Favorites" order="0" side_tool="true" />
|
||||||
<window_info content_ui="combo" id="Project" order="1" visible="true" weight="0.14449213" />
|
<window_info content_ui="combo" id="Project" order="1" visible="true" weight="0.14663805" />
|
||||||
<window_info id="Structure" order="2" side_tool="true" weight="0.25" />
|
<window_info id="Structure" order="2" side_tool="true" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Database Changes" order="0" show_stripe_button="false" />
|
<window_info anchor="bottom" id="Database Changes" order="0" show_stripe_button="false" />
|
||||||
<window_info anchor="bottom" id="Terminal" order="1" sideWeight="0.4985694" weight="0.32962447" />
|
<window_info anchor="bottom" id="Terminal" order="1" sideWeight="0.4985694" weight="0.32962447" />
|
||||||
<window_info anchor="bottom" id="Event Log" order="2" sideWeight="0.50429183" side_tool="true" visible="true" weight="0.2628651" />
|
<window_info anchor="bottom" id="Event Log" order="2" sideWeight="0.50500715" side_tool="true" visible="true" weight="0.2628651" />
|
||||||
<window_info anchor="bottom" id="Version Control" order="3" sideWeight="0.4985694" weight="0.32962447" />
|
<window_info anchor="bottom" id="Version Control" order="3" sideWeight="0.4985694" weight="0.32962447" />
|
||||||
<window_info anchor="bottom" id="Python Console" order="4" weight="0.3286517" />
|
<window_info anchor="bottom" id="Python Console" order="4" weight="0.3286517" />
|
||||||
<window_info anchor="bottom" id="Docker" order="5" show_stripe_button="false" />
|
<window_info anchor="bottom" id="Docker" order="5" show_stripe_button="false" />
|
||||||
<window_info anchor="bottom" id="Message" order="6" />
|
<window_info anchor="bottom" id="Message" order="6" />
|
||||||
<window_info anchor="bottom" id="Find" order="7" weight="0.329718" />
|
<window_info anchor="bottom" id="Find" order="7" weight="0.329718" />
|
||||||
<window_info active="true" anchor="bottom" id="Run" order="8" sideWeight="0.49570817" visible="true" weight="0.2628651" />
|
<window_info active="true" anchor="bottom" id="Run" order="8" sideWeight="0.49499285" visible="true" weight="0.2628651" />
|
||||||
<window_info anchor="bottom" id="Debug" order="9" sideWeight="0.49928468" weight="0.30737135" />
|
<window_info anchor="bottom" id="Debug" order="9" sideWeight="0.49928468" weight="0.30737135" />
|
||||||
<window_info anchor="bottom" id="Cvs" order="10" weight="0.25" />
|
<window_info anchor="bottom" id="Cvs" order="10" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Inspection" order="11" weight="0.4" />
|
<window_info anchor="bottom" id="Inspection" order="11" weight="0.4" />
|
||||||
@ -488,9 +535,36 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/keygen.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="120">
|
||||||
|
<caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#10#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/branchmanager.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="30">
|
||||||
|
<caret line="66" column="24" lean-forward="true" selection-start-line="66" selection-start-column="24" selection-end-line="66" selection-end-column="24" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="178:183" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="2638:3140" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3158:3361" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3378:3493" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="3519:3983" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="4005:4694" ph="..." />
|
||||||
|
<marker date="1552415132051" expanded="true" signature="5012:5663" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/window.py">
|
<entry file="file://$PROJECT_DIR$/window.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="54">
|
<state relative-caret-position="45">
|
||||||
<caret line="7" column="15" selection-start-line="7" selection-start-column="8" selection-end-line="7" selection-end-column="15" />
|
<caret line="7" column="15" selection-start-line="7" selection-start-column="8" selection-end-line="7" selection-end-column="15" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
@ -500,25 +574,25 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/ssh.py">
|
<entry file="file://$PROJECT_DIR$/ssh.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="199">
|
<state relative-caret-position="60">
|
||||||
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/change.py">
|
<entry file="file://$PROJECT_DIR$/info.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="161">
|
<state relative-caret-position="120">
|
||||||
<caret line="56" column="13" lean-forward="true" selection-start-line="56" selection-start-column="13" selection-end-line="56" selection-end-column="13" />
|
<caret line="8" column="27" lean-forward="true" selection-start-line="8" selection-start-column="27" selection-end-line="8" selection-end-column="27" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/info.py">
|
<entry file="file://$PROJECT_DIR$/change.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="105">
|
<state relative-caret-position="26">
|
||||||
<caret line="7" column="32" lean-forward="true" selection-start-line="7" selection-start-column="32" selection-end-line="7" selection-end-column="32" />
|
<caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -527,46 +601,33 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/sshtool.py">
|
<entry file="file://$PROJECT_DIR$/sshtool.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="301">
|
<state relative-caret-position="-331">
|
||||||
<caret line="46" column="40" lean-forward="true" selection-start-line="46" selection-start-column="40" selection-end-line="46" selection-end-column="40" />
|
<caret line="6" lean-forward="true" selection-start-line="6" selection-end-line="6" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
<marker date="1552382171651" expanded="true" signature="163:2035" ph="..." />
|
<marker date="1552409960112" expanded="true" signature="1144:1635" ph="..." />
|
||||||
<marker date="1552382171651" expanded="true" signature="1108:1599" ph="..." />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/git.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="170">
|
|
||||||
<caret line="157" column="47" lean-forward="true" selection-start-line="157" selection-start-column="47" selection-end-line="157" selection-end-column="47" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#9#0" expanded="true" />
|
|
||||||
<marker date="1552379614982" expanded="true" signature="3753:3944" ph="..." />
|
|
||||||
<marker date="1552379614982" expanded="true" signature="9429:10463" ph="..." />
|
|
||||||
<marker date="1552379614982" expanded="true" signature="12571:12747" ph="..." />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/keygen.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="120">
|
|
||||||
<caret line="27" column="27" lean-forward="true" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#10#0" expanded="true" />
|
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="302">
|
<state relative-caret-position="194">
|
||||||
<caret line="66" column="25" selection-start-line="66" selection-start-column="25" selection-end-line="66" selection-end-column="25" />
|
<caret line="274" column="33" selection-start-line="274" selection-start-column="33" selection-end-line="274" selection-end-column="33" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
<marker date="1552383034754" expanded="true" signature="14292:14619" ph="..." />
|
<marker date="1552452986156" expanded="true" signature="15540:15546" ph="..." />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/git.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="285">
|
||||||
|
<caret line="305" column="38" selection-start-line="305" selection-start-column="38" selection-end-line="305" selection-end-column="38" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#9#0" expanded="true" />
|
||||||
|
<marker date="1552453029448" expanded="true" signature="13269:13995" ph="..." />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
177
branchmanager.py
Normal file
177
branchmanager.py
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
from tkinter import *
|
||||||
|
from tkinter.ttk import *
|
||||||
|
from tkinter.messagebox import *
|
||||||
|
import os
|
||||||
|
from keygen import *
|
||||||
|
import window
|
||||||
|
from info import Info
|
||||||
|
|
||||||
|
|
||||||
|
class Branch(window.Window):
|
||||||
|
def __init__(self, master):
|
||||||
|
super().__init__(master)
|
||||||
|
master.title("Branch Manager")
|
||||||
|
super().set_height(350)
|
||||||
|
super().set_width(480)
|
||||||
|
super().set_position(350, 200)
|
||||||
|
super().apply()
|
||||||
|
|
||||||
|
self.master = master
|
||||||
|
self.text = Text(self)
|
||||||
|
self.list_btn = Button(self, width=12)
|
||||||
|
self.add_btn = Button(self, width=12)
|
||||||
|
self.checkout_btn = Button(self, width=12)
|
||||||
|
self.merge_btn = Button(self, width=12)
|
||||||
|
self.merge_list_btn = Button(self, width=12)
|
||||||
|
self.delete_btn = Button(self, width=12)
|
||||||
|
self.draw_widgets()
|
||||||
|
self.branches = []
|
||||||
|
self.current_branches = None
|
||||||
|
self.info = None
|
||||||
|
self.get_branches()
|
||||||
|
|
||||||
|
def draw_widgets(self):
|
||||||
|
self.text.grid(row=0,column=1,rowspan=8)
|
||||||
|
self.list_btn["text"] = "List"
|
||||||
|
self.checkout_btn["text"] = "Checkout"
|
||||||
|
self.merge_btn["text"] = "Merge"
|
||||||
|
self.merge_list_btn["text"] = "Merge List"
|
||||||
|
self.delete_btn["text"] = "Delete"
|
||||||
|
self.add_btn["text"] = "Add"
|
||||||
|
|
||||||
|
self.list_btn["command"] = self.do_list
|
||||||
|
self.add_btn["command"] = self.do_add
|
||||||
|
self.checkout_btn["command"] = self.do_checkout
|
||||||
|
self.merge_btn["command"] = self.do_merge
|
||||||
|
self.merge_list_btn["command"] = self.do_merge_list
|
||||||
|
self.delete_btn["command"] = self.do_delete
|
||||||
|
|
||||||
|
self.list_btn.grid(row=0,column=0)
|
||||||
|
self.add_btn.grid(row=1, column=0)
|
||||||
|
self.checkout_btn.grid(row=2,column=0)
|
||||||
|
self.merge_btn.grid(row=3, column=0)
|
||||||
|
self.merge_list_btn.grid(row=4, column=0)
|
||||||
|
self.delete_btn.grid(row=5, column=0)
|
||||||
|
self.text.insert(INSERT, "Branch Manager Interface\n")
|
||||||
|
self.text.insert(INSERT,"-----------------------------------\n")
|
||||||
|
|
||||||
|
def get_branches(self):
|
||||||
|
stdout = os.popen("git branch -v").read()
|
||||||
|
self.current_branches = None
|
||||||
|
self.branches = []
|
||||||
|
lines = []
|
||||||
|
str = ""
|
||||||
|
for char in stdout:
|
||||||
|
if char is '\n':
|
||||||
|
lines.append(str)
|
||||||
|
str = ""
|
||||||
|
else:
|
||||||
|
str += char
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
branch_info = re.split(r"[ ]+",line)
|
||||||
|
print(branch_info)
|
||||||
|
if len(branch_info) > 3:
|
||||||
|
if branch_info[0] is '*':
|
||||||
|
self.current_branches = branch_info[1]
|
||||||
|
self.branches.append(branch_info[1])
|
||||||
|
|
||||||
|
def do_merge_list(self):
|
||||||
|
stdout = os.popen("git branch --merged").read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "Merged Branches\n")
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "Unmerged Branches\n")
|
||||||
|
stdout = os.popen("git branch --no-merged").read()
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
self.text.see(END)
|
||||||
|
|
||||||
|
def do_list(self):
|
||||||
|
stdout = os.popen("git branch -v").read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, stdout+"\n")
|
||||||
|
self.text.see(END)
|
||||||
|
|
||||||
|
def do_add(self):
|
||||||
|
self.get_branches()
|
||||||
|
self.info = Info(Tk())
|
||||||
|
self.info.set_click(self.do_add_callback)
|
||||||
|
|
||||||
|
def do_add_callback(self):
|
||||||
|
stdout = os.popen("git branch {0}".format(self.info.information.get())).read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "New Branch {0}\n".format(self.info.information.get()))
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
self.text.see(END)
|
||||||
|
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
||||||
|
self.info.master.destroy()
|
||||||
|
self.info = None
|
||||||
|
|
||||||
|
def do_checkout(self):
|
||||||
|
self.get_branches()
|
||||||
|
self.info = Info(Tk(), "Combobox")
|
||||||
|
self.info.information["value"] = self.branches
|
||||||
|
self.info.set_click(self.do_checkout_callback)
|
||||||
|
|
||||||
|
def do_checkout_callback(self):
|
||||||
|
stdout = os.popen("git checkout {0}".format(self.info.information.get())).read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "Checkout Branch {0}\n".format(self.info.information.get()))
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
self.text.see(END)
|
||||||
|
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
||||||
|
self.info.master.destroy()
|
||||||
|
self.info = None
|
||||||
|
|
||||||
|
def do_merge(self):
|
||||||
|
self.get_branches()
|
||||||
|
self.info = Info(Tk(), "Combobox")
|
||||||
|
branches_tmp = self.branches
|
||||||
|
branches_tmp.remove(self.current_branches)
|
||||||
|
self.info.information["value"] = branches_tmp
|
||||||
|
self.info.set_click(self.do_merge_callback)
|
||||||
|
|
||||||
|
def do_merge_callback(self):
|
||||||
|
stdout = os.popen("git merge {0}".format(self.info.information.get())).read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "Merge Branch From {0} To {1}\n"
|
||||||
|
.format(self.current_branches,self.info.information.get()))
|
||||||
|
if len(stdout) > 4:
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
else:
|
||||||
|
self.text.insert(INSERT, "Merge Failed. Please check conflict.\n")
|
||||||
|
self.text.see(END)
|
||||||
|
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
||||||
|
self.info.master.destroy()
|
||||||
|
self.info = None
|
||||||
|
|
||||||
|
|
||||||
|
def do_delete(self):
|
||||||
|
self.get_branches()
|
||||||
|
self.info = Info(Tk(), "Combobox")
|
||||||
|
self.info.information["value"] = self.branches
|
||||||
|
self.info.set_click(self.do_delete_callback)
|
||||||
|
|
||||||
|
def do_delete_callback(self):
|
||||||
|
stdout = os.popen("git branch -d {0}".format(self.info.information.get())).read()
|
||||||
|
self.text.insert(INSERT, "-----------------------------------\n")
|
||||||
|
self.text.insert(INSERT, "Delete Branch {0}\n".format(self.info.information.get()))
|
||||||
|
if self.info.information.get() == self.current_branches:
|
||||||
|
self.text.insert(INSERT, "error: Cannot delete branch '{0}' checked out\n".format(self.current_branches))
|
||||||
|
else:
|
||||||
|
self.text.insert(INSERT, stdout + "\n")
|
||||||
|
self.text.see(END)
|
||||||
|
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
||||||
|
self.info.master.destroy()
|
||||||
|
self.info = None
|
||||||
|
|
||||||
|
def destroy_info(self):
|
||||||
|
self.info.master.eval('::ttk::CancelRepeat')
|
||||||
|
self.info.master.destroy()
|
||||||
|
self.info = None
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
bmgr = Branch(Tk())
|
||||||
|
bmgr.mainloop()
|
@ -12,6 +12,7 @@ class Changes(window.Window):
|
|||||||
super().set_position(50,50)
|
super().set_position(50,50)
|
||||||
super().set_width(870)
|
super().set_width(870)
|
||||||
super().apply()
|
super().apply()
|
||||||
|
master.title("Changes Manager")
|
||||||
self.list = Listbox(self, width=35, height=30)
|
self.list = Listbox(self, width=35, height=30)
|
||||||
self.text = Text(self, width=75, height=35)
|
self.text = Text(self, width=75, height=35)
|
||||||
self.sb = Scrollbar(self)
|
self.sb = Scrollbar(self)
|
||||||
|
62
git.py
62
git.py
@ -33,6 +33,8 @@ class Git(ssh.SSH):
|
|||||||
self.ssh_hostname = hostname
|
self.ssh_hostname = hostname
|
||||||
self.passwd = passwd
|
self.passwd = passwd
|
||||||
self.path = path
|
self.path = path
|
||||||
|
self.branches_server = []
|
||||||
|
self.current_branch_server = ""
|
||||||
|
|
||||||
def global_init(self, git_user, git_email):
|
def global_init(self, git_user, git_email):
|
||||||
self.git_user = git_user
|
self.git_user = git_user
|
||||||
@ -141,7 +143,7 @@ class Git(ssh.SSH):
|
|||||||
self.projects[project_name] = {"path": "{0}/{1}".format(self.base_path[1], project_name),
|
self.projects[project_name] = {"path": "{0}/{1}".format(self.base_path[1], project_name),
|
||||||
"branch": []}
|
"branch": []}
|
||||||
self.if_get_project = True
|
self.if_get_project = True
|
||||||
if self.if_fix_project:
|
if self.if_fix_project and self.if_fix_local:
|
||||||
self.get_branch()
|
self.get_branch()
|
||||||
else:
|
else:
|
||||||
raise ValueError("Base Path Abnormal")
|
raise ValueError("Base Path Abnormal")
|
||||||
@ -197,13 +199,11 @@ class Git(ssh.SSH):
|
|||||||
for remote in os.popen("git remote -v").readlines():
|
for remote in os.popen("git remote -v").readlines():
|
||||||
results = ret_code.split(remote)
|
results = ret_code.split(remote)
|
||||||
results = list(results)
|
results = list(results)
|
||||||
print(results)
|
|
||||||
if len(results) >= 1:
|
if len(results) >= 1:
|
||||||
self.remotes = {}
|
self.remotes = {}
|
||||||
for item in results:
|
for item in results:
|
||||||
if results[0] not in self.remotes.keys():
|
if results[0] not in self.remotes.keys():
|
||||||
self.remotes[results[0]] = {"name": results[0], "url": results[1]}
|
self.remotes[results[0]] = {"name": results[0], "url": results[1]}
|
||||||
print(self.remotes[results[0]])
|
|
||||||
self.if_get_remote = True
|
self.if_get_remote = True
|
||||||
else:
|
else:
|
||||||
raise AttributeError("Set Local & Fix Project & Base Init First.")
|
raise AttributeError("Set Local & Fix Project & Base Init First.")
|
||||||
@ -211,8 +211,12 @@ class Git(ssh.SSH):
|
|||||||
def push_remote(self, name, branch):
|
def push_remote(self, name, branch):
|
||||||
if self.if_fix_project and self.if_base_init and self.if_set_local \
|
if self.if_fix_project and self.if_base_init and self.if_set_local \
|
||||||
and self.if_get_remote:
|
and self.if_get_remote:
|
||||||
|
self.get_branch_server()
|
||||||
if name in self.remotes.keys():
|
if name in self.remotes.keys():
|
||||||
return os.popen("git push {0} {1}".format(name, branch)).read()
|
if branch not in self.branches_server:
|
||||||
|
return os.popen("git push -u {0} {1}".format(name, branch)).read()
|
||||||
|
else:
|
||||||
|
return os.popen("git push {0} {1}".format(name, branch)).read()
|
||||||
else:
|
else:
|
||||||
raise ValueError("Name Abnormal")
|
raise ValueError("Name Abnormal")
|
||||||
else:
|
else:
|
||||||
@ -221,8 +225,11 @@ class Git(ssh.SSH):
|
|||||||
def pull_remote(self, name, branch):
|
def pull_remote(self, name, branch):
|
||||||
if self.if_fix_project and self.if_base_init and self.if_set_local \
|
if self.if_fix_project and self.if_base_init and self.if_set_local \
|
||||||
and self.if_get_remote:
|
and self.if_get_remote:
|
||||||
|
self.get_branch_server()
|
||||||
if name in self.remotes.keys():
|
if name in self.remotes.keys():
|
||||||
return os.popen("git pull {0} {1}".format(name, branch)).read()
|
if branch in self.branches_server:
|
||||||
|
return os.popen("git pull {0} {1}".format(name, branch)).read()
|
||||||
|
else: return "Current Branch '{0}' Not Exist In Server.".format(branch)
|
||||||
else:
|
else:
|
||||||
raise ValueError("Remote Error")
|
raise ValueError("Remote Error")
|
||||||
else:
|
else:
|
||||||
@ -241,14 +248,10 @@ class Git(ssh.SSH):
|
|||||||
new_tmp_ret = new_ret_code.search(line)
|
new_tmp_ret = new_ret_code.search(line)
|
||||||
if modified_tmp_ret is not None:
|
if modified_tmp_ret is not None:
|
||||||
modified_file = modified_tmp_ret.group()
|
modified_file = modified_tmp_ret.group()
|
||||||
print(modified_file)
|
|
||||||
changed_files.append(modified_file)
|
changed_files.append(modified_file)
|
||||||
elif new_tmp_ret is not None:
|
elif new_tmp_ret is not None:
|
||||||
new_file = new_tmp_ret.group()
|
new_file = new_tmp_ret.group()
|
||||||
print(new_file)
|
|
||||||
changed_files.append(new_file)
|
changed_files.append(new_file)
|
||||||
|
|
||||||
|
|
||||||
return changed_files
|
return changed_files
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -288,17 +291,46 @@ class Git(ssh.SSH):
|
|||||||
if self.if_get_project and self.if_base_init and self.if_fix_local:
|
if self.if_get_project and self.if_base_init and self.if_fix_local:
|
||||||
stdout = os.popen("git branch").read()
|
stdout = os.popen("git branch").read()
|
||||||
self.projects[self.fix_name+".git"]["branch"] = []
|
self.projects[self.fix_name+".git"]["branch"] = []
|
||||||
reform = re.compile("\w+")
|
reform = re.compile("[ ]+")
|
||||||
for branch in stdout:
|
self.projects[self.fix_name + ".git"]["active_branch"] = ""
|
||||||
branch_name = reform.search("*master").group().strip('\n')
|
lines = []
|
||||||
self.projects[self.fix_name+".git"]["branch"].append(branch_name)
|
str = ""
|
||||||
|
for char in stdout:
|
||||||
|
if char is '\n':
|
||||||
|
lines.append(str)
|
||||||
|
str = ""
|
||||||
|
else:
|
||||||
|
str += char
|
||||||
|
|
||||||
if '*' in str(branch):
|
for branch in lines:
|
||||||
self.projects[self.fix_name+".git"]["active_branch"] = branch_name
|
print("Branch:",branch)
|
||||||
|
branch_name = reform.split(branch)
|
||||||
|
if branch_name[0] == '*':
|
||||||
|
self.projects[self.fix_name+".git"]["active_branch"] = branch_name[1]
|
||||||
|
self.projects[self.fix_name + ".git"]["branch"].append(branch_name[1])
|
||||||
|
else:
|
||||||
|
self.projects[self.fix_name + ".git"]["branch"].append(branch_name[1])
|
||||||
self.if_get_branches = True
|
self.if_get_branches = True
|
||||||
else:
|
else:
|
||||||
raise AttributeError("Get Project & Base Init & Fix Local First.")
|
raise AttributeError("Get Project & Base Init & Fix Local First.")
|
||||||
|
|
||||||
|
def get_branch_server(self):
|
||||||
|
if self.if_connected and self.if_get_project and self.if_fix_project:
|
||||||
|
self.branches_server = []
|
||||||
|
self.current_branch_server = ""
|
||||||
|
stdout, stderr = self.run(self.fix_cmd+"git branch -v")
|
||||||
|
ret_code = re.compile(r"[ ]+")
|
||||||
|
for branch in stdout:
|
||||||
|
branches_info = ret_code.split(branch)
|
||||||
|
if branches_info[0] == '*':
|
||||||
|
self.current_branch_server = branches_info[1]
|
||||||
|
self.branches_server.append(branches_info[1])
|
||||||
|
else:
|
||||||
|
self.branches_server.append(branches_info[1])
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise AttributeError("Get Project & Base Init & Fix Project First.")
|
||||||
|
|
||||||
def status(self):
|
def status(self):
|
||||||
if self.fix_name and self.if_fix_local and self.if_base_init:
|
if self.fix_name and self.if_fix_local and self.if_base_init:
|
||||||
stdout = os.popen("git status").read()
|
stdout = os.popen("git status").read()
|
||||||
|
4
info.py
4
info.py
@ -4,8 +4,9 @@ from tkinter.messagebox import *
|
|||||||
import window
|
import window
|
||||||
|
|
||||||
class Info(window.Window):
|
class Info(window.Window):
|
||||||
def __init__(self, master=None, type="Entry"):
|
def __init__(self, master=None, type="Entry", title = "INFO"):
|
||||||
super().__init__(master)
|
super().__init__(master)
|
||||||
|
master.title(title)
|
||||||
if type is "Combobox":
|
if type is "Combobox":
|
||||||
info_type = Combobox(self)
|
info_type = Combobox(self)
|
||||||
else:
|
else:
|
||||||
@ -14,6 +15,7 @@ class Info(window.Window):
|
|||||||
self.information = info_type
|
self.information = info_type
|
||||||
self.ok = Button(self)
|
self.ok = Button(self)
|
||||||
self.draw_widgets()
|
self.draw_widgets()
|
||||||
|
self.master = master
|
||||||
|
|
||||||
def draw_widgets(self):
|
def draw_widgets(self):
|
||||||
self.information_label["text"] = "Info: "
|
self.information_label["text"] = "Info: "
|
||||||
|
94
main.py
94
main.py
@ -8,11 +8,14 @@ import window
|
|||||||
from info import *
|
from info import *
|
||||||
from change import *
|
from change import *
|
||||||
from sshtool import *
|
from sshtool import *
|
||||||
|
from branchmanager import *
|
||||||
|
import paramiko
|
||||||
|
|
||||||
|
|
||||||
class Main(window.Window):
|
class Main(window.Window):
|
||||||
def __init__(self, master=None):
|
def __init__(self, master=None):
|
||||||
super().__init__(master)
|
super().__init__(master)
|
||||||
|
master.title("GitEasy")
|
||||||
self.style.configure("M.MButton",)
|
self.style.configure("M.MButton",)
|
||||||
self.connect = None
|
self.connect = None
|
||||||
self.hostname_label = Label(self, width=8)
|
self.hostname_label = Label(self, width=8)
|
||||||
@ -28,7 +31,7 @@ class Main(window.Window):
|
|||||||
self.broad = Text(self, width=85, height=30)
|
self.broad = Text(self, width=85, height=30)
|
||||||
self.fix_project_label = Label(self, width=15)
|
self.fix_project_label = Label(self, width=15)
|
||||||
self.local_path_label = Label(self, width=25)
|
self.local_path_label = Label(self, width=25)
|
||||||
self.get_branch = Button(self, width=12)
|
self.branches = Button(self, width=12)
|
||||||
self.set_local = Button(self, width=12)
|
self.set_local = Button(self, width=12)
|
||||||
self.add_remote = Button(self, width=12)
|
self.add_remote = Button(self, width=12)
|
||||||
self.list_remote = Button(self, width=12)
|
self.list_remote = Button(self, width=12)
|
||||||
@ -71,9 +74,13 @@ class Main(window.Window):
|
|||||||
self.git = git.Git(hostname=self.hostname.get(),
|
self.git = git.Git(hostname=self.hostname.get(),
|
||||||
user=self.user_name.get(), passwd=self.password.get(),
|
user=self.user_name.get(), passwd=self.password.get(),
|
||||||
path="/home/git/")
|
path="/home/git/")
|
||||||
finally:
|
except paramiko.ssh_exception.AuthenticationException:
|
||||||
self.connection_status["text"] = "Failed"
|
self.connection_status["text"] = "Failed"
|
||||||
|
showinfo(message="Authentication failed.")
|
||||||
|
return
|
||||||
|
|
||||||
self.connection_status["text"] = "Succeed"
|
self.connection_status["text"] = "Succeed"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.git.base_init()
|
self.git.base_init()
|
||||||
self.git.update_projects()
|
self.git.update_projects()
|
||||||
@ -85,11 +92,14 @@ class Main(window.Window):
|
|||||||
self.git.set_local(self.save_info["local_path"])
|
self.git.set_local(self.save_info["local_path"])
|
||||||
self.broad.insert(INSERT, "Set Local Path...OK" + "\n")
|
self.broad.insert(INSERT, "Set Local Path...OK" + "\n")
|
||||||
self.local_path_label["text"] = "Local Path:"+self.save_info["local_path"]
|
self.local_path_label["text"] = "Local Path:"+self.save_info["local_path"]
|
||||||
self.do_list()
|
|
||||||
|
self.git.update_projects()
|
||||||
|
self.git.list_projects()
|
||||||
if self.save_info["fix_project"]+".git" in self.git.projects_list:
|
if self.save_info["fix_project"]+".git" in self.git.projects_list:
|
||||||
self.git.fix_project(self.save_info["fix_project"])
|
|
||||||
self.broad.insert(INSERT, "--------------------------\n")
|
self.broad.insert(INSERT, "--------------------------\n")
|
||||||
self.broad.insert(INSERT, "Auto Fix Project {0}\n".format(self.save_info["fix_project"]+".git"))
|
self.broad.insert(INSERT, "Auto Fix Project ({0})\n".format(self.save_info["fix_project"] + ".git"))
|
||||||
|
self.git.fix_project(self.save_info["fix_project"])
|
||||||
|
self.fix_local_plus()
|
||||||
self.broad.see(END)
|
self.broad.see(END)
|
||||||
self.fix_project_label["text"] = "Fixed Project: {0}".format(self.save_info["fix_project"])
|
self.fix_project_label["text"] = "Fixed Project: {0}".format(self.save_info["fix_project"])
|
||||||
|
|
||||||
@ -161,34 +171,34 @@ class Main(window.Window):
|
|||||||
showinfo(message=errinfo)
|
showinfo(message=errinfo)
|
||||||
return
|
return
|
||||||
self.fix_project_label["text"] = "Fixed Project: {0}".format(self.info.information.get())
|
self.fix_project_label["text"] = "Fixed Project: {0}".format(self.info.information.get())
|
||||||
try:
|
self.fix_local_plus()
|
||||||
|
|
||||||
if os.path.exists(os.path.join(self.git.local_path, self.git.fix_name)) and self.git.if_set_local:
|
|
||||||
self.broad.insert(INSERT, "Check Local Project...OK \n")
|
|
||||||
else:
|
|
||||||
self.do_clone_project()
|
|
||||||
self.broad.insert(INSERT, "Set Local Project...OK \n")
|
|
||||||
|
|
||||||
self.do_fix_project_local()
|
|
||||||
self.broad.insert(INSERT, "Fix Local Project...OK \n")
|
|
||||||
self.git.get_remote()
|
|
||||||
if "origin" not in self.git.remotes.keys():
|
|
||||||
self.git.add_remote("origin")
|
|
||||||
self.broad.insert(INSERT, "Get Local Project's Remote...OK \n")
|
|
||||||
|
|
||||||
self.git.fetch_remote("origin")
|
|
||||||
self.broad.insert(INSERT, "Fetch Server Project...OK \n")
|
|
||||||
|
|
||||||
self.git.get_branch()
|
|
||||||
self.broad.insert(INSERT, "Get Local Project's Branches...OK \n")
|
|
||||||
|
|
||||||
self.broad.see(END)
|
|
||||||
except AttributeError as errinfo:
|
|
||||||
showinfo(message=errinfo)
|
|
||||||
return
|
|
||||||
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
self.info.master.protocol("WM_DELETE_WINDOW", self.destroy_info)
|
||||||
self.info.master.destroy()
|
self.info.master.destroy()
|
||||||
|
|
||||||
|
def fix_local_plus(self):
|
||||||
|
try:
|
||||||
|
if os.path.exists(os.path.join(self.git.local_path, self.git.fix_name)) and self.git.if_set_local:
|
||||||
|
self.broad.insert(INSERT, "Check Local Project...OK \n")
|
||||||
|
else:
|
||||||
|
self.do_clone_project()
|
||||||
|
self.broad.insert(INSERT, "Set Local Project...OK \n")
|
||||||
|
|
||||||
|
self.do_fix_project_local()
|
||||||
|
self.broad.insert(INSERT, "Fix Local Project...OK \n")
|
||||||
|
self.git.get_remote()
|
||||||
|
if "origin" not in self.git.remotes.keys():
|
||||||
|
self.git.add_remote("origin")
|
||||||
|
self.broad.insert(INSERT, "Get Local Project's Remote...OK \n")
|
||||||
|
|
||||||
|
self.git.fetch_remote("origin")
|
||||||
|
self.broad.insert(INSERT, "Fetch Server Project...OK \n")
|
||||||
|
self.git.get_branch()
|
||||||
|
self.broad.insert(INSERT, "Get Local Project's Branches...OK \n")
|
||||||
|
self.broad.see(END)
|
||||||
|
except AttributeError as errinfo:
|
||||||
|
showinfo(message=errinfo)
|
||||||
|
return
|
||||||
|
|
||||||
def do_get_branch(self):
|
def do_get_branch(self):
|
||||||
try:
|
try:
|
||||||
self.git.get_branch()
|
self.git.get_branch()
|
||||||
@ -262,8 +272,10 @@ class Main(window.Window):
|
|||||||
|
|
||||||
def do_pull(self):
|
def do_pull(self):
|
||||||
try:
|
try:
|
||||||
stdout = self.git.pull_remote("origin", "master")
|
self.git.get_branch()
|
||||||
|
stdout = self.git.pull_remote("origin", self.git.projects[self.git.fix_name+".git"]["active_branch"])
|
||||||
self.broad.insert(INSERT, "--------------------------\n")
|
self.broad.insert(INSERT, "--------------------------\n")
|
||||||
|
self.broad.insert(INSERT, "Pull Action\n")
|
||||||
self.broad.insert(INSERT, "{0}\n".format(stdout))
|
self.broad.insert(INSERT, "{0}\n".format(stdout))
|
||||||
self.broad.see(END)
|
self.broad.see(END)
|
||||||
except AttributeError as errinfo:
|
except AttributeError as errinfo:
|
||||||
@ -272,8 +284,11 @@ class Main(window.Window):
|
|||||||
|
|
||||||
def do_push(self):
|
def do_push(self):
|
||||||
try:
|
try:
|
||||||
stdout = self.git.push_remote("origin", "master")
|
self.git.get_branch()
|
||||||
|
print("Active Branch:",self.git.projects[self.git.fix_name+".git"]["active_branch"])
|
||||||
|
stdout = self.git.push_remote("origin", self.git.projects[self.git.fix_name+".git"]["active_branch"])
|
||||||
self.broad.insert(INSERT, "--------------------------\n")
|
self.broad.insert(INSERT, "--------------------------\n")
|
||||||
|
self.broad.insert(INSERT, "Push Action\n")
|
||||||
self.broad.insert(INSERT, "{0}\n".format(stdout))
|
self.broad.insert(INSERT, "{0}\n".format(stdout))
|
||||||
self.broad.see(END)
|
self.broad.see(END)
|
||||||
except AttributeError as errinfo:
|
except AttributeError as errinfo:
|
||||||
@ -313,6 +328,7 @@ class Main(window.Window):
|
|||||||
self.broad.insert(INSERT, "--------------------------\n")
|
self.broad.insert(INSERT, "--------------------------\n")
|
||||||
self.broad.insert(INSERT, "Data Information Saved\n")
|
self.broad.insert(INSERT, "Data Information Saved\n")
|
||||||
self.broad.insert(INSERT, "Path: "+os.path.join(os.environ['HOME'],"save_data.json"))
|
self.broad.insert(INSERT, "Path: "+os.path.join(os.environ['HOME'],"save_data.json"))
|
||||||
|
self.broad.see(END)
|
||||||
else:
|
else:
|
||||||
raise AttributeError("Please Connect And Set Local Path First.")
|
raise AttributeError("Please Connect And Set Local Path First.")
|
||||||
except AttributeError as errinfo:
|
except AttributeError as errinfo:
|
||||||
@ -350,6 +366,12 @@ class Main(window.Window):
|
|||||||
else:
|
else:
|
||||||
showinfo(message="Connect First")
|
showinfo(message="Connect First")
|
||||||
|
|
||||||
|
def start_branch_manager(self):
|
||||||
|
if self.git is not None and self.git.if_fix_local:
|
||||||
|
self.branch_interface = Branch(master=Tk())
|
||||||
|
else:
|
||||||
|
showinfo(message="Connect and Fix Local Project First")
|
||||||
|
|
||||||
def draw_widget(self):
|
def draw_widget(self):
|
||||||
self.hostname_label["text"] = "Hostname: "
|
self.hostname_label["text"] = "Hostname: "
|
||||||
self.hostname_label.grid(row=0, column=0, sticky=W)
|
self.hostname_label.grid(row=0, column=0, sticky=W)
|
||||||
@ -384,9 +406,9 @@ class Main(window.Window):
|
|||||||
self.local_path_label["text"] = "Local Path: None"
|
self.local_path_label["text"] = "Local Path: None"
|
||||||
self.local_path_label.grid(row=9, column=0, columnspan=2, sticky=W)
|
self.local_path_label.grid(row=9, column=0, columnspan=2, sticky=W)
|
||||||
|
|
||||||
# self.get_branch["text"] = "Get Branch"
|
self.branches["text"] = "Branches"
|
||||||
# self.get_branch["command"] = self.do_get_branch
|
self.branches["command"] = self.start_branch_manager
|
||||||
# self.get_branch.grid(row=3,column=0)
|
self.branches.grid(row=2,column=1)
|
||||||
|
|
||||||
self.set_local["text"] = "Set Local Path"
|
self.set_local["text"] = "Set Local Path"
|
||||||
self.set_local["command"] = self.do_set_local
|
self.set_local["command"] = self.do_set_local
|
||||||
@ -439,6 +461,6 @@ if __name__ == "__main__":
|
|||||||
root = Tk()
|
root = Tk()
|
||||||
main = Main(root)
|
main = Main(root)
|
||||||
main.set_width(930)
|
main.set_width(930)
|
||||||
main.set_height(530)
|
main.set_height(560)
|
||||||
main.apply()
|
main.apply()
|
||||||
main.mainloop()
|
main.mainloop()
|
@ -9,6 +9,7 @@ import window
|
|||||||
class SSH_Tools(window.Window,Key):
|
class SSH_Tools(window.Window,Key):
|
||||||
def __init__(self, hostname, user, passwd, path, master=None, broad=None):
|
def __init__(self, hostname, user, passwd, path, master=None, broad=None):
|
||||||
window.Window.__init__(self,master)
|
window.Window.__init__(self,master)
|
||||||
|
master.title("SSH Manager")
|
||||||
Key.__init__(self,hostname=hostname, user=user, password=passwd, path=path)
|
Key.__init__(self,hostname=hostname, user=user, password=passwd, path=path)
|
||||||
self.broad = broad
|
self.broad = broad
|
||||||
self.hostname = hostname
|
self.hostname = hostname
|
||||||
|
Loading…
Reference in New Issue
Block a user